From 3a310c2ee3d60c23265f7d803a64da2725524798 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20H=C3=BCgel?= Date: Tue, 29 Sep 2026 12:15:34 +0200 Subject: [PATCH 01/25] WIP --- .../Messages/MessagesController.cs | 68 - Applications/ConsumerApi/src/Program.cs | 10 +- .../ConsumerApi/src/packages.lock.json | 14 +- .../Features/Messages/GET.feature | 7 + .../MessagesStepDefinitions.cs | 7 + .../packages.lock.json | 14 +- .../src/DatabaseMigrator/Dockerfile | 2 +- .../src/DatabaseMigrator/packages.lock.json | 10 +- .../DatabaseMigrator.Tests/packages.lock.json | 10 +- .../src/EventHandlerService/Dockerfile | 2 +- .../src/EventHandlerService/Program.cs | 4 +- .../EventHandlerService/packages.lock.json | 14 +- .../packages.lock.json | 14 +- .../Housekeeper/src/Housekeeper/Dockerfile | 2 +- .../src/Housekeeper/packages.lock.json | 10 +- .../src/Job.IdentityDeletion/Dockerfile | 2 +- .../Job.IdentityDeletion.csproj | 2 +- .../src/Job.IdentityDeletion/Program.cs | 4 +- .../ServicesExtensions.cs | 2 +- .../Job.IdentityDeletion/packages.lock.json | 14 +- .../packages.lock.json | 15 +- .../packages.lock.json | 15 +- .../Backbone.Tests.ArchUnit.csproj | 5 +- Backbone.Tests.ArchUnit/CQRS.cs | 4 +- .../MessagesCleanArchitecture.cs | 59 + Backbone.Tests.ArchUnit/packages.lock.json | 37 +- Backbone.slnx | 4 +- .../HttpExceptionResponseFactory.cs | 68 + .../EndpointRouteBuilderExtensions.cs | 35 + .../MinimalApi/EnvelopeHttpResults.cs | 26 + .../MinimalApiExceptionMiddleware.cs | 22 + .../ExceptionFilters/CustomExceptionFilter.cs | 207 +-- .../Messages.Abstractions.csproj} | 9 +- .../Persistence}/IMessagesRepository.cs | 6 +- .../Persistence}/IRelationshipsRepository.cs | 2 +- .../packages.lock.json | 16 - .../MessageOrphanedDomainEventHandler.cs | 22 - ...tionshipStatusChangedDomainEventHandler.cs | 50 - .../Extensions/IEventBusExtensions.cs | 29 - .../IServiceCollectionExtensions.cs | 45 - ...RecipientInformationIReadOnlyExtensions.cs | 12 - .../Identities/IdentityDeleter.cs | 14 - .../Commands/SendMessage/Validator.cs | 60 - .../Messages/DTOs/AttachmentDTO.cs | 13 - .../Messages/DTOs/RecipientInformationDTO.cs | 19 - .../Messages/Queries/GetMessage/Validator.cs | 13 - .../Messages/Queries/ListMessages/Handler.cs | 41 - .../ListMessages/ListMessagesResponse.cs | 15 - .../packages.lock.json | 26 +- .../packages.lock.json | 26 +- .../Messages.Infrastructure.csproj | 2 +- .../Database/Repository/MessagesRepository.cs | 2 +- .../Repository/RelationshipsRepository.cs | 2 +- .../IServiceCollectionExtensions.cs | 2 +- .../packages.lock.json | 24 +- .../ApplicationConfiguration.cs | 2 +- .../ApplicationErrors.cs | 6 +- .../ApplicationServiceCollectionExtensions.cs | 33 + .../DomainEvents/MessageOrphaned/Handler.cs | 14 + .../RelationshipStatusChanged/Handler.cs | 46 + .../DeleteIdentity/IdentityDeleter.cs | 12 + .../Features/Messages/GetMessage/Endpoint.cs | 31 + .../Features/Messages}/GetMessage/Handler.cs | 18 +- .../Features/Messages/GetMessage/Query.cs} | 4 +- .../Features/Messages/GetMessage/Validator.cs | 13 + .../Messages/ListMessages/Endpoint.cs | 36 + .../Features/Messages/ListMessages/Handler.cs | 34 + .../Features/Messages/ListMessages/Query.cs} | 2 +- .../Messages/ListMessages/Response.cs | 15 + .../Messages}/ListMessages/Validator.cs | 5 +- .../Messages/MessagesEndpointExtensions.cs | 22 + .../Features/Messages/SendMessage/Command.cs} | 2 +- .../Features/Messages/SendMessage/Endpoint.cs | 28 + .../Features/Messages}/SendMessage/Handler.cs | 42 +- .../Messages/SendMessage/Response.cs} | 2 +- .../Messages/SendMessage/Validator.cs | 45 + .../Features/Messages/Shared/AttachmentDTO.cs | 8 + .../Features/Messages/Shared}/MessageDTO.cs | 14 +- .../Shared/RecipientInformationDTO.cs | 11 + .../Shared/RecipientInformationExtensions.cs | 12 + .../Messages.Module/Messages.Module.csproj | 4 +- .../MessagesEventBusExtensions.cs | 17 + .../src/Messages.Module/MessagesModule.cs | 2 - .../src/Messages.Module/packages.lock.json | 30 +- .../Messages.Module.Tests.csproj} | 2 +- .../TestHelpers/TestData.cs | 16 +- .../Tests/Messages/Shared}/MessageDTOTests.cs | 19 +- .../packages.lock.json | 1156 +++++++++++++++-- .../packages.lock.json | 10 +- 89 files changed, 1847 insertions(+), 1025 deletions(-) delete mode 100644 Applications/ConsumerApi/src/Controllers/Messages/MessagesController.cs create mode 100644 Backbone.Tests.ArchUnit/MessagesCleanArchitecture.cs create mode 100644 BuildingBlocks/src/BuildingBlocks.API/HttpExceptionResponseFactory.cs create mode 100644 BuildingBlocks/src/BuildingBlocks.API/MinimalApi/EndpointRouteBuilderExtensions.cs create mode 100644 BuildingBlocks/src/BuildingBlocks.API/MinimalApi/EnvelopeHttpResults.cs create mode 100644 BuildingBlocks/src/BuildingBlocks.API/MinimalApi/MinimalApiExceptionMiddleware.cs rename Modules/Messages/src/{Messages.Application/Messages.Application.csproj => Messages.Abstractions/Messages.Abstractions.csproj} (57%) rename Modules/Messages/src/{Messages.Application/Infrastructure/Persistence/Repository => Messages.Abstractions/Persistence}/IMessagesRepository.cs (90%) rename Modules/Messages/src/{Messages.Application/Infrastructure/Persistence/Repository => Messages.Abstractions/Persistence}/IRelationshipsRepository.cs (76%) rename Modules/Messages/src/{Messages.Application => Messages.Abstractions}/packages.lock.json (98%) delete mode 100644 Modules/Messages/src/Messages.Application/DomainEvents/Incoming/MessageOrphaned/MessageOrphanedDomainEventHandler.cs delete mode 100644 Modules/Messages/src/Messages.Application/DomainEvents/Incoming/RelationshipStatusChanged/RelationshipStatusChangedDomainEventHandler.cs delete mode 100644 Modules/Messages/src/Messages.Application/Extensions/IEventBusExtensions.cs delete mode 100644 Modules/Messages/src/Messages.Application/Extensions/IServiceCollectionExtensions.cs delete mode 100644 Modules/Messages/src/Messages.Application/Extensions/RecipientInformationIReadOnlyExtensions.cs delete mode 100644 Modules/Messages/src/Messages.Application/Identities/IdentityDeleter.cs delete mode 100644 Modules/Messages/src/Messages.Application/Messages/Commands/SendMessage/Validator.cs delete mode 100644 Modules/Messages/src/Messages.Application/Messages/DTOs/AttachmentDTO.cs delete mode 100644 Modules/Messages/src/Messages.Application/Messages/DTOs/RecipientInformationDTO.cs delete mode 100644 Modules/Messages/src/Messages.Application/Messages/Queries/GetMessage/Validator.cs delete mode 100644 Modules/Messages/src/Messages.Application/Messages/Queries/ListMessages/Handler.cs delete mode 100644 Modules/Messages/src/Messages.Application/Messages/Queries/ListMessages/ListMessagesResponse.cs rename Modules/Messages/src/{Messages.Application => Messages.Module}/ApplicationConfiguration.cs (91%) rename Modules/Messages/src/{Messages.Application => Messages.Module}/ApplicationErrors.cs (70%) create mode 100644 Modules/Messages/src/Messages.Module/ApplicationServiceCollectionExtensions.cs create mode 100644 Modules/Messages/src/Messages.Module/Features/DomainEvents/MessageOrphaned/Handler.cs create mode 100644 Modules/Messages/src/Messages.Module/Features/DomainEvents/RelationshipStatusChanged/Handler.cs create mode 100644 Modules/Messages/src/Messages.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs create mode 100644 Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Endpoint.cs rename Modules/Messages/src/{Messages.Application/Messages/Queries => Messages.Module/Features/Messages}/GetMessage/Handler.cs (64%) rename Modules/Messages/src/{Messages.Application/Messages/Queries/GetMessage/GetMessageQuery.cs => Messages.Module/Features/Messages/GetMessage/Query.cs} (54%) create mode 100644 Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Validator.cs create mode 100644 Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Endpoint.cs create mode 100644 Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Handler.cs rename Modules/Messages/src/{Messages.Application/Messages/Queries/ListMessages/ListMessagesQuery.cs => Messages.Module/Features/Messages/ListMessages/Query.cs} (77%) create mode 100644 Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Response.cs rename Modules/Messages/src/{Messages.Application/Messages/Queries => Messages.Module/Features/Messages}/ListMessages/Validator.cs (53%) create mode 100644 Modules/Messages/src/Messages.Module/Features/Messages/MessagesEndpointExtensions.cs rename Modules/Messages/src/{Messages.Application/Messages/Commands/SendMessage/SendMessageCommand.cs => Messages.Module/Features/Messages/SendMessage/Command.cs} (90%) create mode 100644 Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Endpoint.cs rename Modules/Messages/src/{Messages.Application/Messages/Commands => Messages.Module/Features/Messages}/SendMessage/Handler.cs (60%) rename Modules/Messages/src/{Messages.Application/Messages/Commands/SendMessage/SendMessageResponse.cs => Messages.Module/Features/Messages/SendMessage/Response.cs} (78%) create mode 100644 Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Validator.cs create mode 100644 Modules/Messages/src/Messages.Module/Features/Messages/Shared/AttachmentDTO.cs rename Modules/Messages/src/{Messages.Application/Messages/DTOs => Messages.Module/Features/Messages/Shared}/MessageDTO.cs (70%) create mode 100644 Modules/Messages/src/Messages.Module/Features/Messages/Shared/RecipientInformationDTO.cs create mode 100644 Modules/Messages/src/Messages.Module/Features/Messages/Shared/RecipientInformationExtensions.cs create mode 100644 Modules/Messages/src/Messages.Module/MessagesEventBusExtensions.cs rename Modules/Messages/test/{Messages.Application.Tests/Messages.Application.Tests.csproj => Messages.Module.Tests/Messages.Module.Tests.csproj} (87%) rename Modules/Messages/test/{Messages.Application.Tests => Messages.Module.Tests}/TestHelpers/TestData.cs (51%) rename Modules/Messages/test/{Messages.Application.Tests/Tests/Messages/DTOs => Messages.Module.Tests/Tests/Messages/Shared}/MessageDTOTests.cs (80%) rename Modules/Messages/test/{Messages.Application.Tests => Messages.Module.Tests}/packages.lock.json (58%) diff --git a/Applications/ConsumerApi/src/Controllers/Messages/MessagesController.cs b/Applications/ConsumerApi/src/Controllers/Messages/MessagesController.cs deleted file mode 100644 index bfdf10d389..0000000000 --- a/Applications/ConsumerApi/src/Controllers/Messages/MessagesController.cs +++ /dev/null @@ -1,68 +0,0 @@ -using Backbone.BuildingBlocks.API; -using Backbone.BuildingBlocks.API.Mvc; -using Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; -using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.ConsumerApi.Versions; -using Backbone.Modules.Messages.Application; -using Backbone.Modules.Messages.Application.Messages.Commands.SendMessage; -using Backbone.Modules.Messages.Application.Messages.DTOs; -using Backbone.Modules.Messages.Application.Messages.Queries.GetMessage; -using Backbone.Modules.Messages.Application.Messages.Queries.ListMessages; -using MediatR; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Options; -using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; - -namespace Backbone.ConsumerApi.Controllers.Messages; - -[V2] -[Route("api/v{v:apiVersion}/[controller]")] -[Authorize("OpenIddict.Validation.AspNetCore")] -public class MessagesController : ApiControllerBase -{ - private readonly ApplicationConfiguration _configuration; - - public MessagesController(IMediator mediator, IOptions options) : base(mediator) - { - _configuration = options.Value; - } - - [HttpGet] - [ProducesResponseType(typeof(PagedHttpResponseEnvelope), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - public async Task ListMessages([FromQuery] PaginationFilter paginationFilter, - [FromQuery] IEnumerable ids, CancellationToken cancellationToken) - { - var command = new ListMessagesQuery { PaginationFilter = paginationFilter, Ids = ids }; - - command.PaginationFilter.PageSize ??= _configuration.Pagination.DefaultPageSize; - - if (command.PaginationFilter.PageSize > _configuration.Pagination.MaxPageSize) - throw new ApplicationException( - GenericApplicationErrors.Validation.InvalidPageSize(_configuration.Pagination.MaxPageSize)); - - var messages = await _mediator.Send(command, cancellationToken); - return Paged(messages); - } - - [HttpGet("{id}")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status404NotFound)] - public async Task GetMessage(string id, [FromQuery] bool? noBody, CancellationToken cancellationToken) - { - var response = await _mediator.Send(new GetMessageQuery { Id = id, NoBody = noBody == true }, cancellationToken); - return Ok(response); - } - - [HttpPost] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status201Created)] - [ProducesError(StatusCodes.Status400BadRequest)] - public async Task SendMessage(SendMessageCommand request, CancellationToken cancellationToken) - { - var response = await _mediator.Send(request, cancellationToken); - return CreatedAtAction(nameof(GetMessage), new { id = response.Id }, response); - } -} diff --git a/Applications/ConsumerApi/src/Program.cs b/Applications/ConsumerApi/src/Program.cs index 922b39df7c..95dad451f9 100644 --- a/Applications/ConsumerApi/src/Program.cs +++ b/Applications/ConsumerApi/src/Program.cs @@ -1,5 +1,7 @@ using Autofac.Extensions.DependencyInjection; +using Backbone.BuildingBlocks.API; using Backbone.BuildingBlocks.API.Extensions; +using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API.Mvc.Middleware; using Backbone.BuildingBlocks.API.Serilog; using Backbone.BuildingBlocks.Application.QuotaCheck; @@ -19,6 +21,7 @@ using Backbone.Modules.Files.Module; using Backbone.Modules.Messages.Infrastructure.Persistence.Database; using Backbone.Modules.Messages.Module; +using Backbone.Modules.Messages.Module.Features.Messages; using Backbone.Modules.Quotas.Infrastructure.Persistence.Database; using Backbone.Modules.Quotas.Module; using Backbone.Modules.Relationships.Infrastructure.Persistence.Database; @@ -124,6 +127,7 @@ static void ConfigureServices(IServiceCollection services, IConfiguration config services.ConfigureAndValidate(configuration.Bind); services.AddSingleton(); + services.AddSingleton(); services.AddSaveChangesTimeInterceptor(); @@ -135,14 +139,14 @@ static void ConfigureServices(IServiceCollection services, IConfiguration config .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) - .AddModule(configuration) + .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) - .AddModule(configuration); + .AddModule(configuration); #pragma warning disable ASP0000 // We retrieve the BackboneConfiguration via IOptions here so that it is validated var parsedBackboneConfiguration = services.BuildServiceProvider().GetRequiredService>().Value; @@ -209,7 +213,9 @@ static void Configure(WebApplication app, ConsumerApiConfiguration configuration app.UseAuthentication().UseAuthorization(); app.UseMiddleware(); + app.UseMiddleware(); + app.MapMessagesEndpoints(); app.MapControllers(); app.MapHealthChecks("/health", new HealthCheckOptions { diff --git a/Applications/ConsumerApi/src/packages.lock.json b/Applications/ConsumerApi/src/packages.lock.json index 5eca2668f5..fc0055716e 100644 --- a/Applications/ConsumerApi/src/packages.lock.json +++ b/Applications/ConsumerApi/src/packages.lock.json @@ -1299,15 +1299,13 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Messages.Application": { + "Backbone.Modules.Messages.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Domain": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.DevelopmentKit.Identity": "[1.0.0, )", + "Backbone.Modules.Messages.Domain": "[1.0.0, )" } }, "Backbone.Modules.Messages.Contracts": { @@ -1329,7 +1327,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Messages.Application": "[1.0.0, )", + "Backbone.Modules.Messages.Abstractions": "[1.0.0, )", "Backbone.Modules.Messages.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1353,11 +1351,13 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Messages.Application": "[1.0.0, )", + "Backbone.Modules.Messages.Abstractions": "[1.0.0, )", "Backbone.Modules.Messages.Domain": "[1.0.0, )", "Backbone.Modules.Messages.Infrastructure": "[1.0.0, )", "Backbone.Modules.Messages.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Messages.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/Features/Messages/GET.feature b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/Features/Messages/GET.feature index edb087979f..821884cffb 100644 --- a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/Features/Messages/GET.feature +++ b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/Features/Messages/GET.feature @@ -3,6 +3,13 @@ Feature: GET /Messages Identity gets all its Messages + Scenario: Getting a Message by id + Given Identities i1 and i2 + And an active Relationship r12 between i1 and i2 + And i1 has sent a Message m to i2 + When i2 sends a GET request to the /Message/{m.id} endpoint + Then the response status code is 200 (Ok) + Scenario: Getting all Messages Given Identities i1 and i2 And an active Relationship r12 between i1 and i2 diff --git a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/StepDefinitions/MessagesStepDefinitions.cs b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/StepDefinitions/MessagesStepDefinitions.cs index 08b3d938e7..f44791d3cc 100644 --- a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/StepDefinitions/MessagesStepDefinitions.cs +++ b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/StepDefinitions/MessagesStepDefinitions.cs @@ -53,6 +53,13 @@ public async Task WhenIdentitySendsAGetRequestToTheMessagesEndpoint(string sende _responseContext.WhenResponse = _getMessagesResponse = await sender.Messages.ListMessages(); } + [When($@"{RegexFor.SINGLE_THING} sends a GET request to the /Message/\{{{RegexFor.SINGLE_THING}\.id\}} endpoint")] + public async Task WhenIdentitySendsAGetRequestToTheMessageEndpoint(string identityName, string messageName) + { + var identity = _clientPool.FirstForIdentityName(identityName); + _responseContext.WhenResponse = await identity.Messages.GetMessage(_messagesContext.Messages[messageName].Id); + } + [When($"{RegexFor.SINGLE_THING} sends a POST request to the /Messages endpoint with {RegexFor.SINGLE_THING} as recipient")] public async Task WhenIdentitySendsAPostRequestToTheMessagesEndpoint(string senderIdentityName, string recipientIdentityName) { diff --git a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/packages.lock.json b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/packages.lock.json index 0d4f554a4f..848561834d 100644 --- a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/packages.lock.json +++ b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/packages.lock.json @@ -1927,15 +1927,13 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Messages.Application": { + "Backbone.Modules.Messages.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Domain": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.DevelopmentKit.Identity": "[1.0.0, )", + "Backbone.Modules.Messages.Domain": "[1.0.0, )" } }, "Backbone.Modules.Messages.Contracts": { @@ -1957,7 +1955,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Messages.Application": "[1.0.0, )", + "Backbone.Modules.Messages.Abstractions": "[1.0.0, )", "Backbone.Modules.Messages.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1981,11 +1979,13 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Messages.Application": "[1.0.0, )", + "Backbone.Modules.Messages.Abstractions": "[1.0.0, )", "Backbone.Modules.Messages.Domain": "[1.0.0, )", "Backbone.Modules.Messages.Infrastructure": "[1.0.0, )", "Backbone.Modules.Messages.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Messages.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/DatabaseMigrator/src/DatabaseMigrator/Dockerfile b/Applications/DatabaseMigrator/src/DatabaseMigrator/Dockerfile index 6a24617e45..2546196eed 100644 --- a/Applications/DatabaseMigrator/src/DatabaseMigrator/Dockerfile +++ b/Applications/DatabaseMigrator/src/DatabaseMigrator/Dockerfile @@ -62,7 +62,7 @@ COPY ["Modules/Files/src/Files.Infrastructure.Database.SqlServer/Files.Infrastru COPY ["Modules/Files/src/Files.Infrastructure.Database.Postgres/Files.Infrastructure.Database.Postgres.csproj", "Modules/Files/src/Files.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Files/src/Files.Infrastructure.Database.Postgres/"] COPY ["Modules/Messages/src/Messages.Infrastructure/Messages.Infrastructure.csproj", "Modules/Messages/src/Messages.Infrastructure/packages.lock.json*", "Modules/Messages/src/Messages.Infrastructure/"] -COPY ["Modules/Messages/src/Messages.Application/Messages.Application.csproj", "Modules/Messages/src/Messages.Application/packages.lock.json*", "Modules/Messages/src/Messages.Application/"] +COPY ["Modules/Messages/src/Messages.Abstractions/Messages.Abstractions.csproj", "Modules/Messages/src/Messages.Abstractions/packages.lock.json*", "Modules/Messages/src/Messages.Abstractions/"] COPY ["Modules/Messages/src/Messages.Domain/Messages.Domain.csproj", "Modules/Messages/src/Messages.Domain/packages.lock.json*", "Modules/Messages/src/Messages.Domain/"] COPY ["Modules/Messages/src/Messages.Infrastructure.Database.SqlServer/Messages.Infrastructure.Database.SqlServer.csproj", "Modules/Messages/src/Messages.Infrastructure.Database.SqlServer/packages.lock.json*", "Modules/Messages/src/Messages.Infrastructure.Database.SqlServer/"] COPY ["Modules/Messages/src/Messages.Infrastructure.Database.Postgres/Messages.Infrastructure.Database.Postgres.csproj", "Modules/Messages/src/Messages.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Messages/src/Messages.Infrastructure.Database.Postgres/"] diff --git a/Applications/DatabaseMigrator/src/DatabaseMigrator/packages.lock.json b/Applications/DatabaseMigrator/src/DatabaseMigrator/packages.lock.json index d7310f0447..3dafe81f9c 100644 --- a/Applications/DatabaseMigrator/src/DatabaseMigrator/packages.lock.json +++ b/Applications/DatabaseMigrator/src/DatabaseMigrator/packages.lock.json @@ -1761,15 +1761,13 @@ "Backbone.Modules.Files.Infrastructure": "[1.0.0, )" } }, - "Backbone.Modules.Messages.Application": { + "Backbone.Modules.Messages.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Domain": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.DevelopmentKit.Identity": "[1.0.0, )", + "Backbone.Modules.Messages.Domain": "[1.0.0, )" } }, "Backbone.Modules.Messages.Contracts": { @@ -1791,7 +1789,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Messages.Application": "[1.0.0, )", + "Backbone.Modules.Messages.Abstractions": "[1.0.0, )", "Backbone.Modules.Messages.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", diff --git a/Applications/DatabaseMigrator/test/DatabaseMigrator.Tests/packages.lock.json b/Applications/DatabaseMigrator/test/DatabaseMigrator.Tests/packages.lock.json index 1c37bf71e8..fc3940ab83 100644 --- a/Applications/DatabaseMigrator/test/DatabaseMigrator.Tests/packages.lock.json +++ b/Applications/DatabaseMigrator/test/DatabaseMigrator.Tests/packages.lock.json @@ -1768,15 +1768,13 @@ "Backbone.Modules.Files.Infrastructure": "[1.0.0, )" } }, - "Backbone.Modules.Messages.Application": { + "Backbone.Modules.Messages.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Domain": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.DevelopmentKit.Identity": "[1.0.0, )", + "Backbone.Modules.Messages.Domain": "[1.0.0, )" } }, "Backbone.Modules.Messages.Contracts": { @@ -1798,7 +1796,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Messages.Application": "[1.0.0, )", + "Backbone.Modules.Messages.Abstractions": "[1.0.0, )", "Backbone.Modules.Messages.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", diff --git a/Applications/EventHandlerService/src/EventHandlerService/Dockerfile b/Applications/EventHandlerService/src/EventHandlerService/Dockerfile index 62307ab4cf..8e46a678e3 100644 --- a/Applications/EventHandlerService/src/EventHandlerService/Dockerfile +++ b/Applications/EventHandlerService/src/EventHandlerService/Dockerfile @@ -47,7 +47,7 @@ COPY ["Modules/Files/src/Files.Infrastructure.Database.Postgres/Files.Infrastruc COPY ["Modules/Files/src/Files.Infrastructure/Files.Infrastructure.csproj", "Modules/Files/src/Files.Infrastructure/packages.lock.json*", "Modules/Files/src/Files.Infrastructure/"] COPY ["Modules/Files/src/Files.Infrastructure.Database.SqlServer/Files.Infrastructure.Database.SqlServer.csproj", "Modules/Files/src/Files.Infrastructure.Database.SqlServer/packages.lock.json*", "Modules/Files/src/Files.Infrastructure.Database.SqlServer/"] COPY ["Modules/Messages/src/Messages.Module/Messages.Module.csproj", "Modules/Messages/src/Messages.Module/packages.lock.json*", "Modules/Messages/src/Messages.Module/"] -COPY ["Modules/Messages/src/Messages.Application/Messages.Application.csproj", "Modules/Messages/src/Messages.Application/packages.lock.json*", "Modules/Messages/src/Messages.Application/"] +COPY ["Modules/Messages/src/Messages.Abstractions/Messages.Abstractions.csproj", "Modules/Messages/src/Messages.Abstractions/packages.lock.json*", "Modules/Messages/src/Messages.Abstractions/"] COPY ["Modules/Messages/src/Messages.Domain/Messages.Domain.csproj", "Modules/Messages/src/Messages.Domain/packages.lock.json*", "Modules/Messages/src/Messages.Domain/"] COPY ["Modules/Messages/src/Messages.Infrastructure.Database.Postgres/Messages.Infrastructure.Database.Postgres.csproj", "Modules/Messages/src/Messages.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Messages/src/Messages.Infrastructure.Database.Postgres/"] COPY ["Modules/Messages/src/Messages.Infrastructure/Messages.Infrastructure.csproj", "Modules/Messages/src/Messages.Infrastructure/packages.lock.json*", "Modules/Messages/src/Messages.Infrastructure/"] diff --git a/Applications/EventHandlerService/src/EventHandlerService/Program.cs b/Applications/EventHandlerService/src/EventHandlerService/Program.cs index c59f8c7b70..24e2724573 100644 --- a/Applications/EventHandlerService/src/EventHandlerService/Program.cs +++ b/Applications/EventHandlerService/src/EventHandlerService/Program.cs @@ -78,13 +78,13 @@ static IHostBuilder CreateHostBuilder(string[] args) .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) - .AddModule(configuration) + .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) - .AddModule(configuration); + .AddModule(configuration); services.AddCustomIdentity(hostContext.HostingEnvironment); diff --git a/Applications/EventHandlerService/src/EventHandlerService/packages.lock.json b/Applications/EventHandlerService/src/EventHandlerService/packages.lock.json index 8ea3359157..9bf4dc3a55 100644 --- a/Applications/EventHandlerService/src/EventHandlerService/packages.lock.json +++ b/Applications/EventHandlerService/src/EventHandlerService/packages.lock.json @@ -1500,15 +1500,13 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Messages.Application": { + "Backbone.Modules.Messages.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Domain": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.DevelopmentKit.Identity": "[1.0.0, )", + "Backbone.Modules.Messages.Domain": "[1.0.0, )" } }, "Backbone.Modules.Messages.Contracts": { @@ -1530,7 +1528,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Messages.Application": "[1.0.0, )", + "Backbone.Modules.Messages.Abstractions": "[1.0.0, )", "Backbone.Modules.Messages.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1554,11 +1552,13 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Messages.Application": "[1.0.0, )", + "Backbone.Modules.Messages.Abstractions": "[1.0.0, )", "Backbone.Modules.Messages.Domain": "[1.0.0, )", "Backbone.Modules.Messages.Infrastructure": "[1.0.0, )", "Backbone.Modules.Messages.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Messages.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/EventHandlerService/test/EventHandlerService.Tests/packages.lock.json b/Applications/EventHandlerService/test/EventHandlerService.Tests/packages.lock.json index 5c9b71db9a..306a953dc5 100644 --- a/Applications/EventHandlerService/test/EventHandlerService.Tests/packages.lock.json +++ b/Applications/EventHandlerService/test/EventHandlerService.Tests/packages.lock.json @@ -1643,15 +1643,13 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Messages.Application": { + "Backbone.Modules.Messages.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Domain": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.DevelopmentKit.Identity": "[1.0.0, )", + "Backbone.Modules.Messages.Domain": "[1.0.0, )" } }, "Backbone.Modules.Messages.Contracts": { @@ -1673,7 +1671,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Messages.Application": "[1.0.0, )", + "Backbone.Modules.Messages.Abstractions": "[1.0.0, )", "Backbone.Modules.Messages.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1697,11 +1695,13 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Messages.Application": "[1.0.0, )", + "Backbone.Modules.Messages.Abstractions": "[1.0.0, )", "Backbone.Modules.Messages.Domain": "[1.0.0, )", "Backbone.Modules.Messages.Infrastructure": "[1.0.0, )", "Backbone.Modules.Messages.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Messages.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/Housekeeper/src/Housekeeper/Dockerfile b/Applications/Housekeeper/src/Housekeeper/Dockerfile index 3cb928674e..029480d03c 100644 --- a/Applications/Housekeeper/src/Housekeeper/Dockerfile +++ b/Applications/Housekeeper/src/Housekeeper/Dockerfile @@ -57,7 +57,7 @@ COPY ["Modules/Files/src/Files.Infrastructure.Database.SqlServer/Files.Infrastru COPY ["Modules/Files/src/Files.Module/Files.Module.csproj", "Modules/Files/src/Files.Module/packages.lock.json*", "Modules/Files/src/Files.Module/"] COPY ["Modules/Messages/src/Messages.Infrastructure.Database.Postgres/Messages.Infrastructure.Database.Postgres.csproj", "Modules/Messages/src/Messages.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Messages/src/Messages.Infrastructure.Database.Postgres/"] COPY ["Modules/Messages/src/Messages.Infrastructure/Messages.Infrastructure.csproj", "Modules/Messages/src/Messages.Infrastructure/packages.lock.json*", "Modules/Messages/src/Messages.Infrastructure/"] -COPY ["Modules/Messages/src/Messages.Application/Messages.Application.csproj", "Modules/Messages/src/Messages.Application/packages.lock.json*", "Modules/Messages/src/Messages.Application/"] +COPY ["Modules/Messages/src/Messages.Abstractions/Messages.Abstractions.csproj", "Modules/Messages/src/Messages.Abstractions/packages.lock.json*", "Modules/Messages/src/Messages.Abstractions/"] COPY ["Modules/Messages/src/Messages.Domain/Messages.Domain.csproj", "Modules/Messages/src/Messages.Domain/packages.lock.json*", "Modules/Messages/src/Messages.Domain/"] COPY ["Modules/Messages/src/Messages.Infrastructure.Database.SqlServer/Messages.Infrastructure.Database.SqlServer.csproj", "Modules/Messages/src/Messages.Infrastructure.Database.SqlServer/packages.lock.json*", "Modules/Messages/src/Messages.Infrastructure.Database.SqlServer/"] COPY ["Modules/Quotas/src/Quotas.Infrastructure.Database.Postgres/Quotas.Infrastructure.Database.Postgres.csproj", "Modules/Quotas/src/Quotas.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Quotas/src/Quotas.Infrastructure.Database.Postgres/"] diff --git a/Applications/Housekeeper/src/Housekeeper/packages.lock.json b/Applications/Housekeeper/src/Housekeeper/packages.lock.json index 1834121b37..ce572ba992 100644 --- a/Applications/Housekeeper/src/Housekeeper/packages.lock.json +++ b/Applications/Housekeeper/src/Housekeeper/packages.lock.json @@ -1811,15 +1811,13 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Messages.Application": { + "Backbone.Modules.Messages.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Domain": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.DevelopmentKit.Identity": "[1.0.0, )", + "Backbone.Modules.Messages.Domain": "[1.0.0, )" } }, "Backbone.Modules.Messages.Contracts": { @@ -1841,7 +1839,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Messages.Application": "[1.0.0, )", + "Backbone.Modules.Messages.Abstractions": "[1.0.0, )", "Backbone.Modules.Messages.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Dockerfile b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Dockerfile index 024e79cffc..80a12efdeb 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Dockerfile +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Dockerfile @@ -52,7 +52,7 @@ COPY ["Modules/Files/src/Files.Module/Files.Module.csproj", "Modules/Files/src/F COPY ["Modules/Files/src/Files.Infrastructure.Database.Postgres/Files.Infrastructure.Database.Postgres.csproj", "Modules/Files/src/Files.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Files/src/Files.Infrastructure.Database.Postgres/"] COPY ["Modules/Files/src/Files.Infrastructure/Files.Infrastructure.csproj", "Modules/Files/src/Files.Infrastructure/packages.lock.json*", "Modules/Files/src/Files.Infrastructure/"] COPY ["Modules/Files/src/Files.Infrastructure.Database.SqlServer/Files.Infrastructure.Database.SqlServer.csproj", "Modules/Files/src/Files.Infrastructure.Database.SqlServer/packages.lock.json*", "Modules/Files/src/Files.Infrastructure.Database.SqlServer/"] -COPY ["Modules/Messages/src/Messages.Application/Messages.Application.csproj", "Modules/Messages/src/Messages.Application/packages.lock.json*", "Modules/Messages/src/Messages.Application/"] +COPY ["Modules/Messages/src/Messages.Abstractions/Messages.Abstractions.csproj", "Modules/Messages/src/Messages.Abstractions/packages.lock.json*", "Modules/Messages/src/Messages.Abstractions/"] COPY ["Modules/Messages/src/Messages.Domain/Messages.Domain.csproj", "Modules/Messages/src/Messages.Domain/packages.lock.json*", "Modules/Messages/src/Messages.Domain/"] COPY ["Modules/Messages/src/Messages.Module/Messages.Module.csproj", "Modules/Messages/src/Messages.Module/packages.lock.json*", "Modules/Messages/src/Messages.Module/"] COPY ["Modules/Messages/src/Messages.Infrastructure.Database.Postgres/Messages.Infrastructure.Database.Postgres.csproj", "Modules/Messages/src/Messages.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Messages/src/Messages.Infrastructure.Database.Postgres/"] diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Job.IdentityDeletion.csproj b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Job.IdentityDeletion.csproj index a3f02d9193..392d422cbd 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Job.IdentityDeletion.csproj +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Job.IdentityDeletion.csproj @@ -26,7 +26,7 @@ - + diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Program.cs b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Program.cs index 4e6b39c73f..c3afa8c210 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Program.cs +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Program.cs @@ -88,13 +88,13 @@ public static IHostBuilder CreateHostBuilder(string[] args) .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) - .AddModule(configuration) + .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) - .AddModule(configuration); + .AddModule(configuration); services.AddSingleton(); diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/ServicesExtensions.cs b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/ServicesExtensions.cs index 214b576b06..eb83ee4f5a 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/ServicesExtensions.cs +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/ServicesExtensions.cs @@ -10,7 +10,7 @@ public static IServiceCollection RegisterIdentityDeleters(this IServiceCollectio services.AddTransient(); services.AddTransient(); services.AddTransient(); - services.AddTransient(); + services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/packages.lock.json b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/packages.lock.json index 8c8bf896d4..7710d8a922 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/packages.lock.json +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/packages.lock.json @@ -1538,15 +1538,13 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Messages.Application": { + "Backbone.Modules.Messages.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Domain": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.DevelopmentKit.Identity": "[1.0.0, )", + "Backbone.Modules.Messages.Domain": "[1.0.0, )" } }, "Backbone.Modules.Messages.Contracts": { @@ -1568,7 +1566,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Messages.Application": "[1.0.0, )", + "Backbone.Modules.Messages.Abstractions": "[1.0.0, )", "Backbone.Modules.Messages.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1592,11 +1590,13 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Messages.Application": "[1.0.0, )", + "Backbone.Modules.Messages.Abstractions": "[1.0.0, )", "Backbone.Modules.Messages.Domain": "[1.0.0, )", "Backbone.Modules.Messages.Infrastructure": "[1.0.0, )", "Backbone.Modules.Messages.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Messages.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests.Integration/packages.lock.json b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests.Integration/packages.lock.json index 172e352c7d..2526ac88a3 100644 --- a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests.Integration/packages.lock.json +++ b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests.Integration/packages.lock.json @@ -1427,7 +1427,6 @@ "Backbone.Modules.Devices.Module": "[1.0.0, )", "Backbone.Modules.Files.Application": "[1.0.0, )", "Backbone.Modules.Files.Module": "[1.0.0, )", - "Backbone.Modules.Messages.Application": "[1.0.0, )", "Backbone.Modules.Messages.Module": "[1.0.0, )", "Backbone.Modules.Quotas.Application": "[1.0.0, )", "Backbone.Modules.Quotas.Module": "[1.0.0, )", @@ -1700,15 +1699,13 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Messages.Application": { + "Backbone.Modules.Messages.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Domain": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.DevelopmentKit.Identity": "[1.0.0, )", + "Backbone.Modules.Messages.Domain": "[1.0.0, )" } }, "Backbone.Modules.Messages.Contracts": { @@ -1730,7 +1727,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Messages.Application": "[1.0.0, )", + "Backbone.Modules.Messages.Abstractions": "[1.0.0, )", "Backbone.Modules.Messages.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1754,11 +1751,13 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Messages.Application": "[1.0.0, )", + "Backbone.Modules.Messages.Abstractions": "[1.0.0, )", "Backbone.Modules.Messages.Domain": "[1.0.0, )", "Backbone.Modules.Messages.Infrastructure": "[1.0.0, )", "Backbone.Modules.Messages.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Messages.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/packages.lock.json b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/packages.lock.json index 172e352c7d..2526ac88a3 100644 --- a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/packages.lock.json +++ b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/packages.lock.json @@ -1427,7 +1427,6 @@ "Backbone.Modules.Devices.Module": "[1.0.0, )", "Backbone.Modules.Files.Application": "[1.0.0, )", "Backbone.Modules.Files.Module": "[1.0.0, )", - "Backbone.Modules.Messages.Application": "[1.0.0, )", "Backbone.Modules.Messages.Module": "[1.0.0, )", "Backbone.Modules.Quotas.Application": "[1.0.0, )", "Backbone.Modules.Quotas.Module": "[1.0.0, )", @@ -1700,15 +1699,13 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Messages.Application": { + "Backbone.Modules.Messages.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Domain": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.DevelopmentKit.Identity": "[1.0.0, )", + "Backbone.Modules.Messages.Domain": "[1.0.0, )" } }, "Backbone.Modules.Messages.Contracts": { @@ -1730,7 +1727,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Messages.Application": "[1.0.0, )", + "Backbone.Modules.Messages.Abstractions": "[1.0.0, )", "Backbone.Modules.Messages.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1754,11 +1751,13 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Messages.Application": "[1.0.0, )", + "Backbone.Modules.Messages.Abstractions": "[1.0.0, )", "Backbone.Modules.Messages.Domain": "[1.0.0, )", "Backbone.Modules.Messages.Infrastructure": "[1.0.0, )", "Backbone.Modules.Messages.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Messages.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Backbone.Tests.ArchUnit/Backbone.Tests.ArchUnit.csproj b/Backbone.Tests.ArchUnit/Backbone.Tests.ArchUnit.csproj index f79a39e3fa..08cd6ffa38 100644 --- a/Backbone.Tests.ArchUnit/Backbone.Tests.ArchUnit.csproj +++ b/Backbone.Tests.ArchUnit/Backbone.Tests.ArchUnit.csproj @@ -37,7 +37,10 @@ - + + + + diff --git a/Backbone.Tests.ArchUnit/CQRS.cs b/Backbone.Tests.ArchUnit/CQRS.cs index 86ff720e79..c5259e05f2 100644 --- a/Backbone.Tests.ArchUnit/CQRS.cs +++ b/Backbone.Tests.ArchUnit/CQRS.cs @@ -33,7 +33,7 @@ public void ClassesInheritingFromIRequestShouldHaveNameEndingWithCommandOrQuery( public void CommandsShouldResideInCommandsNamespace() { Classes().That().Are(COMMANDS) - .Should().ResideInNamespaceMatching(".+\\.Commands\\.") + .Should().ResideInNamespaceMatching(".+(\\.Commands\\.|\\.Features\\.)") .Check(Backbone.ARCHITECTURE); } @@ -41,7 +41,7 @@ public void CommandsShouldResideInCommandsNamespace() public void QueriesShouldResideInQueriesNamespace() { Classes().That().Are(QUERIES) - .Should().ResideInNamespaceMatching(".+\\.Queries\\.") + .Should().ResideInNamespaceMatching(".+(\\.Queries\\.|\\.Features\\.)") .Check(Backbone.ARCHITECTURE); } } diff --git a/Backbone.Tests.ArchUnit/MessagesCleanArchitecture.cs b/Backbone.Tests.ArchUnit/MessagesCleanArchitecture.cs new file mode 100644 index 0000000000..e8c99677c4 --- /dev/null +++ b/Backbone.Tests.ArchUnit/MessagesCleanArchitecture.cs @@ -0,0 +1,59 @@ +using ArchUnitNET.Domain; +using ArchUnitNET.xUnitV3; +using static ArchUnitNET.Fluent.ArchRuleDefinition; + +namespace Backbone.Backbone.Tests.ArchUnit; + +public class MessagesCleanArchitecture +{ + private static readonly IObjectProvider USE_CASE_TYPES = + Classes().That() + .ResideInNamespaceMatching("Backbone.Modules.Messages.Module.Features.*") + .And().HaveNameMatching(".+(Command|Query|Handler|Validator|Response)$") + .As("Messages use case types"); + + [Fact] + public void DomainShouldNotDependOnOuterLayers() + { + Types().That().ResideInAssemblyMatching("Backbone.Modules.Messages.Domain") + .Should().NotDependOnAnyTypesThat().ResideInAssemblyMatching("Backbone.Modules.Messages.(Module|Infrastructure|Abstractions)") + .Because("the Messages domain is the innermost Clean Architecture layer") + .Check(Backbone.ARCHITECTURE); + } + + [Fact] + public void AbstractionsShouldNotDependOnOuterLayers() + { + Types().That().ResideInAssemblyMatching("Backbone.Modules.Messages.Abstractions") + .Should().NotDependOnAnyTypesThat().ResideInAssemblyMatching("Backbone.Modules.Messages.(Module|Infrastructure)") + .Because("application ports must remain independent of adapters and composition") + .Check(Backbone.ARCHITECTURE); + } + + [Fact] + public void InfrastructureShouldNotDependOnModule() + { + Types().That().ResideInAssemblyMatching("Backbone.Modules.Messages.Infrastructure") + .Should().NotDependOnAnyTypesThat().ResideInAssemblyMatching("Backbone.Modules.Messages.Module") + .Because("infrastructure adapters may implement application ports but must not depend on the module composition root") + .Check(Backbone.ARCHITECTURE); + } + + [Fact] + public void UseCasesShouldNotDependOnInfrastructure() + { + Types().That().Are(USE_CASE_TYPES) + .Should().NotDependOnAnyTypesThat().ResideInAssemblyMatching("Backbone.Modules.Messages.Infrastructure") + .Because("use cases must depend on application ports instead of infrastructure adapters") + .Check(Backbone.ARCHITECTURE); + } + + [Fact] + public void UseCasesShouldNotReferenceAspNetCore() + { + Types().That().Are(USE_CASE_TYPES) + .Should().NotDependOnAnyTypesThat().ResideInNamespaceMatching("Microsoft.AspNetCore.*") + .Because("HTTP belongs to the endpoint adapter, not to Commands, Queries, Handlers, Validators, or Responses") + .Check(Backbone.ARCHITECTURE); + } +} diff --git a/Backbone.Tests.ArchUnit/packages.lock.json b/Backbone.Tests.ArchUnit/packages.lock.json index c3f8c9910c..e971cf969e 100644 --- a/Backbone.Tests.ArchUnit/packages.lock.json +++ b/Backbone.Tests.ArchUnit/packages.lock.json @@ -1643,7 +1643,6 @@ "Backbone.Modules.Devices.Module": "[1.0.0, )", "Backbone.Modules.Files.Application": "[1.0.0, )", "Backbone.Modules.Files.Module": "[1.0.0, )", - "Backbone.Modules.Messages.Application": "[1.0.0, )", "Backbone.Modules.Messages.Module": "[1.0.0, )", "Backbone.Modules.Quotas.Application": "[1.0.0, )", "Backbone.Modules.Quotas.Module": "[1.0.0, )", @@ -2017,26 +2016,13 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Messages.Application": { + "Backbone.Modules.Messages.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Domain": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" - } - }, - "Backbone.Modules.Messages.Application.Tests": { - "type": "Project", - "dependencies": { - "Backbone.Modules.Messages.Application": "[1.0.0, )", - "Backbone.Modules.Messages.Infrastructure": "[1.0.0, )", - "Backbone.UnitTestTools": "[1.0.0, )", - "FakeItEasy": "[9.0.1, 9.0.1]", - "GitHubActionsTestLogger": "[3.0.5, 3.0.5]", - "Microsoft.NET.Test.Sdk": "[18.8.1, 18.8.1]" + "Backbone.DevelopmentKit.Identity": "[1.0.0, )", + "Backbone.Modules.Messages.Domain": "[1.0.0, )" } }, "Backbone.Modules.Messages.Common": { @@ -2075,7 +2061,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Messages.Application": "[1.0.0, )", + "Backbone.Modules.Messages.Abstractions": "[1.0.0, )", "Backbone.Modules.Messages.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -2099,14 +2085,27 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Messages.Application": "[1.0.0, )", + "Backbone.Modules.Messages.Abstractions": "[1.0.0, )", "Backbone.Modules.Messages.Domain": "[1.0.0, )", "Backbone.Modules.Messages.Infrastructure": "[1.0.0, )", "Backbone.Modules.Messages.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Messages.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, + "Backbone.Modules.Messages.Module.Tests": { + "type": "Project", + "dependencies": { + "Backbone.Modules.Messages.Infrastructure": "[1.0.0, )", + "Backbone.Modules.Messages.Module": "[1.0.0, )", + "Backbone.UnitTestTools": "[1.0.0, )", + "FakeItEasy": "[9.0.1, 9.0.1]", + "GitHubActionsTestLogger": "[3.0.5, 3.0.5]", + "Microsoft.NET.Test.Sdk": "[18.8.1, 18.8.1]" + } + }, "Backbone.Modules.Quotas.Application": { "type": "Project", "dependencies": { diff --git a/Backbone.slnx b/Backbone.slnx index ca7ae5d5f2..26d3462a20 100644 --- a/Backbone.slnx +++ b/Backbone.slnx @@ -157,7 +157,7 @@ - + @@ -167,7 +167,7 @@ - + diff --git a/BuildingBlocks/src/BuildingBlocks.API/HttpExceptionResponseFactory.cs b/BuildingBlocks/src/BuildingBlocks.API/HttpExceptionResponseFactory.cs new file mode 100644 index 0000000000..8d5165d115 --- /dev/null +++ b/BuildingBlocks/src/BuildingBlocks.API/HttpExceptionResponseFactory.cs @@ -0,0 +1,68 @@ +using System.Net; +using System.Text.RegularExpressions; +using Backbone.BuildingBlocks.API.Extensions; +using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; +using Backbone.BuildingBlocks.Domain.Errors; +using Backbone.BuildingBlocks.Domain.Exceptions; +using Backbone.BuildingBlocks.Infrastructure.Exceptions; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.Hosting; +using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; + +namespace Backbone.BuildingBlocks.API; + +public sealed class HttpExceptionResponseFactory(IWebHostEnvironment environment) +{ + private const string UnexpectedExceptionErrorCode = "error.platform.unexpected"; + private const string RequestBodyTooLargeErrorCode = "error.platform.requestBodyTooLarge"; + + public HttpExceptionResponse Create(Exception exception) => exception switch + { + InfrastructureException infrastructureException => new(HttpStatusCode.BadRequest, HttpError.ForProduction(infrastructureException.Code, infrastructureException.Message, "")), + ApplicationException applicationException => new(GetStatusCode(applicationException), HttpError.ForProduction(applicationException.Code, applicationException.Message, "", GetCustomData(applicationException))), + DomainException domainException => new(GetStatusCode(domainException), HttpError.ForProduction(domainException.Code, domainException.Message, "")), + BadHttpRequestException => new(HttpStatusCode.BadRequest, HttpError.ForProduction(RequestBodyTooLargeErrorCode, "The request body is too large.", "")), + _ => new(HttpStatusCode.InternalServerError, CreateUnexpectedExceptionError(exception)) + }; + + private HttpError CreateUnexpectedExceptionError(Exception exception) + { + if (!environment.IsDevelopment() && !environment.IsLocal()) + return HttpError.ForProduction(UnexpectedExceptionErrorCode, "An unexpected error occurred.", ""); + + var details = exception.Message; + for (var inner = exception.InnerException; inner != null; inner = inner.InnerException) + details += "\r\n> " + inner.Message; + + var stackTrace = exception.StackTrace == null ? Enumerable.Empty() : Regex.Matches(exception.StackTrace, "at .+").Select(match => match.Value.Trim()); + return HttpError.ForDev(UnexpectedExceptionErrorCode, "An unexpected error occurred.", "", stackTrace, details); + } + + private static dynamic? GetCustomData(ApplicationException exception) => exception is QuotaExhaustedException quotaExhaustedException + ? quotaExhaustedException.ExhaustedMetricStatuses.Select(status => new + { +#pragma warning disable IDE0037 + MetricKey = status.MetricKey.Value, + IsExhaustedUntil = status.IsExhaustedUntil +#pragma warning restore IDE0037 + }) + : exception.AdditionalData; + + private static HttpStatusCode GetStatusCode(ApplicationException exception) => exception switch + { + NotFoundException => HttpStatusCode.NotFound, + ActionForbiddenException => HttpStatusCode.Forbidden, + QuotaExhaustedException => HttpStatusCode.TooManyRequests, + _ => HttpStatusCode.BadRequest + }; + + private static HttpStatusCode GetStatusCode(DomainException exception) => exception.Code switch + { + var code when code == GenericDomainErrors.NotFound().Code => HttpStatusCode.NotFound, + var code when code == GenericDomainErrors.Forbidden().Code => HttpStatusCode.Forbidden, + _ => HttpStatusCode.BadRequest + }; +} + +public sealed record HttpExceptionResponse(HttpStatusCode StatusCode, HttpError Error); diff --git a/BuildingBlocks/src/BuildingBlocks.API/MinimalApi/EndpointRouteBuilderExtensions.cs b/BuildingBlocks/src/BuildingBlocks.API/MinimalApi/EndpointRouteBuilderExtensions.cs new file mode 100644 index 0000000000..5d158305c4 --- /dev/null +++ b/BuildingBlocks/src/BuildingBlocks.API/MinimalApi/EndpointRouteBuilderExtensions.cs @@ -0,0 +1,35 @@ +using Asp.Versioning; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.BuildingBlocks.API.MinimalApi; + +public static class EndpointRouteBuilderExtensions +{ + public static RouteGroupBuilder MapVersionedEndpointGroup(this IEndpointRouteBuilder endpoints, string route, string tag, int apiVersion, + string authorizationPolicy) + { + var version = new ApiVersion(apiVersion); + var versionSet = endpoints.NewApiVersionSet() + .HasApiVersion(version) + .ReportApiVersions() + .Build(); + + return endpoints.MapGroup($"api/v{{v:apiVersion}}/{route}") + .WithApiVersionSet(versionSet) + .MapToApiVersion(version) + .RequireAuthorization(authorizationPolicy) + .WithTags(tag) + .WithMetadata(MinimalApiEndpointMetadata.INSTANCE); + } +} + +internal sealed class MinimalApiEndpointMetadata +{ + public static readonly MinimalApiEndpointMetadata INSTANCE = new(); + + private MinimalApiEndpointMetadata() + { + } +} diff --git a/BuildingBlocks/src/BuildingBlocks.API/MinimalApi/EnvelopeHttpResults.cs b/BuildingBlocks/src/BuildingBlocks.API/MinimalApi/EnvelopeHttpResults.cs new file mode 100644 index 0000000000..4879fab298 --- /dev/null +++ b/BuildingBlocks/src/BuildingBlocks.API/MinimalApi/EnvelopeHttpResults.cs @@ -0,0 +1,26 @@ +using Backbone.BuildingBlocks.Application.Pagination; +using Microsoft.AspNetCore.Http; + +namespace Backbone.BuildingBlocks.API.MinimalApi; + +public static class EnvelopeHttpResults +{ + public static IResult Ok(T result) => Results.Ok(HttpResponseEnvelope.CreateSuccess(result)); + + public static IResult CreatedAtRoute(string routeName, object routeValues, T result) => + Results.CreatedAtRoute(routeName, routeValues, HttpResponseEnvelope.CreateSuccess(result)); + + public static IResult Paged(PagedResponse response) + { + if (response.Pagination.TotalPages <= 1) + return Ok>(response); + + return Results.Ok(new PagedHttpResponseEnvelope(response, new PagedHttpResponseEnvelopePaginationData + { + TotalRecords = response.Pagination.TotalRecords, + PageNumber = response.Pagination.PageNumber, + TotalPages = response.Pagination.TotalPages, + PageSize = response.Pagination.PageSize + })); + } +} diff --git a/BuildingBlocks/src/BuildingBlocks.API/MinimalApi/MinimalApiExceptionMiddleware.cs b/BuildingBlocks/src/BuildingBlocks.API/MinimalApi/MinimalApiExceptionMiddleware.cs new file mode 100644 index 0000000000..ebe4ec241d --- /dev/null +++ b/BuildingBlocks/src/BuildingBlocks.API/MinimalApi/MinimalApiExceptionMiddleware.cs @@ -0,0 +1,22 @@ +using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.Logging; + +namespace Backbone.BuildingBlocks.API.MinimalApi; + +public sealed class MinimalApiExceptionMiddleware(RequestDelegate next, ILogger logger) +{ + public async Task InvokeAsync(HttpContext context, HttpExceptionResponseFactory responseFactory) + { + try + { + await next(context); + } + catch (Exception exception) when (context.GetEndpoint()?.Metadata.GetMetadata() != null && !context.Response.HasStarted) + { + logger.LogInformation(exception, "Handled exception in Minimal API endpoint."); + var response = responseFactory.Create(exception); + context.Response.StatusCode = (int)response.StatusCode; + await context.Response.WriteAsJsonAsync(HttpResponseEnvelope.CreateError(response.Error)); + } + } +} diff --git a/BuildingBlocks/src/BuildingBlocks.API/Mvc/ExceptionFilters/CustomExceptionFilter.cs b/BuildingBlocks/src/BuildingBlocks.API/Mvc/ExceptionFilters/CustomExceptionFilter.cs index f87e21295b..6b24e53ca3 100644 --- a/BuildingBlocks/src/BuildingBlocks.API/Mvc/ExceptionFilters/CustomExceptionFilter.cs +++ b/BuildingBlocks/src/BuildingBlocks.API/Mvc/ExceptionFilters/CustomExceptionFilter.cs @@ -1,9 +1,6 @@ -using System.Net; using System.Text.Json; -using System.Text.RegularExpressions; using Backbone.BuildingBlocks.API.Extensions; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.BuildingBlocks.Domain.Errors; using Backbone.BuildingBlocks.Domain.Exceptions; using Backbone.BuildingBlocks.Infrastructure.Exceptions; using Microsoft.AspNetCore.Hosting; @@ -11,7 +8,6 @@ using Microsoft.AspNetCore.Http.Extensions; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; -using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; @@ -20,223 +16,64 @@ namespace Backbone.BuildingBlocks.API.Mvc.ExceptionFilters; [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)] public class CustomExceptionFilter : ExceptionFilterAttribute { - private const string ERROR_CODE_UNEXPECTED_EXCEPTION = "error.platform.unexpected"; - private const string ERROR_CODE_REQUEST_BODY_TOO_LARGE = "error.platform.requestBodyTooLarge"; - - private readonly IWebHostEnvironment _env; + private const string RequestBodyTooLargeErrorCode = "error.platform.requestBodyTooLarge"; private readonly ILogger _logger; + private readonly HttpExceptionResponseFactory _responseFactory; - public CustomExceptionFilter(ILogger logger, IWebHostEnvironment env) + public CustomExceptionFilter(ILogger logger, IWebHostEnvironment environment) { _logger = logger; - _env = env; + _responseFactory = new HttpExceptionResponseFactory(environment); } public override void OnException(ExceptionContext context) { - context.HttpContext.Response.ContentType = "application/json"; + LogException(context.Exception, context.HttpContext.Request.GetDisplayUrl()); - HttpError httpError; + var response = _responseFactory.Create(context.Exception); + context.HttpContext.Response.ContentType = "application/json"; + context.HttpContext.Response.StatusCode = (int)response.StatusCode; + context.Result = new JsonResult(HttpResponseEnvelope.CreateError(response.Error), new JsonSerializerOptions + { + PropertyNamingPolicy = JsonNamingPolicy.CamelCase, + DictionaryKeyPolicy = JsonNamingPolicy.CamelCase + }); + } - switch (context.Exception) + private void LogException(Exception exception, string uri) + { + switch (exception) { case InfrastructureException infrastructureException: _logger.InvalidUserInput(nameof(InfrastructureException), infrastructureException.Code, infrastructureException.Message); - - httpError = CreateHttpErrorForInfrastructureException(infrastructureException); - - context.HttpContext.Response.StatusCode = - (int)GetStatusCodeForInfrastructureException(infrastructureException); - break; case ApplicationException applicationException: _logger.InvalidUserInput(nameof(ApplicationException), applicationException.Code, applicationException.Message); - - httpError = CreateHttpErrorForApplicationException(applicationException); - - context.HttpContext.Response.StatusCode = - (int)GetStatusCodeForApplicationException(applicationException); - break; - case DomainException domainException: _logger.InvalidUserInput(nameof(DomainException), domainException.Code, domainException.Message); - - httpError = CreateHttpErrorForDomainException(domainException); - - context.HttpContext.Response.StatusCode = (int)GetStatusCodeForDomainException(domainException); - break; case BadHttpRequestException: - _logger.RequestBodyTooLarge(ERROR_CODE_REQUEST_BODY_TOO_LARGE); - - httpError = HttpError.ForProduction( - ERROR_CODE_REQUEST_BODY_TOO_LARGE, - "The request body is too large.", - "" // TODO: add documentation link - ); - - context.HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest; - + _logger.RequestBodyTooLarge(RequestBodyTooLargeErrorCode); break; default: - _logger.ErrorWhileProcessingRequestToUri(context.HttpContext.Request.GetDisplayUrl(), context.Exception); - - httpError = CreateHttpErrorForUnexpectedException(context); - - context.HttpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError; - + _logger.ErrorWhileProcessingRequestToUri(uri, exception); break; } - - context.Result = new JsonResult(HttpResponseEnvelope.CreateError(httpError), - new JsonSerializerOptions - { - PropertyNamingPolicy = JsonNamingPolicy.CamelCase, DictionaryKeyPolicy = JsonNamingPolicy.CamelCase - }); - } - - private static HttpError CreateHttpErrorForInfrastructureException(InfrastructureException infrastructureException) - { - var httpError = HttpError.ForProduction( - infrastructureException.Code, - infrastructureException.Message, - "" // TODO: add documentation link - ); - - return httpError; - } - - private HttpError CreateHttpErrorForApplicationException(ApplicationException applicationException) - { - var httpError = HttpError.ForProduction( - applicationException.Code, - applicationException.Message, - "", // TODO: add documentation link - data: GetCustomData(applicationException) - ); - - return httpError; - } - - private static HttpError CreateHttpErrorForDomainException(DomainException domainException) - { - var httpError = HttpError.ForProduction( - domainException.Code, - domainException.Message, - "" // TODO: add documentation link - ); - - return httpError; - } - - private static dynamic? GetCustomData(ApplicationException applicationException) - { - if (applicationException is QuotaExhaustedException quotaExhaustedException) - { - return quotaExhaustedException.ExhaustedMetricStatuses.Select(m => new - { -#pragma warning disable IDE0037 - MetricKey = m.MetricKey.Value, - IsExhaustedUntil = m.IsExhaustedUntil -#pragma warning restore IDE0037 - }); - } - - return applicationException.AdditionalData; - } - - private static HttpStatusCode GetStatusCodeForInfrastructureException(InfrastructureException _) - { - return HttpStatusCode.BadRequest; - } - - private static HttpStatusCode GetStatusCodeForApplicationException(ApplicationException exception) - { - return exception switch - { - NotFoundException => HttpStatusCode.NotFound, - ActionForbiddenException => HttpStatusCode.Forbidden, - QuotaExhaustedException => HttpStatusCode.TooManyRequests, - _ => HttpStatusCode.BadRequest - }; - } - - private static HttpStatusCode GetStatusCodeForDomainException(DomainException exception) - { - if (exception.Code == GenericDomainErrors.NotFound().Code) - return HttpStatusCode.NotFound; - if (exception.Code == GenericDomainErrors.Forbidden().Code) - return HttpStatusCode.Forbidden; - - return HttpStatusCode.BadRequest; - } - - private HttpError CreateHttpErrorForUnexpectedException(ExceptionContext context) - { - HttpError httpError; - - if (_env.IsDevelopment() || _env.IsLocal()) - { - var details = context.Exception.Message; - var innerException = context.Exception.InnerException; - - while (innerException != null) - { - details += "\r\n> " + innerException.Message; - innerException = innerException.InnerException; - } - - httpError = HttpError.ForDev( - ERROR_CODE_UNEXPECTED_EXCEPTION, - "An unexpected error occurred.", - "", // TODO: add documentation link - GetFormattedStackTrace(context.Exception), - details - ); - } - else - { - httpError = HttpError.ForProduction( - ERROR_CODE_UNEXPECTED_EXCEPTION, - "An unexpected error occurred.", - "" // TODO: add documentation link - ); - } - - return httpError; - } - - private static IEnumerable GetFormattedStackTrace(Exception exception) - { - if (exception.StackTrace == null) - return []; - - return - Regex.Matches(exception.StackTrace, "at .+").Select(m => m.Value.Trim()); } } internal static partial class ExceptionFilterLogs { - [LoggerMessage( - EventId = 799306, - EventName = "ExceptionFilter.InvalidUserInput", - Level = LogLevel.Information, + [LoggerMessage(EventId = 799306, EventName = "ExceptionFilter.InvalidUserInput", Level = LogLevel.Information, Message = "An '{exception}' occurred. Error Code: '{code}'. Error message: '{message}'.")] public static partial void InvalidUserInput(this ILogger logger, string exception, string code, string message); - [LoggerMessage( - EventId = 938218, - EventName = "ExceptionFilter.RequestBodyTooLarge", - Level = LogLevel.Information, + [LoggerMessage(EventId = 938218, EventName = "ExceptionFilter.RequestBodyTooLarge", Level = LogLevel.Information, Message = "'{errorCode}': The body of the request is too large.")] public static partial void RequestBodyTooLarge(this ILogger logger, string errorCode); - [LoggerMessage( - EventId = 259125, - EventName = "ExceptionFilter.ErrorWhileProcessingRequestToUri", - Level = LogLevel.Error, + [LoggerMessage(EventId = 259125, EventName = "ExceptionFilter.ErrorWhileProcessingRequestToUri", Level = LogLevel.Error, Message = "Unexpected Error while processing request to '{uri}'.")] public static partial void ErrorWhileProcessingRequestToUri(this ILogger logger, string uri, Exception ex); } diff --git a/Modules/Messages/src/Messages.Application/Messages.Application.csproj b/Modules/Messages/src/Messages.Abstractions/Messages.Abstractions.csproj similarity index 57% rename from Modules/Messages/src/Messages.Application/Messages.Application.csproj rename to Modules/Messages/src/Messages.Abstractions/Messages.Abstractions.csproj index fc77757050..b48880c10a 100644 --- a/Modules/Messages/src/Messages.Application/Messages.Application.csproj +++ b/Modules/Messages/src/Messages.Abstractions/Messages.Abstractions.csproj @@ -1,15 +1,8 @@ - - - - - - - + - diff --git a/Modules/Messages/src/Messages.Application/Infrastructure/Persistence/Repository/IMessagesRepository.cs b/Modules/Messages/src/Messages.Abstractions/Persistence/IMessagesRepository.cs similarity index 90% rename from Modules/Messages/src/Messages.Application/Infrastructure/Persistence/Repository/IMessagesRepository.cs rename to Modules/Messages/src/Messages.Abstractions/Persistence/IMessagesRepository.cs index cb48dcd1dc..76c8ea9152 100644 --- a/Modules/Messages/src/Messages.Application/Infrastructure/Persistence/Repository/IMessagesRepository.cs +++ b/Modules/Messages/src/Messages.Abstractions/Persistence/IMessagesRepository.cs @@ -5,13 +5,11 @@ using Backbone.Modules.Messages.Domain.Entities; using Backbone.Modules.Messages.Domain.Ids; -namespace Backbone.Modules.Messages.Application.Infrastructure.Persistence.Repository; +namespace Backbone.Modules.Messages.Abstractions.Persistence; public interface IMessagesRepository { - Task> ListMessagesWithContent(IEnumerable ids, IdentityAddress requiredParticipant, PaginationFilter paginationFilter, CancellationToken cancellationToken, - bool track = false); - + Task> ListMessagesWithContent(IEnumerable ids, IdentityAddress requiredParticipant, PaginationFilter paginationFilter, CancellationToken cancellationToken, bool track = false); Task GetWithContent(MessageId id, IdentityAddress requiredParticipant, CancellationToken cancellationToken, bool track = false); Task Add(Message message, CancellationToken cancellationToken); Task CountUnreceivedMessagesFromSenderToRecipient(IdentityAddress sender, IdentityAddress recipient, CancellationToken cancellationToken); diff --git a/Modules/Messages/src/Messages.Application/Infrastructure/Persistence/Repository/IRelationshipsRepository.cs b/Modules/Messages/src/Messages.Abstractions/Persistence/IRelationshipsRepository.cs similarity index 76% rename from Modules/Messages/src/Messages.Application/Infrastructure/Persistence/Repository/IRelationshipsRepository.cs rename to Modules/Messages/src/Messages.Abstractions/Persistence/IRelationshipsRepository.cs index f02a4ccd93..c79ced2cf4 100644 --- a/Modules/Messages/src/Messages.Application/Infrastructure/Persistence/Repository/IRelationshipsRepository.cs +++ b/Modules/Messages/src/Messages.Abstractions/Persistence/IRelationshipsRepository.cs @@ -1,7 +1,7 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Messages.Domain.Entities; -namespace Backbone.Modules.Messages.Application.Infrastructure.Persistence.Repository; +namespace Backbone.Modules.Messages.Abstractions.Persistence; public interface IRelationshipsRepository { diff --git a/Modules/Messages/src/Messages.Application/packages.lock.json b/Modules/Messages/src/Messages.Abstractions/packages.lock.json similarity index 98% rename from Modules/Messages/src/Messages.Application/packages.lock.json rename to Modules/Messages/src/Messages.Abstractions/packages.lock.json index 0f7fc78c9c..eed392d387 100644 --- a/Modules/Messages/src/Messages.Application/packages.lock.json +++ b/Modules/Messages/src/Messages.Abstractions/packages.lock.json @@ -2,16 +2,6 @@ "version": 2, "dependencies": { "net10.0": { - "FluentValidation.DependencyInjectionExtensions": { - "type": "Direct", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "AWSSDK.Core": { "type": "Transitive", "resolved": "4.0.100.9", @@ -754,12 +744,6 @@ "Backbone.Tooling": "[1.0.0, )" } }, - "Backbone.Modules.Relationships.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Tooling": { "type": "Project", "dependencies": { diff --git a/Modules/Messages/src/Messages.Application/DomainEvents/Incoming/MessageOrphaned/MessageOrphanedDomainEventHandler.cs b/Modules/Messages/src/Messages.Application/DomainEvents/Incoming/MessageOrphaned/MessageOrphanedDomainEventHandler.cs deleted file mode 100644 index f22a439da1..0000000000 --- a/Modules/Messages/src/Messages.Application/DomainEvents/Incoming/MessageOrphaned/MessageOrphanedDomainEventHandler.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; -using Backbone.Modules.Messages.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Messages.Contracts.DomainEvents; -using MessageId = Backbone.Modules.Messages.Domain.Ids.MessageId; - -namespace Backbone.Modules.Messages.Application.DomainEvents.Incoming.MessageOrphaned; - -public class MessageOrphanedDomainEventHandler : IDomainEventHandler -{ - private readonly IMessagesRepository _messagesRepository; - - public MessageOrphanedDomainEventHandler(IMessagesRepository messagesRepository) - { - _messagesRepository = messagesRepository; - } - - public async Task Handle(MessageOrphanedDomainEvent @event) - { - var messageId = MessageId.Parse(@event.MessageId); - await _messagesRepository.Delete(messageId, CancellationToken.None); - } -} diff --git a/Modules/Messages/src/Messages.Application/DomainEvents/Incoming/RelationshipStatusChanged/RelationshipStatusChangedDomainEventHandler.cs b/Modules/Messages/src/Messages.Application/DomainEvents/Incoming/RelationshipStatusChanged/RelationshipStatusChangedDomainEventHandler.cs deleted file mode 100644 index b215171413..0000000000 --- a/Modules/Messages/src/Messages.Application/DomainEvents/Incoming/RelationshipStatusChanged/RelationshipStatusChangedDomainEventHandler.cs +++ /dev/null @@ -1,50 +0,0 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; -using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Messages.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Messages.Domain.Entities; -using Backbone.Modules.Relationships.Contracts.DomainEvents; -using Microsoft.Extensions.Logging; -using Microsoft.Extensions.Options; - -namespace Backbone.Modules.Messages.Application.DomainEvents.Incoming.RelationshipStatusChanged; - -public class RelationshipStatusChangedDomainEventHandler : IDomainEventHandler -{ - private readonly IMessagesRepository _messagesRepository; - private readonly ILogger _logger; - private readonly ApplicationConfiguration _applicationConfiguration; - - public RelationshipStatusChangedDomainEventHandler(IMessagesRepository messagesRepository, IOptions applicationOptions, - ILogger logger) - { - _messagesRepository = messagesRepository; - _logger = logger; - _applicationConfiguration = applicationOptions.Value; - } - - public async Task Handle(RelationshipStatusChangedDomainEvent @event) - { - if (@event.NewStatus != RelationshipStatus.ReadyForDeletion.ToString() && @event.NewStatus != RelationshipStatus.DeletionProposed.ToString()) - { - _logger.LogTrace("Relationship status changed to {newStatus}. No Message decomposition required.", @event.NewStatus); - return; - } - - var anonymizedIdentityAddress = IdentityAddress.GetAnonymized(_applicationConfiguration.DidDomainName); - var messagesExchangedBetweenRelationshipParticipants = - (await _messagesRepository.ListWithoutContent(Message.WasExchangedBetween(@event.Initiator, @event.Peer), CancellationToken.None)).ToList(); - - foreach (var message in messagesExchangedBetweenRelationshipParticipants) - { - // If the status was changed due to identity deletion, we are forced to anonymize the address of the identity that deleted itself. - // If it was a manual status change though, we only want to mark the identity as decomposed on this message. Only after both - // participants have decomposed the relationship the message will be anonymized/deleted. - if (@event.WasDueToIdentityDeletion) - message.AnonymizeParticipant(@event.Initiator, anonymizedIdentityAddress); - else - message.DecomposeFor(@event.Initiator, @event.Peer, anonymizedIdentityAddress); - } - - await _messagesRepository.Update(messagesExchangedBetweenRelationshipParticipants); - } -} diff --git a/Modules/Messages/src/Messages.Application/Extensions/IEventBusExtensions.cs b/Modules/Messages/src/Messages.Application/Extensions/IEventBusExtensions.cs deleted file mode 100644 index c46ec2315b..0000000000 --- a/Modules/Messages/src/Messages.Application/Extensions/IEventBusExtensions.cs +++ /dev/null @@ -1,29 +0,0 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; -using Backbone.Modules.Messages.Application.DomainEvents.Incoming.MessageOrphaned; -using Backbone.Modules.Messages.Application.DomainEvents.Incoming.RelationshipStatusChanged; -using Backbone.Modules.Messages.Contracts.DomainEvents; -using Backbone.Modules.Relationships.Contracts.DomainEvents; - -namespace Backbone.Modules.Messages.Application.Extensions; - -public static class IEventBusExtensions -{ - public static async Task AddMessagesDomainEventSubscriptions(this IEventBus eventBus) - { - await Task.WhenAll(new List - { - SubscribeToMessagesEvents(eventBus), - SubscribeToRelationshipsEvents(eventBus) - }); - } - - private static async Task SubscribeToMessagesEvents(IEventBus eventBus) - { - await eventBus.Subscribe(); - } - - private static async Task SubscribeToRelationshipsEvents(IEventBus eventBus) - { - await eventBus.Subscribe(); - } -} diff --git a/Modules/Messages/src/Messages.Application/Extensions/IServiceCollectionExtensions.cs b/Modules/Messages/src/Messages.Application/Extensions/IServiceCollectionExtensions.cs deleted file mode 100644 index b3b5e9648d..0000000000 --- a/Modules/Messages/src/Messages.Application/Extensions/IServiceCollectionExtensions.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System.Reflection; -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; -using Backbone.BuildingBlocks.Application.MediatR; -using Backbone.Modules.Messages.Application.Messages.Commands.SendMessage; -using FluentValidation; -using Microsoft.Extensions.DependencyInjection; - -namespace Backbone.Modules.Messages.Application.Extensions; - -public static class IServiceCollectionExtensions -{ - extension(IServiceCollection services) - { - public void AddApplication() - { - services.AddMediatR(c => c - .RegisterServicesFromAssemblyContaining() - .AddOpenBehavior(typeof(LoggingBehavior<,>)) - .AddOpenBehavior(typeof(RequestValidationBehavior<,>)) - .AddOpenBehavior(typeof(QuotaEnforcerBehavior<,>)) - ); - services.AddValidatorsFromAssembly(typeof(Validator).Assembly); - services.AddEventHandlers(); - } - - private void AddEventHandlers() - { - foreach (var eventHandler in GetAllDomainEventHandlers()) - { - services.AddTransient(eventHandler); - } - } - } - - private static IEnumerable GetAllDomainEventHandlers() - { - var domainEventHandlerTypes = - from t in Assembly.GetExecutingAssembly().GetTypes() - from i in t.GetInterfaces() - where t.IsClass && !t.IsAbstract && i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IDomainEventHandler<>) - select t; - - return domainEventHandlerTypes; - } -} diff --git a/Modules/Messages/src/Messages.Application/Extensions/RecipientInformationIReadOnlyExtensions.cs b/Modules/Messages/src/Messages.Application/Extensions/RecipientInformationIReadOnlyExtensions.cs deleted file mode 100644 index 375ce5a1a4..0000000000 --- a/Modules/Messages/src/Messages.Application/Extensions/RecipientInformationIReadOnlyExtensions.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Messages.Domain.Entities; - -namespace Backbone.Modules.Messages.Application.Extensions; - -public static class RecipientInformationICollectionExtensions -{ - public static RecipientInformation? FirstWithIdOrDefault(this IReadOnlyCollection query, IdentityAddress address) - { - return query.FirstOrDefault(r => r.Address == address); - } -} diff --git a/Modules/Messages/src/Messages.Application/Identities/IdentityDeleter.cs b/Modules/Messages/src/Messages.Application/Identities/IdentityDeleter.cs deleted file mode 100644 index ea289e9421..0000000000 --- a/Modules/Messages/src/Messages.Application/Identities/IdentityDeleter.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Backbone.BuildingBlocks.Application.Identities; -using Backbone.DevelopmentKit.Identity.ValueObjects; - -namespace Backbone.Modules.Messages.Application.Identities; - -public class IdentityDeleter : IIdentityDeleter -{ - // we currently don't have to do anything here, because the messages are anonymized automatically by the RelationshipStatusChangedDomainEventHandler - // once the relationship gets decomposed (which happens during the identity deletion) - public Task Delete(IdentityAddress identityAddress) - { - return Task.CompletedTask; - } -} diff --git a/Modules/Messages/src/Messages.Application/Messages/Commands/SendMessage/Validator.cs b/Modules/Messages/src/Messages.Application/Messages/Commands/SendMessage/Validator.cs deleted file mode 100644 index 8e79180356..0000000000 --- a/Modules/Messages/src/Messages.Application/Messages/Commands/SendMessage/Validator.cs +++ /dev/null @@ -1,60 +0,0 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.BuildingBlocks.Application.Extensions; -using Backbone.BuildingBlocks.Application.FluentValidation; -using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Messages.Domain.Ids; -using Backbone.Tooling.Extensions; -using FluentValidation; -using Microsoft.Extensions.Options; - -namespace Backbone.Modules.Messages.Application.Messages.Commands.SendMessage; - -public class Validator : AbstractValidator -{ - public Validator(IOptions options) - { - RuleFor(m => m.Recipients) - .DetailedNotNull() - .UniqueItems(r => r.Address).WithErrorCode(GenericApplicationErrors.Validation.InvalidPropertyValue().Code) - .ForEach(r => r - .DetailedNotNull() - .WithName("Recipient") - .SetValidator(new SendMessageCommandRecipientInformationValidator())); - - RuleFor(m => m.Recipients.Count) - .InclusiveBetween(1, options.Value.MaxNumberOfMessageRecipients) - .WithErrorCode(GenericApplicationErrors.Validation.InvalidPropertyValue().Code); - - RuleFor(m => m.Body).DetailedNotNull().NumberOfBytes(1, 10.Mebibytes()); - - RuleFor(m => m.Attachments) - .ForEach(i => i - .DetailedNotNull() - .SetValidator(new SendMessageCommandAttachmentValidator())); - - RuleFor(m => m.Attachments.Count) - .InclusiveBetween(0, 20).WithErrorCode(GenericApplicationErrors.Validation.InvalidPropertyValue().Code); - } -} - -public class SendMessageCommandRecipientInformationValidator : AbstractValidator -{ - public SendMessageCommandRecipientInformationValidator() - { - RuleFor(r => r.Address).ValidId(); - - RuleFor(r => r.EncryptedKey) - .DetailedNotNull() - .NumberOfBytes(30, 300); - } -} - -public class SendMessageCommandAttachmentValidator : AbstractValidator -{ - public SendMessageCommandAttachmentValidator() - { - RuleFor(a => a.Id) - .DetailedNotNull() - .Must(FileId.IsValid).WithMessage("{PropertyName} has an invalid format."); - } -} diff --git a/Modules/Messages/src/Messages.Application/Messages/DTOs/AttachmentDTO.cs b/Modules/Messages/src/Messages.Application/Messages/DTOs/AttachmentDTO.cs deleted file mode 100644 index 53a70aa14e..0000000000 --- a/Modules/Messages/src/Messages.Application/Messages/DTOs/AttachmentDTO.cs +++ /dev/null @@ -1,13 +0,0 @@ -using Backbone.Modules.Messages.Domain.Entities; - -namespace Backbone.Modules.Messages.Application.Messages.DTOs; - -public class AttachmentDTO -{ - public AttachmentDTO(Attachment attachment) - { - Id = attachment.Id; - } - - public string Id { get; set; } -} diff --git a/Modules/Messages/src/Messages.Application/Messages/DTOs/RecipientInformationDTO.cs b/Modules/Messages/src/Messages.Application/Messages/DTOs/RecipientInformationDTO.cs deleted file mode 100644 index 3b930fa53c..0000000000 --- a/Modules/Messages/src/Messages.Application/Messages/DTOs/RecipientInformationDTO.cs +++ /dev/null @@ -1,19 +0,0 @@ -using Backbone.Modules.Messages.Domain.Entities; - -namespace Backbone.Modules.Messages.Application.Messages.DTOs; - -public class RecipientInformationDTO -{ - public RecipientInformationDTO(RecipientInformation recipientInformation) - { - Address = recipientInformation.Address; - EncryptedKey = recipientInformation.EncryptedKey; - ReceivedAt = recipientInformation.ReceivedAt; - ReceivedByDevice = recipientInformation.ReceivedByDevice?.Value; - } - - public string Address { get; set; } - public byte[] EncryptedKey { get; set; } - public DateTime? ReceivedAt { get; set; } - public string? ReceivedByDevice { get; set; } -} diff --git a/Modules/Messages/src/Messages.Application/Messages/Queries/GetMessage/Validator.cs b/Modules/Messages/src/Messages.Application/Messages/Queries/GetMessage/Validator.cs deleted file mode 100644 index 1c8b05f4ed..0000000000 --- a/Modules/Messages/src/Messages.Application/Messages/Queries/GetMessage/Validator.cs +++ /dev/null @@ -1,13 +0,0 @@ -using Backbone.BuildingBlocks.Application.Extensions; -using Backbone.Modules.Messages.Domain.Ids; -using FluentValidation; - -namespace Backbone.Modules.Messages.Application.Messages.Queries.GetMessage; - -public class Validator : AbstractValidator -{ - public Validator() - { - RuleFor(x => x.Id).ValidId(); - } -} diff --git a/Modules/Messages/src/Messages.Application/Messages/Queries/ListMessages/Handler.cs b/Modules/Messages/src/Messages.Application/Messages/Queries/ListMessages/Handler.cs deleted file mode 100644 index 8c2fb9769c..0000000000 --- a/Modules/Messages/src/Messages.Application/Messages/Queries/ListMessages/Handler.cs +++ /dev/null @@ -1,41 +0,0 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; -using Backbone.Modules.Messages.Application.Extensions; -using Backbone.Modules.Messages.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Messages.Domain.Ids; -using MediatR; -using Microsoft.Extensions.Options; - -namespace Backbone.Modules.Messages.Application.Messages.Queries.ListMessages; - -public class Handler : IRequestHandler -{ - private readonly IMessagesRepository _messagesRepository; - private readonly IUserContext _userContext; - private readonly ApplicationConfiguration _configuration; - - public Handler(IUserContext userContext, IMessagesRepository messagesRepository, IOptions options) - { - _userContext = userContext; - _messagesRepository = messagesRepository; - _configuration = options.Value; - } - - public async Task Handle(ListMessagesQuery request, CancellationToken cancellationToken) - { - var dbPaginationResult = - await _messagesRepository.ListMessagesWithContent(request.Ids.Select(MessageId.Parse), _userContext.GetAddress(), request.PaginationFilter, cancellationToken, track: true); - - foreach (var message in dbPaginationResult.ItemsOnPage) - { - var recipient = message.Recipients.FirstWithIdOrDefault(_userContext.GetAddress()); - - recipient?.FetchedMessage(_userContext.GetDeviceId()); - } - - await _messagesRepository.Update(dbPaginationResult.ItemsOnPage); - - var response = new ListMessagesResponse(dbPaginationResult, request.PaginationFilter, _userContext.GetAddress(), _configuration.DidDomainName); - - return response; - } -} diff --git a/Modules/Messages/src/Messages.Application/Messages/Queries/ListMessages/ListMessagesResponse.cs b/Modules/Messages/src/Messages.Application/Messages/Queries/ListMessages/ListMessagesResponse.cs deleted file mode 100644 index cf49b6decc..0000000000 --- a/Modules/Messages/src/Messages.Application/Messages/Queries/ListMessages/ListMessagesResponse.cs +++ /dev/null @@ -1,15 +0,0 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.Persistence.Database; -using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Messages.Application.Messages.DTOs; -using Backbone.Modules.Messages.Domain.Entities; - -namespace Backbone.Modules.Messages.Application.Messages.Queries.ListMessages; - -public class ListMessagesResponse : PagedResponse -{ - public ListMessagesResponse(DbPaginationResult dbPaginationResult, PaginationFilter previousPaginationFilter, IdentityAddress activeIdentity, string didDomainName) - : base(dbPaginationResult.ItemsOnPage.Select(i => new MessageDTO(i, activeIdentity, didDomainName)), previousPaginationFilter, dbPaginationResult.TotalNumberOfItems) - { - } -} diff --git a/Modules/Messages/src/Messages.Infrastructure.Database.Postgres/packages.lock.json b/Modules/Messages/src/Messages.Infrastructure.Database.Postgres/packages.lock.json index 7bfa9b1029..51540b31fa 100644 --- a/Modules/Messages/src/Messages.Infrastructure.Database.Postgres/packages.lock.json +++ b/Modules/Messages/src/Messages.Infrastructure.Database.Postgres/packages.lock.json @@ -730,15 +730,13 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Messages.Application": { + "Backbone.Modules.Messages.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Domain": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.DevelopmentKit.Identity": "[1.0.0, )", + "Backbone.Modules.Messages.Domain": "[1.0.0, )" } }, "Backbone.Modules.Messages.Contracts": { @@ -760,19 +758,13 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Messages.Application": "[1.0.0, )", + "Backbone.Modules.Messages.Abstractions": "[1.0.0, )", "Backbone.Modules.Messages.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, 10.0.3]" } }, - "Backbone.Modules.Relationships.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Tooling": { "type": "Project", "dependencies": { @@ -861,16 +853,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", diff --git a/Modules/Messages/src/Messages.Infrastructure.Database.SqlServer/packages.lock.json b/Modules/Messages/src/Messages.Infrastructure.Database.SqlServer/packages.lock.json index 7bfa9b1029..51540b31fa 100644 --- a/Modules/Messages/src/Messages.Infrastructure.Database.SqlServer/packages.lock.json +++ b/Modules/Messages/src/Messages.Infrastructure.Database.SqlServer/packages.lock.json @@ -730,15 +730,13 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Messages.Application": { + "Backbone.Modules.Messages.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Domain": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.DevelopmentKit.Identity": "[1.0.0, )", + "Backbone.Modules.Messages.Domain": "[1.0.0, )" } }, "Backbone.Modules.Messages.Contracts": { @@ -760,19 +758,13 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Messages.Application": "[1.0.0, )", + "Backbone.Modules.Messages.Abstractions": "[1.0.0, )", "Backbone.Modules.Messages.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, 10.0.3]" } }, - "Backbone.Modules.Relationships.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Tooling": { "type": "Project", "dependencies": { @@ -861,16 +853,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", diff --git a/Modules/Messages/src/Messages.Infrastructure/Messages.Infrastructure.csproj b/Modules/Messages/src/Messages.Infrastructure/Messages.Infrastructure.csproj index 014c1f87fa..7cafaae64f 100644 --- a/Modules/Messages/src/Messages.Infrastructure/Messages.Infrastructure.csproj +++ b/Modules/Messages/src/Messages.Infrastructure/Messages.Infrastructure.csproj @@ -9,7 +9,7 @@ - + diff --git a/Modules/Messages/src/Messages.Infrastructure/Persistence/Database/Repository/MessagesRepository.cs b/Modules/Messages/src/Messages.Infrastructure/Persistence/Database/Repository/MessagesRepository.cs index ff3ac3a212..4ec5d6ba65 100644 --- a/Modules/Messages/src/Messages.Infrastructure/Persistence/Database/Repository/MessagesRepository.cs +++ b/Modules/Messages/src/Messages.Infrastructure/Persistence/Database/Repository/MessagesRepository.cs @@ -3,7 +3,7 @@ using Backbone.BuildingBlocks.Application.Extensions; using Backbone.BuildingBlocks.Application.Pagination; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Messages.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Messages.Abstractions.Persistence; using Backbone.Modules.Messages.Domain.Entities; using Backbone.Modules.Messages.Domain.Ids; using Backbone.Modules.Messages.Infrastructure.Persistence.Database.QueryableExtensions; diff --git a/Modules/Messages/src/Messages.Infrastructure/Persistence/Database/Repository/RelationshipsRepository.cs b/Modules/Messages/src/Messages.Infrastructure/Persistence/Database/Repository/RelationshipsRepository.cs index c3fafdaacf..82a4fd1448 100644 --- a/Modules/Messages/src/Messages.Infrastructure/Persistence/Database/Repository/RelationshipsRepository.cs +++ b/Modules/Messages/src/Messages.Infrastructure/Persistence/Database/Repository/RelationshipsRepository.cs @@ -1,5 +1,5 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Messages.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Messages.Abstractions.Persistence; using Backbone.Modules.Messages.Domain.Entities; using Backbone.Modules.Messages.Infrastructure.Persistence.Database.QueryableExtensions; using Microsoft.EntityFrameworkCore; diff --git a/Modules/Messages/src/Messages.Infrastructure/Persistence/IServiceCollectionExtensions.cs b/Modules/Messages/src/Messages.Infrastructure/Persistence/IServiceCollectionExtensions.cs index 3e7d5cdd73..a6151a4bb1 100644 --- a/Modules/Messages/src/Messages.Infrastructure/Persistence/IServiceCollectionExtensions.cs +++ b/Modules/Messages/src/Messages.Infrastructure/Persistence/IServiceCollectionExtensions.cs @@ -1,5 +1,5 @@ using Backbone.BuildingBlocks.Infrastructure.Persistence.Database; -using Backbone.Modules.Messages.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Messages.Abstractions.Persistence; using Backbone.Modules.Messages.Infrastructure.Persistence.Database; using Backbone.Modules.Messages.Infrastructure.Persistence.Database.Repository; using Microsoft.Extensions.DependencyInjection; diff --git a/Modules/Messages/src/Messages.Infrastructure/packages.lock.json b/Modules/Messages/src/Messages.Infrastructure/packages.lock.json index 2192c46472..a676a20535 100644 --- a/Modules/Messages/src/Messages.Infrastructure/packages.lock.json +++ b/Modules/Messages/src/Messages.Infrastructure/packages.lock.json @@ -766,15 +766,13 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Messages.Application": { + "Backbone.Modules.Messages.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Domain": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.DevelopmentKit.Identity": "[1.0.0, )", + "Backbone.Modules.Messages.Domain": "[1.0.0, )" } }, "Backbone.Modules.Messages.Contracts": { @@ -791,12 +789,6 @@ "Backbone.Tooling": "[1.0.0, )" } }, - "Backbone.Modules.Relationships.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Tooling": { "type": "Project", "dependencies": { @@ -885,16 +877,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", diff --git a/Modules/Messages/src/Messages.Application/ApplicationConfiguration.cs b/Modules/Messages/src/Messages.Module/ApplicationConfiguration.cs similarity index 91% rename from Modules/Messages/src/Messages.Application/ApplicationConfiguration.cs rename to Modules/Messages/src/Messages.Module/ApplicationConfiguration.cs index 6beea123f5..503c74958a 100644 --- a/Modules/Messages/src/Messages.Application/ApplicationConfiguration.cs +++ b/Modules/Messages/src/Messages.Module/ApplicationConfiguration.cs @@ -1,7 +1,7 @@ using System.ComponentModel.DataAnnotations; using Backbone.BuildingBlocks.Application; -namespace Backbone.Modules.Messages.Application; +namespace Backbone.Modules.Messages.Module; public class ApplicationConfiguration { diff --git a/Modules/Messages/src/Messages.Application/ApplicationErrors.cs b/Modules/Messages/src/Messages.Module/ApplicationErrors.cs similarity index 70% rename from Modules/Messages/src/Messages.Application/ApplicationErrors.cs rename to Modules/Messages/src/Messages.Module/ApplicationErrors.cs index e5f241185a..cba0294819 100644 --- a/Modules/Messages/src/Messages.Application/ApplicationErrors.cs +++ b/Modules/Messages/src/Messages.Module/ApplicationErrors.cs @@ -1,15 +1,13 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -namespace Backbone.Modules.Messages.Application; +namespace Backbone.Modules.Messages.Module; public static class ApplicationErrors { public static ApplicationError NoRelationshipToRecipientExists(string recipient = "") { var recipientText = string.IsNullOrEmpty(recipient) ? "one of the recipients" : recipient; - - return new ApplicationError( - "error.platform.validation.message.noRelationshipToRecipientExists", + return new ApplicationError("error.platform.validation.message.noRelationshipToRecipientExists", $"Cannot send message to {recipientText} because there is no relationship to it."); } } diff --git a/Modules/Messages/src/Messages.Module/ApplicationServiceCollectionExtensions.cs b/Modules/Messages/src/Messages.Module/ApplicationServiceCollectionExtensions.cs new file mode 100644 index 0000000000..9a1ceec815 --- /dev/null +++ b/Modules/Messages/src/Messages.Module/ApplicationServiceCollectionExtensions.cs @@ -0,0 +1,33 @@ +using System.Reflection; +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; +using Backbone.BuildingBlocks.Application.MediatR; +using FluentValidation; +using Microsoft.Extensions.DependencyInjection; + +namespace Backbone.Modules.Messages.Module; + +internal static class ApplicationServiceCollectionExtensions +{ + public static void AddApplication(this IServiceCollection services) + { + var assembly = typeof(MessagesModule).Assembly; + services.AddMediatR(configuration => configuration + .RegisterServicesFromAssembly(assembly) + .AddOpenBehavior(typeof(LoggingBehavior<,>)) + .AddOpenBehavior(typeof(RequestValidationBehavior<,>)) + .AddOpenBehavior(typeof(QuotaEnforcerBehavior<,>))); + services.AddValidatorsFromAssembly(assembly); + + foreach (var eventHandler in GetDomainEventHandlers(assembly)) + services.AddTransient(eventHandler); + } + + private static IEnumerable GetDomainEventHandlers(Assembly assembly) + { + return from type in assembly.GetTypes() + from implementedInterface in type.GetInterfaces() + where type.IsClass && !type.IsAbstract && implementedInterface.IsGenericType && + implementedInterface.GetGenericTypeDefinition() == typeof(IDomainEventHandler<>) + select type; + } +} diff --git a/Modules/Messages/src/Messages.Module/Features/DomainEvents/MessageOrphaned/Handler.cs b/Modules/Messages/src/Messages.Module/Features/DomainEvents/MessageOrphaned/Handler.cs new file mode 100644 index 0000000000..df7ef041b9 --- /dev/null +++ b/Modules/Messages/src/Messages.Module/Features/DomainEvents/MessageOrphaned/Handler.cs @@ -0,0 +1,14 @@ +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; +using Backbone.Modules.Messages.Abstractions.Persistence; +using Backbone.Modules.Messages.Contracts.DomainEvents; +using Backbone.Modules.Messages.Domain.Ids; + +namespace Backbone.Modules.Messages.Module.Features.DomainEvents.MessageOrphaned; + +public class Handler(IMessagesRepository messagesRepository) : IDomainEventHandler +{ + public async Task Handle(MessageOrphanedDomainEvent @event) + { + await messagesRepository.Delete(MessageId.Parse(@event.MessageId), CancellationToken.None); + } +} diff --git a/Modules/Messages/src/Messages.Module/Features/DomainEvents/RelationshipStatusChanged/Handler.cs b/Modules/Messages/src/Messages.Module/Features/DomainEvents/RelationshipStatusChanged/Handler.cs new file mode 100644 index 0000000000..efea4ca8ae --- /dev/null +++ b/Modules/Messages/src/Messages.Module/Features/DomainEvents/RelationshipStatusChanged/Handler.cs @@ -0,0 +1,46 @@ +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; +using Backbone.DevelopmentKit.Identity.ValueObjects; +using Backbone.Modules.Messages.Abstractions.Persistence; +using Backbone.Modules.Messages.Domain.Entities; +using Backbone.Modules.Relationships.Contracts.DomainEvents; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; + +namespace Backbone.Modules.Messages.Module.Features.DomainEvents.RelationshipStatusChanged; + +public class Handler : IDomainEventHandler +{ + private readonly IMessagesRepository _messagesRepository; + private readonly ILogger _logger; + private readonly ApplicationConfiguration _configuration; + + public Handler(IMessagesRepository messagesRepository, IOptions options, ILogger logger) + { + _messagesRepository = messagesRepository; + _logger = logger; + _configuration = options.Value; + } + + public async Task Handle(RelationshipStatusChangedDomainEvent @event) + { + if (@event.NewStatus != RelationshipStatus.ReadyForDeletion.ToString() && @event.NewStatus != RelationshipStatus.DeletionProposed.ToString()) + { + _logger.LogTrace("Relationship status changed to {newStatus}. No Message decomposition required.", @event.NewStatus); + return; + } + + var anonymizedAddress = IdentityAddress.GetAnonymized(_configuration.DidDomainName); + var messages = (await _messagesRepository.ListWithoutContent( + Message.WasExchangedBetween(@event.Initiator, @event.Peer), CancellationToken.None)).ToList(); + + foreach (var message in messages) + { + if (@event.WasDueToIdentityDeletion) + message.AnonymizeParticipant(@event.Initiator, anonymizedAddress); + else + message.DecomposeFor(@event.Initiator, @event.Peer, anonymizedAddress); + } + + await _messagesRepository.Update(messages); + } +} diff --git a/Modules/Messages/src/Messages.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs b/Modules/Messages/src/Messages.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs new file mode 100644 index 0000000000..fcde65be85 --- /dev/null +++ b/Modules/Messages/src/Messages.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs @@ -0,0 +1,12 @@ +using Backbone.BuildingBlocks.Application.Identities; +using Backbone.DevelopmentKit.Identity.ValueObjects; + +namespace Backbone.Modules.Messages.Module.Features.Identities.DeleteIdentity; + +public class IdentityDeleter : IIdentityDeleter +{ + public Task Delete(IdentityAddress identityAddress) + { + return Task.CompletedTask; + } +} diff --git a/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Endpoint.cs b/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Endpoint.cs new file mode 100644 index 0000000000..431bfc5f54 --- /dev/null +++ b/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Endpoint.cs @@ -0,0 +1,31 @@ +using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.Modules.Messages.Module.Features.Messages.Shared; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Messages.Module.Features.Messages.GetMessage; + +internal static class Endpoint +{ + public const string ROUTE_NAME = "ConsumerApi.Messages.GetMessage"; + + public static RouteGroupBuilder MapGetMessageEndpoint(this RouteGroupBuilder group) + { + group.MapGet("{id}", Handle) + .WithName(ROUTE_NAME) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status404NotFound); + + return group; + } + + private static async Task Handle(string id, bool? noBody, IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new GetMessageQuery { Id = id, NoBody = noBody == true }, cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Messages/src/Messages.Application/Messages/Queries/GetMessage/Handler.cs b/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Handler.cs similarity index 64% rename from Modules/Messages/src/Messages.Application/Messages/Queries/GetMessage/Handler.cs rename to Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Handler.cs index afc52e14c0..60e404e1a8 100644 --- a/Modules/Messages/src/Messages.Application/Messages/Queries/GetMessage/Handler.cs +++ b/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Handler.cs @@ -1,12 +1,11 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; -using Backbone.Modules.Messages.Application.Extensions; -using Backbone.Modules.Messages.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Messages.Application.Messages.DTOs; +using Backbone.Modules.Messages.Abstractions.Persistence; +using Backbone.Modules.Messages.Module.Features.Messages.Shared; using Backbone.Modules.Messages.Domain.Ids; using MediatR; using Microsoft.Extensions.Options; -namespace Backbone.Modules.Messages.Application.Messages.Queries.GetMessage; +namespace Backbone.Modules.Messages.Module.Features.Messages.GetMessage; public class Handler : IRequestHandler { @@ -24,15 +23,8 @@ public Handler(IUserContext userContext, IMessagesRepository messagesRepository, public async Task Handle(GetMessageQuery request, CancellationToken cancellationToken) { var message = await _messagesRepository.GetWithContent(MessageId.Parse(request.Id), _userContext.GetAddress(), cancellationToken, true); - - var recipient = message.Recipients.FirstWithIdOrDefault(_userContext.GetAddress()); - - recipient?.FetchedMessage(_userContext.GetDeviceId()); - + message.Recipients.FirstWithIdOrDefault(_userContext.GetAddress())?.FetchedMessage(_userContext.GetDeviceId()); await _messagesRepository.Update(message); - - var response = new MessageDTO(message, _userContext.GetAddress(), _configuration.DidDomainName); - - return response; + return new MessageDTO(message, _userContext.GetAddress(), _configuration.DidDomainName); } } diff --git a/Modules/Messages/src/Messages.Application/Messages/Queries/GetMessage/GetMessageQuery.cs b/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Query.cs similarity index 54% rename from Modules/Messages/src/Messages.Application/Messages/Queries/GetMessage/GetMessageQuery.cs rename to Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Query.cs index ffd417809a..75a5428f79 100644 --- a/Modules/Messages/src/Messages.Application/Messages/Queries/GetMessage/GetMessageQuery.cs +++ b/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Query.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Messages.Application.Messages.DTOs; +using Backbone.Modules.Messages.Module.Features.Messages.Shared; using MediatR; -namespace Backbone.Modules.Messages.Application.Messages.Queries.GetMessage; +namespace Backbone.Modules.Messages.Module.Features.Messages.GetMessage; public class GetMessageQuery : IRequest { diff --git a/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Validator.cs b/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Validator.cs new file mode 100644 index 0000000000..0557099ddf --- /dev/null +++ b/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Validator.cs @@ -0,0 +1,13 @@ +using Backbone.BuildingBlocks.Application.Extensions; +using Backbone.Modules.Messages.Domain.Ids; +using FluentValidation; + +namespace Backbone.Modules.Messages.Module.Features.Messages.GetMessage; + +public class Validator : AbstractValidator +{ + public Validator() + { + RuleFor(query => query.Id).ValidId(); + } +} diff --git a/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Endpoint.cs b/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Endpoint.cs new file mode 100644 index 0000000000..1f9dbbb78d --- /dev/null +++ b/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Endpoint.cs @@ -0,0 +1,36 @@ +using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; +using Backbone.BuildingBlocks.Application.Pagination; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; +using Microsoft.Extensions.Options; +using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; + +namespace Backbone.Modules.Messages.Module.Features.Messages.ListMessages; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapListMessagesEndpoint(this RouteGroupBuilder group) + { + group.MapGet("", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest); + + return group; + } + + private static async Task Handle([AsParameters] PaginationFilter paginationFilter, [FromQuery] string[]? ids, IMediator mediator, + IOptions options, CancellationToken cancellationToken) + { + paginationFilter.PageSize ??= options.Value.Pagination.DefaultPageSize; + if (paginationFilter.PageSize > options.Value.Pagination.MaxPageSize) + throw new ApplicationException(GenericApplicationErrors.Validation.InvalidPageSize(options.Value.Pagination.MaxPageSize)); + + var response = await mediator.Send(new ListMessagesQuery { PaginationFilter = paginationFilter, Ids = ids ?? [] }, cancellationToken); + return EnvelopeHttpResults.Paged(response); + } +} diff --git a/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Handler.cs b/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Handler.cs new file mode 100644 index 0000000000..2c1984da74 --- /dev/null +++ b/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Handler.cs @@ -0,0 +1,34 @@ +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; +using Backbone.Modules.Messages.Abstractions.Persistence; +using Backbone.Modules.Messages.Module.Features.Messages.Shared; +using Backbone.Modules.Messages.Domain.Ids; +using MediatR; +using Microsoft.Extensions.Options; + +namespace Backbone.Modules.Messages.Module.Features.Messages.ListMessages; + +public class Handler : IRequestHandler +{ + private readonly IMessagesRepository _messagesRepository; + private readonly IUserContext _userContext; + private readonly ApplicationConfiguration _configuration; + + public Handler(IUserContext userContext, IMessagesRepository messagesRepository, IOptions options) + { + _userContext = userContext; + _messagesRepository = messagesRepository; + _configuration = options.Value; + } + + public async Task Handle(ListMessagesQuery request, CancellationToken cancellationToken) + { + var result = await _messagesRepository.ListMessagesWithContent(request.Ids.Select(MessageId.Parse), _userContext.GetAddress(), + request.PaginationFilter, cancellationToken, track: true); + + foreach (var message in result.ItemsOnPage) + message.Recipients.FirstWithIdOrDefault(_userContext.GetAddress())?.FetchedMessage(_userContext.GetDeviceId()); + + await _messagesRepository.Update(result.ItemsOnPage); + return new ListMessagesResponse(result, request.PaginationFilter, _userContext.GetAddress(), _configuration.DidDomainName); + } +} diff --git a/Modules/Messages/src/Messages.Application/Messages/Queries/ListMessages/ListMessagesQuery.cs b/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Query.cs similarity index 77% rename from Modules/Messages/src/Messages.Application/Messages/Queries/ListMessages/ListMessagesQuery.cs rename to Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Query.cs index 21d4453a10..11b0d2a263 100644 --- a/Modules/Messages/src/Messages.Application/Messages/Queries/ListMessages/ListMessagesQuery.cs +++ b/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Query.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.Pagination; using MediatR; -namespace Backbone.Modules.Messages.Application.Messages.Queries.ListMessages; +namespace Backbone.Modules.Messages.Module.Features.Messages.ListMessages; public class ListMessagesQuery : IRequest { diff --git a/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Response.cs b/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Response.cs new file mode 100644 index 0000000000..355d612654 --- /dev/null +++ b/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Response.cs @@ -0,0 +1,15 @@ +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.Persistence.Database; +using Backbone.BuildingBlocks.Application.Pagination; +using Backbone.DevelopmentKit.Identity.ValueObjects; +using Backbone.Modules.Messages.Domain.Entities; +using Backbone.Modules.Messages.Module.Features.Messages.Shared; + +namespace Backbone.Modules.Messages.Module.Features.Messages.ListMessages; + +public class ListMessagesResponse : PagedResponse +{ + public ListMessagesResponse(DbPaginationResult result, PaginationFilter previousFilter, IdentityAddress activeIdentity, string didDomainName) + : base(result.ItemsOnPage.Select(message => new MessageDTO(message, activeIdentity, didDomainName)), previousFilter, result.TotalNumberOfItems) + { + } +} diff --git a/Modules/Messages/src/Messages.Application/Messages/Queries/ListMessages/Validator.cs b/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Validator.cs similarity index 53% rename from Modules/Messages/src/Messages.Application/Messages/Queries/ListMessages/Validator.cs rename to Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Validator.cs index ebe98e2d23..421362a4c3 100644 --- a/Modules/Messages/src/Messages.Application/Messages/Queries/ListMessages/Validator.cs +++ b/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Validator.cs @@ -2,13 +2,12 @@ using Backbone.Modules.Messages.Domain.Ids; using FluentValidation; -namespace Backbone.Modules.Messages.Application.Messages.Queries.ListMessages; +namespace Backbone.Modules.Messages.Module.Features.Messages.ListMessages; -// ReSharper disable once UnusedMember.Global public class Validator : AbstractValidator { public Validator() { - RuleForEach(x => x.Ids).ValidId(); + RuleForEach(query => query.Ids).ValidId(); } } diff --git a/Modules/Messages/src/Messages.Module/Features/Messages/MessagesEndpointExtensions.cs b/Modules/Messages/src/Messages.Module/Features/Messages/MessagesEndpointExtensions.cs new file mode 100644 index 0000000000..a4d1ed831d --- /dev/null +++ b/Modules/Messages/src/Messages.Module/Features/Messages/MessagesEndpointExtensions.cs @@ -0,0 +1,22 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.Modules.Messages.Module.Features.Messages.GetMessage; +using Backbone.Modules.Messages.Module.Features.Messages.ListMessages; +using Backbone.Modules.Messages.Module.Features.Messages.SendMessage; +using Microsoft.AspNetCore.Routing; +using OpenIddict.Validation.AspNetCore; + +namespace Backbone.Modules.Messages.Module.Features.Messages; + +public static class MessagesEndpointExtensions +{ + public static IEndpointRouteBuilder MapMessagesEndpoints(this IEndpointRouteBuilder endpoints) + { + var group = endpoints.MapVersionedEndpointGroup("Messages", "Messages", 2, OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme); + + group.MapListMessagesEndpoint(); + group.MapGetMessageEndpoint(); + group.MapSendMessageEndpoint(); + + return endpoints; + } +} diff --git a/Modules/Messages/src/Messages.Application/Messages/Commands/SendMessage/SendMessageCommand.cs b/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Command.cs similarity index 90% rename from Modules/Messages/src/Messages.Application/Messages/Commands/SendMessage/SendMessageCommand.cs rename to Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Command.cs index b16fce0ca1..81d9177921 100644 --- a/Modules/Messages/src/Messages.Application/Messages/Commands/SendMessage/SendMessageCommand.cs +++ b/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Command.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.Attributes; using MediatR; -namespace Backbone.Modules.Messages.Application.Messages.Commands.SendMessage; +namespace Backbone.Modules.Messages.Module.Features.Messages.SendMessage; [ApplyQuotasForMetrics("NumberOfSentMessages")] public class SendMessageCommand : IRequest diff --git a/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Endpoint.cs b/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Endpoint.cs new file mode 100644 index 0000000000..0dec14684d --- /dev/null +++ b/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Endpoint.cs @@ -0,0 +1,28 @@ +using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.Modules.Messages.Module.Features.Messages.GetMessage; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Messages.Module.Features.Messages.SendMessage; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapSendMessageEndpoint(this RouteGroupBuilder group) + { + group.MapPost("", Handle) + .Produces>(StatusCodes.Status201Created) + .Produces(StatusCodes.Status400BadRequest); + + return group; + } + + private static async Task Handle([FromBody] SendMessageCommand request, HttpContext context, IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(request, cancellationToken); + return EnvelopeHttpResults.CreatedAtRoute(GetMessage.Endpoint.ROUTE_NAME, new { v = context.Request.RouteValues["v"], id = response.Id }, response); + } +} diff --git a/Modules/Messages/src/Messages.Application/Messages/Commands/SendMessage/Handler.cs b/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Handler.cs similarity index 60% rename from Modules/Messages/src/Messages.Application/Messages/Commands/SendMessage/Handler.cs rename to Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Handler.cs index 180b6d6263..a1df03ca2e 100644 --- a/Modules/Messages/src/Messages.Application/Messages/Commands/SendMessage/Handler.cs +++ b/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Handler.cs @@ -1,13 +1,13 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; -using Backbone.Modules.Messages.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Messages.Abstractions.Persistence; using Backbone.Modules.Messages.Domain.Entities; using Backbone.Modules.Messages.Domain.Ids; using MediatR; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; -namespace Backbone.Modules.Messages.Application.Messages.Commands.SendMessage; +namespace Backbone.Modules.Messages.Module.Features.Messages.SendMessage; public class Handler : IRequestHandler { @@ -17,12 +17,8 @@ public class Handler : IRequestHandler private readonly IMessagesRepository _messagesRepository; private readonly IRelationshipsRepository _relationshipsRepository; - public Handler( - IUserContext userContext, - IOptionsSnapshot options, - ILogger logger, - IMessagesRepository messagesRepository, - IRelationshipsRepository relationshipsRepository) + public Handler(IUserContext userContext, IOptionsSnapshot options, ILogger logger, + IMessagesRepository messagesRepository, IRelationshipsRepository relationshipsRepository) { _userContext = userContext; _logger = logger; @@ -39,7 +35,7 @@ public async Task Handle(SendMessageCommand request, Cancel _userContext.GetAddress(), _userContext.GetDeviceId(), request.Body, - request.Attachments.Select(a => new Attachment(FileId.Parse(a.Id))), + request.Attachments.Select(attachment => new Attachment(FileId.Parse(attachment.Id))), recipients); await _messagesRepository.Add(message, cancellationToken); @@ -49,38 +45,26 @@ public async Task Handle(SendMessageCommand request, Cancel private async Task> ValidateRecipients(SendMessageCommand request, CancellationToken cancellationToken) { _logger.LogTrace("Validating recipients..."); - var sender = _userContext.GetAddress(); var recipients = new List(); - var i = 0; - + var index = 0; foreach (var recipientDto in request.Recipients) { - var relationshipBetweenSenderAndRecipient = await _relationshipsRepository.GetYoungestRelationship(sender, recipientDto.Address, cancellationToken); - - if (relationshipBetweenSenderAndRecipient == null) + var relationship = await _relationshipsRepository.GetYoungestRelationship(sender, recipientDto.Address, cancellationToken); + if (relationship == null) { - _logger.LogInformation("Sending message aborted. There is no relationship between the sender and the recipient at index {recipientIndex}.", i); + _logger.LogInformation("Sending message aborted. There is no relationship between the sender and the recipient at index {recipientIndex}.", index); throw new OperationFailedException(ApplicationErrors.NoRelationshipToRecipientExists(recipientDto.Address)); } - var numberOfUnreceivedMessagesFromActiveIdentity = await _messagesRepository.CountUnreceivedMessagesFromSenderToRecipient(sender, recipientDto.Address, cancellationToken); - - relationshipBetweenSenderAndRecipient.EnsureSendingMessagesIsAllowed( - _userContext.GetAddress(), - numberOfUnreceivedMessagesFromActiveIdentity, - _configuration.MaxNumberOfUnreceivedMessagesFromOneSender); - - var recipient = new RecipientInformation(recipientDto.Address, relationshipBetweenSenderAndRecipient.Id, recipientDto.EncryptedKey); - - recipients.Add(recipient); - - i++; + var numberOfUnreceivedMessages = await _messagesRepository.CountUnreceivedMessagesFromSenderToRecipient(sender, recipientDto.Address, cancellationToken); + relationship.EnsureSendingMessagesIsAllowed(sender, numberOfUnreceivedMessages, _configuration.MaxNumberOfUnreceivedMessagesFromOneSender); + recipients.Add(new RecipientInformation(recipientDto.Address, relationship.Id, recipientDto.EncryptedKey)); + index++; } _logger.LogInformation("Successfully validated all recipients."); - return recipients; } } diff --git a/Modules/Messages/src/Messages.Application/Messages/Commands/SendMessage/SendMessageResponse.cs b/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Response.cs similarity index 78% rename from Modules/Messages/src/Messages.Application/Messages/Commands/SendMessage/SendMessageResponse.cs rename to Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Response.cs index 6a85d77ca7..2c774b5db8 100644 --- a/Modules/Messages/src/Messages.Application/Messages/Commands/SendMessage/SendMessageResponse.cs +++ b/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Response.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Messages.Domain.Entities; -namespace Backbone.Modules.Messages.Application.Messages.Commands.SendMessage; +namespace Backbone.Modules.Messages.Module.Features.Messages.SendMessage; public class SendMessageResponse { diff --git a/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Validator.cs b/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Validator.cs new file mode 100644 index 0000000000..d72c20fa75 --- /dev/null +++ b/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Validator.cs @@ -0,0 +1,45 @@ +using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; +using Backbone.BuildingBlocks.Application.Extensions; +using Backbone.BuildingBlocks.Application.FluentValidation; +using Backbone.DevelopmentKit.Identity.ValueObjects; +using Backbone.Modules.Messages.Domain.Ids; +using Backbone.Tooling.Extensions; +using FluentValidation; +using Microsoft.Extensions.Options; + +namespace Backbone.Modules.Messages.Module.Features.Messages.SendMessage; + +public class Validator : AbstractValidator +{ + public Validator(IOptions options) + { + RuleFor(message => message.Recipients) + .DetailedNotNull() + .UniqueItems(recipient => recipient.Address).WithErrorCode(GenericApplicationErrors.Validation.InvalidPropertyValue().Code) + .ForEach(recipient => recipient.DetailedNotNull().WithName("Recipient").SetValidator(new RecipientValidator())); + + RuleFor(message => message.Recipients.Count) + .InclusiveBetween(1, options.Value.MaxNumberOfMessageRecipients) + .WithErrorCode(GenericApplicationErrors.Validation.InvalidPropertyValue().Code); + RuleFor(message => message.Body).DetailedNotNull().NumberOfBytes(1, 10.Mebibytes()); + RuleFor(message => message.Attachments).ForEach(attachment => attachment.DetailedNotNull().SetValidator(new AttachmentValidator())); + RuleFor(message => message.Attachments.Count).InclusiveBetween(0, 20).WithErrorCode(GenericApplicationErrors.Validation.InvalidPropertyValue().Code); + } +} + +public class RecipientValidator : AbstractValidator +{ + public RecipientValidator() + { + RuleFor(recipient => recipient.Address).ValidId(); + RuleFor(recipient => recipient.EncryptedKey).DetailedNotNull().NumberOfBytes(30, 300); + } +} + +public class AttachmentValidator : AbstractValidator +{ + public AttachmentValidator() + { + RuleFor(attachment => attachment.Id).DetailedNotNull().Must(FileId.IsValid).WithMessage("{PropertyName} has an invalid format."); + } +} diff --git a/Modules/Messages/src/Messages.Module/Features/Messages/Shared/AttachmentDTO.cs b/Modules/Messages/src/Messages.Module/Features/Messages/Shared/AttachmentDTO.cs new file mode 100644 index 0000000000..04ae675842 --- /dev/null +++ b/Modules/Messages/src/Messages.Module/Features/Messages/Shared/AttachmentDTO.cs @@ -0,0 +1,8 @@ +using Backbone.Modules.Messages.Domain.Entities; + +namespace Backbone.Modules.Messages.Module.Features.Messages.Shared; + +public class AttachmentDTO(Attachment attachment) +{ + public string Id { get; set; } = attachment.Id; +} diff --git a/Modules/Messages/src/Messages.Application/Messages/DTOs/MessageDTO.cs b/Modules/Messages/src/Messages.Module/Features/Messages/Shared/MessageDTO.cs similarity index 70% rename from Modules/Messages/src/Messages.Application/Messages/DTOs/MessageDTO.cs rename to Modules/Messages/src/Messages.Module/Features/Messages/Shared/MessageDTO.cs index 402d94a587..a3914584ee 100644 --- a/Modules/Messages/src/Messages.Application/Messages/DTOs/MessageDTO.cs +++ b/Modules/Messages/src/Messages.Module/Features/Messages/Shared/MessageDTO.cs @@ -1,7 +1,7 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Messages.Domain.Entities; -namespace Backbone.Modules.Messages.Application.Messages.DTOs; +namespace Backbone.Modules.Messages.Module.Features.Messages.Shared; public class MessageDTO { @@ -12,7 +12,7 @@ public MessageDTO(Message message, IdentityAddress activeIdentity, string didDom CreatedBy = message.CreatedBy; CreatedByDevice = message.CreatedByDevice; Body = message.Details.Body; - Attachments = message.Attachments.Select(a => new AttachmentDTO(a)).ToList(); + Attachments = message.Attachments.Select(attachment => new AttachmentDTO(attachment)).ToList(); Recipients = MapRecipients(message, activeIdentity, didDomainName); } @@ -27,19 +27,15 @@ public MessageDTO(Message message, IdentityAddress activeIdentity, string didDom private static List MapRecipients(Message message, IdentityAddress activeIdentity, string didDomainName) { List recipients = []; - foreach (var recipient in message.Recipients) { - // recipients should only see themselves in the list of recipients if (message.CreatedBy != activeIdentity && recipient.Address != activeIdentity) continue; - var recipientInformationDTO = new RecipientInformationDTO(recipient); - recipients.Add(recipientInformationDTO); - - // a sender who has decomposed the relationship to a recipient should see the recipient as anonymized + var dto = new RecipientInformationDTO(recipient); + recipients.Add(dto); if (message.CreatedBy == activeIdentity && recipient.IsRelationshipDecomposedBySender) - recipientInformationDTO.Address = IdentityAddress.GetAnonymized(didDomainName); + dto.Address = IdentityAddress.GetAnonymized(didDomainName); } return recipients; diff --git a/Modules/Messages/src/Messages.Module/Features/Messages/Shared/RecipientInformationDTO.cs b/Modules/Messages/src/Messages.Module/Features/Messages/Shared/RecipientInformationDTO.cs new file mode 100644 index 0000000000..93c9122a33 --- /dev/null +++ b/Modules/Messages/src/Messages.Module/Features/Messages/Shared/RecipientInformationDTO.cs @@ -0,0 +1,11 @@ +using Backbone.Modules.Messages.Domain.Entities; + +namespace Backbone.Modules.Messages.Module.Features.Messages.Shared; + +public class RecipientInformationDTO(RecipientInformation recipientInformation) +{ + public string Address { get; set; } = recipientInformation.Address; + public byte[] EncryptedKey { get; set; } = recipientInformation.EncryptedKey; + public DateTime? ReceivedAt { get; set; } = recipientInformation.ReceivedAt; + public string? ReceivedByDevice { get; set; } = recipientInformation.ReceivedByDevice?.Value; +} diff --git a/Modules/Messages/src/Messages.Module/Features/Messages/Shared/RecipientInformationExtensions.cs b/Modules/Messages/src/Messages.Module/Features/Messages/Shared/RecipientInformationExtensions.cs new file mode 100644 index 0000000000..8fd14bf36c --- /dev/null +++ b/Modules/Messages/src/Messages.Module/Features/Messages/Shared/RecipientInformationExtensions.cs @@ -0,0 +1,12 @@ +using Backbone.DevelopmentKit.Identity.ValueObjects; +using Backbone.Modules.Messages.Domain.Entities; + +namespace Backbone.Modules.Messages.Module.Features.Messages.Shared; + +public static class RecipientInformationExtensions +{ + public static RecipientInformation? FirstWithIdOrDefault(this IReadOnlyCollection recipients, IdentityAddress address) + { + return recipients.FirstOrDefault(recipient => recipient.Address == address); + } +} diff --git a/Modules/Messages/src/Messages.Module/Messages.Module.csproj b/Modules/Messages/src/Messages.Module/Messages.Module.csproj index b5220cc302..072cb6f87c 100644 --- a/Modules/Messages/src/Messages.Module/Messages.Module.csproj +++ b/Modules/Messages/src/Messages.Module/Messages.Module.csproj @@ -3,7 +3,8 @@ - + + @@ -11,6 +12,7 @@ + diff --git a/Modules/Messages/src/Messages.Module/MessagesEventBusExtensions.cs b/Modules/Messages/src/Messages.Module/MessagesEventBusExtensions.cs new file mode 100644 index 0000000000..a3344380c5 --- /dev/null +++ b/Modules/Messages/src/Messages.Module/MessagesEventBusExtensions.cs @@ -0,0 +1,17 @@ +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; +using Backbone.Modules.Messages.Contracts.DomainEvents; +using Backbone.Modules.Messages.Module.Features.DomainEvents.MessageOrphaned; +using Backbone.Modules.Relationships.Contracts.DomainEvents; +using RelationshipStatusChangedHandler = Backbone.Modules.Messages.Module.Features.DomainEvents.RelationshipStatusChanged.Handler; + +namespace Backbone.Modules.Messages.Module; + +internal static class MessagesEventBusExtensions +{ + public static async Task AddMessagesDomainEventSubscriptions(this IEventBus eventBus) + { + await Task.WhenAll( + eventBus.Subscribe(), + eventBus.Subscribe()); + } +} diff --git a/Modules/Messages/src/Messages.Module/MessagesModule.cs b/Modules/Messages/src/Messages.Module/MessagesModule.cs index d98af535bb..0ae546b7fd 100644 --- a/Modules/Messages/src/Messages.Module/MessagesModule.cs +++ b/Modules/Messages/src/Messages.Module/MessagesModule.cs @@ -1,8 +1,6 @@ using Backbone.BuildingBlocks.API.Extensions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Module; -using Backbone.Modules.Messages.Application; -using Backbone.Modules.Messages.Application.Extensions; using Backbone.Modules.Messages.Infrastructure; using Backbone.Modules.Messages.Infrastructure.Persistence; using Microsoft.Extensions.Configuration; diff --git a/Modules/Messages/src/Messages.Module/packages.lock.json b/Modules/Messages/src/Messages.Module/packages.lock.json index c2a39bbb96..6ad06a17a3 100644 --- a/Modules/Messages/src/Messages.Module/packages.lock.json +++ b/Modules/Messages/src/Messages.Module/packages.lock.json @@ -2,6 +2,16 @@ "version": 2, "dependencies": { "net10.0": { + "FluentValidation.DependencyInjectionExtensions": { + "type": "Direct", + "requested": "[12.1.1, 12.1.1]", + "resolved": "12.1.1", + "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", + "dependencies": { + "FluentValidation": "12.1.1", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" + } + }, "ReHackt.Extensions.Options.Validation": { "type": "Direct", "requested": "[10.0.1, 10.0.1]", @@ -1274,15 +1284,13 @@ "Polly": "[8.7.0, 8.7.0]" } }, - "Backbone.Modules.Messages.Application": { + "Backbone.Modules.Messages.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Domain": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.DevelopmentKit.Identity": "[1.0.0, )", + "Backbone.Modules.Messages.Domain": "[1.0.0, )" } }, "Backbone.Modules.Messages.Contracts": { @@ -1304,7 +1312,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Messages.Application": "[1.0.0, )", + "Backbone.Modules.Messages.Abstractions": "[1.0.0, )", "Backbone.Modules.Messages.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1489,16 +1497,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", diff --git a/Modules/Messages/test/Messages.Application.Tests/Messages.Application.Tests.csproj b/Modules/Messages/test/Messages.Module.Tests/Messages.Module.Tests.csproj similarity index 87% rename from Modules/Messages/test/Messages.Application.Tests/Messages.Application.Tests.csproj rename to Modules/Messages/test/Messages.Module.Tests/Messages.Module.Tests.csproj index 305f6a03cb..e6e46aeb0d 100644 --- a/Modules/Messages/test/Messages.Application.Tests/Messages.Application.Tests.csproj +++ b/Modules/Messages/test/Messages.Module.Tests/Messages.Module.Tests.csproj @@ -15,7 +15,7 @@ - + diff --git a/Modules/Messages/test/Messages.Application.Tests/TestHelpers/TestData.cs b/Modules/Messages/test/Messages.Module.Tests/TestHelpers/TestData.cs similarity index 51% rename from Modules/Messages/test/Messages.Application.Tests/TestHelpers/TestData.cs rename to Modules/Messages/test/Messages.Module.Tests/TestHelpers/TestData.cs index 589a9c26a4..fb939efc95 100644 --- a/Modules/Messages/test/Messages.Application.Tests/TestHelpers/TestData.cs +++ b/Modules/Messages/test/Messages.Module.Tests/TestHelpers/TestData.cs @@ -1,21 +1,13 @@ -using Backbone.DevelopmentKit.Identity.ValueObjects; +using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Messages.Domain.Entities; using Backbone.Modules.Messages.Domain.Ids; -namespace Backbone.Modules.Messages.Application.Tests.TestHelpers; +namespace Backbone.Modules.Messages.Module.Tests.TestHelpers; public static class TestData { - public static Message CreateMessageWithOneRecipient(IdentityAddress? senderAddress = null, IdentityAddress? recipientAddress = null) - { - senderAddress ??= CreateRandomIdentityAddress(); - recipientAddress ??= CreateRandomIdentityAddress(); - - var recipient = new RecipientInformation(recipientAddress, RelationshipId.New(), []); - return new Message(senderAddress, CreateRandomDeviceId(), [], [], [recipient]); - } - - public static Message CreateMessageWithTwoRecipients(IdentityAddress? senderAddress = null, IdentityAddress? recipient1Address = null, IdentityAddress? recipient2Address = null) + public static Message CreateMessageWithTwoRecipients(IdentityAddress? senderAddress = null, IdentityAddress? recipient1Address = null, + IdentityAddress? recipient2Address = null) { senderAddress ??= CreateRandomIdentityAddress(); recipient1Address ??= CreateRandomIdentityAddress(); diff --git a/Modules/Messages/test/Messages.Application.Tests/Tests/Messages/DTOs/MessageDTOTests.cs b/Modules/Messages/test/Messages.Module.Tests/Tests/Messages/Shared/MessageDTOTests.cs similarity index 80% rename from Modules/Messages/test/Messages.Application.Tests/Tests/Messages/DTOs/MessageDTOTests.cs rename to Modules/Messages/test/Messages.Module.Tests/Tests/Messages/Shared/MessageDTOTests.cs index 4dceb9e127..1e20bc61bf 100644 --- a/Modules/Messages/test/Messages.Application.Tests/Tests/Messages/DTOs/MessageDTOTests.cs +++ b/Modules/Messages/test/Messages.Module.Tests/Tests/Messages/Shared/MessageDTOTests.cs @@ -1,10 +1,10 @@ -using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Messages.Application.Messages.DTOs; -using Backbone.Modules.Messages.Application.Tests.TestHelpers; +using Backbone.DevelopmentKit.Identity.ValueObjects; +using Backbone.Modules.Messages.Module.Features.Messages.Shared; +using Backbone.Modules.Messages.Module.Tests.TestHelpers; using Backbone.UnitTestTools.Extensions; using Backbone.UnitTestTools.Shouldly.Extensions; -namespace Backbone.Modules.Messages.Application.Tests.Tests.Messages.DTOs; +namespace Backbone.Modules.Messages.Module.Tests.Tests.Messages.Shared; public class MessageDTOTests : AbstractTestsBase { @@ -14,13 +14,9 @@ public class MessageDTOTests : AbstractTestsBase [Fact] public void Recipients_only_see_themselves_in_the_list_of_recipients() { - // Arrange var message = TestData.CreateMessageWithTwoRecipients(); - - // Act var messageDTO = new MessageDTO(message, message.Recipients.First().Address, DID_DOMAIN_NAME); - // Assert messageDTO.Recipients.ShouldHaveCount(1); messageDTO.Recipients.First().Address.ShouldBe(message.Recipients.First().Address); } @@ -28,13 +24,9 @@ public void Recipients_only_see_themselves_in_the_list_of_recipients() [Fact] public void Sender_sees_all_recipients() { - // Arrange var message = TestData.CreateMessageWithTwoRecipients(); - - // Act var messageDTO = new MessageDTO(message, message.CreatedBy, DID_DOMAIN_NAME); - // Assert messageDTO.Recipients.ShouldHaveCount(2); messageDTO.Recipients.First().Address.ShouldBe(message.Recipients.First().Address); messageDTO.Recipients.Second().Address.ShouldBe(message.Recipients.Second().Address); @@ -43,14 +35,11 @@ public void Sender_sees_all_recipients() [Fact] public void A_sender_who_has_decomposed_the_relationship_to_a_recipient_sees_the_recipient_as_anonymized() { - // Arrange var message = TestData.CreateMessageWithTwoRecipients(); message.DecomposeFor(message.CreatedBy, message.Recipients.First().Address, ANONYMIZED_ADDRESS); - // Act var messageDTO = new MessageDTO(message, message.CreatedBy, DID_DOMAIN_NAME); - // Assert messageDTO.Recipients.First().Address.ShouldBe(ANONYMIZED_ADDRESS); } } diff --git a/Modules/Messages/test/Messages.Application.Tests/packages.lock.json b/Modules/Messages/test/Messages.Module.Tests/packages.lock.json similarity index 58% rename from Modules/Messages/test/Messages.Application.Tests/packages.lock.json rename to Modules/Messages/test/Messages.Module.Tests/packages.lock.json index e41dbd9b7c..7181c571b7 100644 --- a/Modules/Messages/test/Messages.Application.Tests/packages.lock.json +++ b/Modules/Messages/test/Messages.Module.Tests/packages.lock.json @@ -38,6 +38,22 @@ "xunit.v3.core.mtp-v2": "[3.2.2]" } }, + "Asp.Versioning.Abstractions": { + "type": "Transitive", + "resolved": "10.1.0", + "contentHash": "RwdgC5O0baZ4pt30pAKKPQHq2CV4unBKA4HWoTeu7NY9ZwXM0dWYGf1Ipc5GK0eFBe9cMeqz4pGpPncMz4/ZNQ==", + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.0" + } + }, + "Asp.Versioning.Http": { + "type": "Transitive", + "resolved": "10.0.1", + "contentHash": "g0ayV/9ho3tGgooC6eF5p1063I1WzlxFJDYQrigcGnW+mLvui6eXrcW5hzTHhQREroUR3ZwXQrIN2SAIoi+KDw==", + "dependencies": { + "Asp.Versioning.Abstractions": "10.1.0" + } + }, "AWSSDK.Core": { "type": "Transitive", "resolved": "4.0.100.9", @@ -66,16 +82,6 @@ "System.Memory.Data": "1.0.2" } }, - "Azure.Identity": { - "type": "Transitive", - "resolved": "1.17.1", - "contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Microsoft.Identity.Client": "4.78.0", - "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" - } - }, "Azure.Storage.Common": { "type": "Transitive", "resolved": "12.28.0", @@ -227,6 +233,11 @@ "Grpc.Core.Api": "2.71.0" } }, + "libsodium": { + "type": "Transitive", + "resolved": "1.0.22", + "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" + }, "MedallionTopologicalSort": { "type": "Transitive", "resolved": "1.0.0", @@ -250,6 +261,25 @@ "Microsoft.AspNetCore.Cryptography.Internal": "10.0.10" } }, + "Microsoft.AspNetCore.DataProtection": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "5sfrNrBShTlJeXvWNxjPS7ilLY4H6MICZPMZr/2vjoDoBH5Z8sQYJwbhulqfXh4yIpxIto0TcmOQHOElvpq+iQ==", + "dependencies": { + "Microsoft.AspNetCore.Cryptography.Internal": "10.0.10", + "Microsoft.AspNetCore.DataProtection.Abstractions": "10.0.10", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", + "Microsoft.Extensions.Logging.Abstractions": "10.0.10", + "Microsoft.Extensions.Options": "10.0.10", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "Microsoft.AspNetCore.DataProtection.Abstractions": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "q2RNx0N/qrsU+JgbPE78I9pu5ekwguitAFVoeE1NCgxtkUTguvf7oTzBnn42zSQxuugJ4fmj0RSarob8Rvorrg==" + }, "Microsoft.Azure.Amqp": { "type": "Transitive", "resolved": "2.7.0", @@ -260,6 +290,11 @@ "resolved": "10.0.9", "contentHash": "Aq7M8lG6BrHeatqKqncVm9m55ec34k6nnfPRLe/PvGg+b/pAsRM2ejofeKmCLjTXMa+5NGXm382f8CG/D5WDow==" }, + "Microsoft.Bcl.Cryptography": { + "type": "Transitive", + "resolved": "10.0.2", + "contentHash": "LG9Yll3B5aNpxv0+D47g6LiOiKBIlodhcHdQwcYzo8VeexFLGqx5ymetmA2aBRyo9cCcWsQWrFsdbsr8LvmWDw==" + }, "Microsoft.CodeCoverage": { "type": "Transitive", "resolved": "18.8.1", @@ -267,22 +302,34 @@ }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, + "Microsoft.Data.SqlClient.Extensions.Abstractions": { + "type": "Transitive", + "resolved": "7.0.2", + "contentHash": "Zx7z61fG2Nc6LdDn4jA7b5Aj1ABrljkOPRE31RvVUdjF6IgbG60leDUhMCafsnWFgaheiK3iqpLe+kbf5Z5L8Q==", + "dependencies": { + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)" + } + }, + "Microsoft.Data.SqlClient.Internal.Logging": { + "type": "Transitive", + "resolved": "7.0.2", + "contentHash": "iqgYBbGSVy/DIYWjzmQOa964Kn4rs4wW5vg2IamqVK0fQqfTiILVR5hMK27XWqoyONtAZs+VxH354cPJBtSnbg==" + }, "Microsoft.Data.SqlClient.SNI.runtime": { "type": "Transitive", "resolved": "6.0.2", @@ -329,6 +376,21 @@ "Microsoft.SqlServer.Types": "160.1000.6" } }, + "Microsoft.Extensions.AmbientMetadata.Application": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "/FYCIyhRLrDwIg29tB/21/Rp7XMaEP/gWR5Cxyi4GgWcN/v/XXUpU52yhQux0s2SQy1Z0C1wnhptCMvLaaT45Q==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.10", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10" + } + }, + "Microsoft.Extensions.ApiDescription.Server": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "NCWCGiwRwje8773yzPQhvucYnnfeR+ZoB1VRIrIMp4uaeUNw7jvEPHij3HIbwCDuNCrNcphA00KSAR9yD9qmbg==" + }, "Microsoft.Extensions.Caching.Abstractions": { "type": "Transitive", "resolved": "10.0.10", @@ -399,6 +461,14 @@ "Microsoft.Extensions.FileProviders.Physical": "10.0.10" } }, + "Microsoft.Extensions.DependencyInjection.AutoActivation": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "LXwOAsnrflu2ln+Bxj7y3Zc/Pn4HquCCRzW81oOIuRsM8F75TxwA/ZpSFZ5E1+YkVpndz7BcHY4ThFSjjA4vbQ==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10" + } + }, "Microsoft.Extensions.DependencyModel": { "type": "Transitive", "resolved": "10.0.10", @@ -423,6 +493,14 @@ "Microsoft.Extensions.Options": "10.0.10" } }, + "Microsoft.Extensions.Diagnostics.ExceptionSummarization": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "tXmzwQeWgiycaLOtvSFnz0TPkJxXTyZrkwSVPTr83FgSiMj3BD/8eIbvrpGi5rzc2AgfKyegKo1ntJlJFey1Zg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10" + } + }, "Microsoft.Extensions.Diagnostics.HealthChecks": { "type": "Transitive", "resolved": "10.0.10", @@ -462,6 +540,48 @@ "resolved": "10.0.10", "contentHash": "jSOCVxEwCd4Aq925kJVz1kSO1EpX2OHYKL04qVREXkDU7Ce3pVDdHPYm+fEy8y/th2kJf/DAstRHpJAqoNWP8w==" }, + "Microsoft.Extensions.Http": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "DuEBLw2y7ZBfilnaJtlge8f2M49932v43t7j1InceXVjcZzxNrSEkobYXdgZkXuPFnFbKcbWpAS+fZgYEW1BhA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", + "Microsoft.Extensions.Diagnostics": "10.0.10", + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.Extensions.Logging.Abstractions": "10.0.10", + "Microsoft.Extensions.Options": "10.0.10" + } + }, + "Microsoft.Extensions.Http.Diagnostics": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "2pYnolFkigH7N6A5WHdGx93iZ8dIhrBnu4ZkjvB6RwbHzYmIy/iXVe12pdrViNDdeBSmKZ5FA9YP/xhwLT7q7A==", + "dependencies": { + "Microsoft.Extensions.Http": "10.0.10", + "Microsoft.Extensions.Telemetry": "10.8.0" + } + }, + "Microsoft.Extensions.Http.Polly": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "ceKyX9V/C+mtapMfXQ0ClKRkxDHAW2AAJoDgTcsh7UdOteCQKB5wRTFgHJ82Lh/3O+UlPA47LRGEZkRxtz/lCA==", + "dependencies": { + "Microsoft.Extensions.Http": "10.0.10", + "Polly": "7.2.4", + "Polly.Extensions.Http": "3.0.0" + } + }, + "Microsoft.Extensions.Http.Resilience": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "XtbZyYVxSNn1Aj2Z0PA8yauS12hPszTWDZ3GtZ5Vww7Ai3d8Pm841jMBnTvoTf1t9mRf3eSB38V5KUWxH6/4oQ==", + "dependencies": { + "Microsoft.Extensions.Http.Diagnostics": "10.8.0", + "Microsoft.Extensions.ObjectPool": "10.0.10", + "Microsoft.Extensions.Resilience": "10.8.0" + } + }, "Microsoft.Extensions.Logging.Configuration": { "type": "Transitive", "resolved": "10.0.10", @@ -545,6 +665,31 @@ "resolved": "10.0.10", "contentHash": "5wu/GrYVd8mG2DVUw3vFJzF+O336TyTGg/Kmcgw9bfwYhCoFiV5lR5QeEmKecJyrW4W54nMfD3p3589E8a7czQ==" }, + "Microsoft.Extensions.Resilience": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "RH/gv0ZcCnQ3d30lxb8+T2o661TwZq/K5eMwp488goQLX1QYqWN3i8L8XlN9DhrqP2Zcf0EtsWaKpJO3yHDUTw==", + "dependencies": { + "Microsoft.Extensions.Diagnostics": "10.0.10", + "Microsoft.Extensions.Diagnostics.ExceptionSummarization": "10.8.0", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10", + "Microsoft.Extensions.Telemetry.Abstractions": "10.8.0", + "Polly.Extensions": "8.4.2", + "Polly.RateLimiting": "8.4.2" + } + }, + "Microsoft.Extensions.Telemetry": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "IIWjDZguUJt6yNld9J4V88xuOUzpC76wBwfnRJLRmacmyTTl9jA8+KP5PuHPi7CKz/Vk/q+lQYmobiopuzapzA==", + "dependencies": { + "Microsoft.Extensions.AmbientMetadata.Application": "10.8.0", + "Microsoft.Extensions.DependencyInjection.AutoActivation": "10.8.0", + "Microsoft.Extensions.Logging.Configuration": "10.0.10", + "Microsoft.Extensions.ObjectPool": "10.0.10", + "Microsoft.Extensions.Telemetry.Abstractions": "10.8.0" + } + }, "Microsoft.Extensions.Telemetry.Abstractions": { "type": "Transitive", "resolved": "10.8.0", @@ -575,50 +720,57 @@ }, "Microsoft.IdentityModel.Abstractions": { "type": "Transitive", - "resolved": "8.14.0", - "contentHash": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==" + "resolved": "8.19.2", + "contentHash": "HJbo/lnSfNHUfphPRT910poQc4T2/9+8svFLvzuaYHGAOJ2Tu+oEDqpX0BVP3BJ4OuUM1kylEKyaiX2fCAK3Cw==" }, "Microsoft.IdentityModel.JsonWebTokens": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "3Izi75UCUssvo8LPx3OVnEeZay58qaFicrtSnbtUt7q8qQi0gy46gh4V8VUTkMVMKXV6VMyjBVmeNNgeCUJuIw==", + "resolved": "8.19.2", + "contentHash": "ui3fuBT4fs8kdKfBthI4NzLYIBIneEVS8UrL1JVBzAn80UiKmngBBi0BEByE7n/9c+EElcfFlCMFFTqpkBSLNA==", "dependencies": { - "Microsoft.IdentityModel.Tokens": "7.7.1" + "Microsoft.IdentityModel.Tokens": "8.19.2" } }, "Microsoft.IdentityModel.Logging": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "BZNgSq/o8gsKExdYoBKPR65fdsxW0cTF8PsdqB8y011AGUJJW300S/ZIsEUD0+sOmGc003Gwv3FYbjrVjvsLNQ==", + "resolved": "8.19.2", + "contentHash": "r5YLDIxGOnkVJHrqXv/iD1FM1CgGrQOdriXuvuWvTPmKbnGANhEysq9XKmN6IHjf2a+9bAGEpnoRBsAQlvJU5w==", "dependencies": { - "Microsoft.IdentityModel.Abstractions": "7.7.1" + "Microsoft.IdentityModel.Abstractions": "8.19.2" } }, "Microsoft.IdentityModel.Protocols": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "h+fHHBGokepmCX+QZXJk4Ij8OApCb2n2ktoDkNX5CXteXsOxTHMNgjPGpAwdJMFvAL7TtGarUnk3o97NmBq2QQ==", + "resolved": "8.19.2", + "contentHash": "sGxSsSrZXNmca6D+jHH2rVRyo2nNRd/g4H9CFbPmLLq0xgoH1U0orLWE5minfijw7+zq49tBs7txenbfAErRoQ==", "dependencies": { - "Microsoft.IdentityModel.Tokens": "7.7.1" + "Microsoft.IdentityModel.Tokens": "8.19.2" } }, "Microsoft.IdentityModel.Protocols.OpenIdConnect": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "yT2Hdj8LpPbcT9C9KlLVxXl09C8zjFaVSaApdOwuecMuoV4s6Sof/mnTDz/+F/lILPIBvrWugR9CC7iRVZgbfQ==", + "resolved": "8.16.0", + "contentHash": "h4yVXyJsEBBX5lg2G5ftMsi5JzcNEGAzrNphA6DQ6eOd8P0s+cDCOyPwVTYLePZvJL5unbPvYIvzrbTXzFjXnQ==", "dependencies": { - "Microsoft.IdentityModel.Protocols": "7.7.1", - "System.IdentityModel.Tokens.Jwt": "7.7.1" + "Microsoft.IdentityModel.Protocols": "8.16.0", + "System.IdentityModel.Tokens.Jwt": "8.16.0" } }, "Microsoft.IdentityModel.Tokens": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "fQ0VVCba75lknUHGldi3iTKAYUQqbzp1Un8+d9cm9nON0Gs8NAkXddNg8iaUB0qi/ybtAmNWizTR4avdkCJ9pQ==", + "resolved": "8.19.2", + "contentHash": "GtPC1S02uH1gOO4fQ+zRysIicKmEXaYFP8PIkdJYXqMyruYhopre4ozVHp0XiDSA0+GJvOZH9prxCPvgBMg4Ww==", "dependencies": { - "Microsoft.IdentityModel.Logging": "7.7.1" + "Microsoft.Bcl.Cryptography": "10.0.2", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.IdentityModel.Logging": "8.19.2" } }, + "Microsoft.OpenApi": { + "type": "Transitive", + "resolved": "2.7.5", + "contentHash": "0FA67RSnRM4tcBKqiqVu/HPdZ9+QOKbmeRjxRUGTCjPU4C0bmUhd97Dso7Yild5P7nOV6GxJ2xrK0Kv/O9xp0w==" + }, "Microsoft.SqlServer.Server": { "type": "Transitive", "resolved": "1.0.0", @@ -706,11 +858,257 @@ "Microsoft.Extensions.Logging.Abstractions": "10.0.0" } }, + "OpenIddict": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "Dih/QGs3ptgvsioSOdvn/6KMy3el5ImMimp/9SV9VX/FqTT6CxBOGoxaukfJeVqgcxQrgge1vQvFp3kWtgOKGg==", + "dependencies": { + "OpenIddict.Abstractions": "7.6.0", + "OpenIddict.Client": "7.6.0", + "OpenIddict.Client.SystemIntegration": "7.6.0", + "OpenIddict.Client.SystemNetHttp": "7.6.0", + "OpenIddict.Client.WebIntegration": "7.6.0", + "OpenIddict.Core": "7.6.0", + "OpenIddict.Server": "7.6.0", + "OpenIddict.Validation": "7.6.0", + "OpenIddict.Validation.ServerIntegration": "7.6.0", + "OpenIddict.Validation.SystemNetHttp": "7.6.0" + } + }, + "OpenIddict.Abstractions": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "Fp2MUvm6wwsqk6+ieUM/3MTMlbCL1zwSXixM0xC22FgKcl5EQB7E0vV38IRI/rSF8UGgvC/AOjMOF6FoFyks8g==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", + "Microsoft.Extensions.Primitives": "10.0.10", + "Microsoft.IdentityModel.Tokens": "8.19.2" + } + }, + "OpenIddict.Client": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "X+Sg1wRKeVOeayJuZ4/0M74zXRENvXOAl2JRPF4MaEOoS9Pj6WCWMLriWS0wwEC1ODxQmLaG3tYZfcdC9hU40g==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.IdentityModel.JsonWebTokens": "8.19.2", + "Microsoft.IdentityModel.Protocols": "8.19.2", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.Client.AspNetCore": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "XjEj75mTkvMn1sj4jONWLTRK6KzeY/Hou8218nwLnJnqYmKJ1th7UDfadNTb530KSC+WPLxfvi7grzIv0xzebw==", + "dependencies": { + "OpenIddict.Client": "7.6.0" + } + }, + "OpenIddict.Client.DataProtection": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ZVhuFSzPbAaZkiRRrr77oyJnciWhytPnTZ1ByaCGfDx1b977crbcJww2asfkMpgNzcbWWAR6SgcS05hklsQflw==", + "dependencies": { + "Microsoft.AspNetCore.DataProtection": "10.0.10", + "OpenIddict.Client": "7.6.0", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "OpenIddict.Client.SystemIntegration": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "yqnyQH6CG46+y2Rp4UcIOXNcWgDvITW43PULI9sr6xYCS34J/kO6GU6fhwOGUfUJjRdOis3Xj00WwUZxZUQ5ZQ==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", + "OpenIddict.Client": "7.6.0" + } + }, + "OpenIddict.Client.SystemNetHttp": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "HsiL7rCRCFd7D1uvi6+HLmlkw9ykbLsEJ1GJMttuLB3/C8/LcqX+wHxr1W/GXl2YXhleNMW21I5AeVtGnfd9tg==", + "dependencies": { + "Microsoft.Extensions.Http.Polly": "10.0.10", + "Microsoft.Extensions.Http.Resilience": "10.8.0", + "OpenIddict.Client": "7.6.0" + } + }, + "OpenIddict.Client.WebIntegration": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "vJzIkHZwjB8vp6Hhxa8s9ruh/L+ZgpJUszGVP+kQQoqDQ8yZygbl0xWKuAHQ4OCIk3FTeSib9xH8uetm47YPgg==", + "dependencies": { + "OpenIddict.Client": "7.6.0", + "OpenIddict.Client.SystemNetHttp": "7.6.0" + } + }, + "OpenIddict.EntityFrameworkCore.Models": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "DrWB0dLfsg3mZhWABAlqSZKXin4Q4Pn8V4S7/1JxP5T/7Ncl0y45rM9L2EWv/zdydaiTOFKi4jRDBZAgBxUjaQ==" + }, + "OpenIddict.Server": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "0c7wlRYcP2Smgjp3PWyyojZ972H26otp6irW/WAFEbg4ZylcUvtlw0lkrCr/K8s5lAnYZwrpyzguwrJhXGKPVg==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.IdentityModel.JsonWebTokens": "8.19.2", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.Server.AspNetCore": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "m2Hk2R4gaTlEYBvNHz2fvIr38p1agiR2nW2gi5WMgSByFHxeEK5uhxqVGdSB2kEHRtp9kza/zBWBgIM4TdcVqw==", + "dependencies": { + "OpenIddict.Server": "7.6.0" + } + }, + "OpenIddict.Server.DataProtection": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ScGEt6uNuk2MZ/6DzVAMi/QegZulkvYKPRMrRu5/8/uI8P5o5XbEhEvancFx9YmBHL1uGE8SIByfTfxJx8kefA==", + "dependencies": { + "Microsoft.AspNetCore.DataProtection": "10.0.10", + "OpenIddict.Server": "7.6.0", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "OpenIddict.Validation": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ovzLQJ31uWZpgLdRVuD9Gmu8wxvhvbXW32MFTglFblhfqRwj/hMcEGOo8hdl+ir3QpDr9NUDAORA+v3S7xc6IA==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.IdentityModel.JsonWebTokens": "8.19.2", + "Microsoft.IdentityModel.Protocols": "8.19.2", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.Validation.AspNetCore": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "oby5/Ymdxd+g1TGtyTGrcK5J3/NSI80aw2CJgULwwIxraiCjiIfexrBjCxkPchWqPNFe6aAdGJ/Jz6amHNfrzg==", + "dependencies": { + "OpenIddict.Validation": "7.6.0" + } + }, + "OpenIddict.Validation.DataProtection": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ckC2xcPeJ/kLSyJXNOmpmFLnA1qM6zC8RR5d2pUtoToA6caMikebkL3NmRjBgxBRVvFmi7x9lMJ7+YmrI+uAlg==", + "dependencies": { + "Microsoft.AspNetCore.DataProtection": "10.0.10", + "OpenIddict.Validation": "7.6.0", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "OpenIddict.Validation.ServerIntegration": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "0bHhKsMV45UMPM5Phh51+g/tMUJNRzOWe6p/5opKeMQV8XoO3y3J9o/ZbfZ0j4qTTbQ7pqzEKSZaS4cGs0B3nQ==", + "dependencies": { + "OpenIddict.Server": "7.6.0", + "OpenIddict.Validation": "7.6.0" + } + }, + "OpenIddict.Validation.SystemNetHttp": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "N3MHlVaik22apnhxCTsqP6TjwRB/h874+5ks/m1+wKmOWqMyJ5UjIaZCvUOrDSMtDiEVted8qkjEJRzjAe0rGQ==", + "dependencies": { + "Microsoft.Extensions.Http.Polly": "10.0.10", + "Microsoft.Extensions.Http.Resilience": "10.8.0", + "OpenIddict.Validation": "7.6.0" + } + }, + "OpenTelemetry": { + "type": "Transitive", + "resolved": "1.18.0", + "contentHash": "13AKxycK+olOLe061MjliPTNBR/DUkjyRr0b9zwUhKyMjFS8lXS7G31R85rkbM55up2YFmdykWdAw2giBDJpiQ==", + "dependencies": { + "Microsoft.Extensions.Configuration.EnvironmentVariables": "10.0.0", + "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Configuration": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "1.18.0" + } + }, + "OpenTelemetry.Api.ProviderBuilderExtensions": { + "type": "Transitive", + "resolved": "1.18.0", + "contentHash": "io6A6PJFp3vIObRGf6oPjdHsdglkinXt/0SpTDJHrVnsLxUtOzwh/QwTsnhBJ43wJ6QcGMkyNzsSSY8XEB1Q5Q==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "OpenTelemetry.Api": "1.18.0" + } + }, "Polly.Core": { "type": "Transitive", "resolved": "8.7.0", "contentHash": "BS2t+nsBer16PIebCEPNBK5fgMisADQyRCd7K+BgkMWpFmSaiYE+rVVNpFhGRqUkJmNSLmw0uCNzHHWfgml28Q==" }, + "Polly.Extensions": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "GZ9vRVmR0jV2JtZavt+pGUsQ1O1cuRKG7R7VOZI6ZDy9y6RNPvRvXK1tuS4ffUrv8L0FTea59oEuQzgS0R7zSA==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "Polly.Core": "8.4.2" + } + }, + "Polly.Extensions.Http": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "drrG+hB3pYFY7w1c3BD+lSGYvH2oIclH8GRSehgfyP5kjnFnHKQuuBhuHLv+PWyFuaTDyk/vfRpnxOzd11+J8g==", + "dependencies": { + "Polly": "7.1.0" + } + }, + "Polly.RateLimiting": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "ehTImQ/eUyO07VYW2WvwSmU9rRH200SKJ/3jku9rOkyWE0A2JxNFmAVms8dSn49QLSjmjFRRSgfNyOgr/2PSmA==", + "dependencies": { + "Polly.Core": "8.4.2", + "System.Threading.RateLimiting": "8.0.0" + } + }, + "runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "A8v6PGmk+UGbfWo5Ixup0lPM4swuSwOiayJExZwKIOjTlFFQIsu3QnDXECosBEyrWSPryxBVrdqtJyhK3BaupQ==", + "dependencies": { + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": "4.4.0" + } + }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, + "Serilog.Extensions.Logging": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "vx0kABKl2dWbBhhqAfTOk53/i8aV/5VaT3a6il9gn72Wqs2pM7EK2OB6No6xdqK2IaY6Zf9gdjLuK9BVa2rT+Q==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.0", + "Serilog": "4.2.0" + } + }, "SQLitePCLRaw.bundle_e_sqlite3": { "type": "Transitive", "resolved": "2.1.11", @@ -733,6 +1131,27 @@ "SQLitePCLRaw.core": "2.1.11" } }, + "Swashbuckle.AspNetCore.Swagger": { + "type": "Transitive", + "resolved": "10.2.3", + "contentHash": "1jUUs3WQnrS0FUtaZPLSy1yYMEwS1zlvDmvQ2/eldPHUANX0LJSLVZecCMgSMdeGiRqeaRrIXLtSz++TCiTMww==", + "dependencies": { + "Microsoft.OpenApi": "2.7.5" + } + }, + "Swashbuckle.AspNetCore.SwaggerGen": { + "type": "Transitive", + "resolved": "10.2.3", + "contentHash": "y7t4coDRAeFYChmvlMRiH2OjbiRrm9AVIDgt17fQfs3x9PVAI5PiwWYOhg+4F13R4Q36WDc9lqfoOnNa3tNbGg==", + "dependencies": { + "Swashbuckle.AspNetCore.Swagger": "10.2.3" + } + }, + "Swashbuckle.AspNetCore.SwaggerUI": { + "type": "Transitive", + "resolved": "10.2.3", + "contentHash": "nthWONRs/FJ4yyG206g1cC52WEG8EqrjuMWjGdR+5XG7lbjFto6NqcI9EMICgVFom/UivIjUVwI76ZHbHwTPfQ==" + }, "System.ClientModel": { "type": "Transitive", "resolved": "1.14.0", @@ -751,11 +1170,11 @@ }, "System.Configuration.ConfigurationManager": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "vPinosRgEk1CGjohbv0pDuz6gPprkWo5xvBTjOJjks5JOgOEWvPndq5NngGxiTcBcy1+k9GwzZ1c3Bp2fU5ezw==", + "resolved": "9.0.13", + "contentHash": "GbBrJq9S/gYpHzm7Pxx6Y5tDyfSfyxW6tlP5oiKJV38uf19Wp+GIIAnWfyL1zmNiz1+EjwVapw2WkBFvvqKQzg==", "dependencies": { - "System.Diagnostics.EventLog": "9.0.11", - "System.Security.Cryptography.ProtectedData": "9.0.11" + "System.Diagnostics.EventLog": "9.0.13", + "System.Security.Cryptography.ProtectedData": "9.0.13" } }, "System.Diagnostics.EventLog": { @@ -765,11 +1184,11 @@ }, "System.IdentityModel.Tokens.Jwt": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "rQkO1YbAjLwnDJSMpRhRtrc6XwIcEOcUvoEcge+evurpzSZM3UNK+MZfD3sKyTlYsvknZ6eJjSBfnmXqwOsT9Q==", + "resolved": "8.16.0", + "contentHash": "rrs2u7DRMXQG2yh0oVyF/vLwosfRv20Ld2iEpYcKwQWXHjfV+gFXNQsQ9p008kR9Ou4pxBs68Q6/9zC8Gi1wjg==", "dependencies": { - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Tokens": "7.7.1" + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Tokens": "8.16.0" } }, "System.IO.Hashing": { @@ -792,13 +1211,21 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "System.Security.Cryptography.ProtectedData": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "s8yUYuYYu+PAwvBdhLG1KyrGrk9gkYeuPxfAsXsTqqWyepwSyEw8hAaflW4nO98NG52YpYI1am2+9o+79h2RtQ==" + "resolved": "9.0.13", + "contentHash": "t8S9IDpjJKsLpLkeBdW8cWtcPyYqrGu93Dej1RO6WwuL/lkFSqWlan3rMJfortqz1mRIh+sys2AFsSA6jWJ3Jg==" + }, + "System.Security.Cryptography.Xml": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "Mz6Y+s+uMQKj1H2BUF0OhlmaOQkLgSG34/IrUaBDirYBQ6bgwcFvO/XtXWcoDlBLFoFB0uKqDNhybHOd+fQK1A==", + "dependencies": { + "System.Security.Cryptography.Pkcs": "10.0.10" + } }, "System.Threading.RateLimiting": { "type": "Transitive", @@ -862,6 +1289,33 @@ "xunit.v3.runner.common": "[3.2.2]" } }, + "Backbone.BuildingBlocks.API": { + "type": "Project", + "dependencies": { + "Asp.Versioning.Mvc": "[10.0.1, 10.0.1]", + "Asp.Versioning.Mvc.ApiExplorer": "[10.0.1, 10.0.1]", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Module": "[1.0.0, )", + "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", + "Backbone.Tooling": "[1.0.0, )", + "DotNetDiag.HealthChecks.NpgSql": "[10.0.10, 10.0.10]", + "DotNetDiag.HealthChecks.SqlServer": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.Relational": "[10.0.10, 10.0.10]", + "OpenTelemetry.Exporter.OpenTelemetryProtocol": "[1.18.0, )", + "OpenTelemetry.Extensions.Hosting": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.AspNetCore": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.EntityFrameworkCore": "[1.18.0-beta.1, )", + "OpenTelemetry.Instrumentation.Http": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.Runtime": "[1.18.0, 1.18.0]", + "Polly": "[8.7.0, 8.7.0]", + "Serilog.Enrichers.Sensitive": "[2.1.0, 2.1.0]", + "Serilog.Extensions.Hosting": "[10.0.0, 10.0.0]", + "Swashbuckle.AspNetCore": "[10.2.3, 10.2.3]", + "System.Data.SqlClient": "[4.9.1, 4.9.1]" + } + }, "Backbone.BuildingBlocks.Application": { "type": "Project", "dependencies": { @@ -919,6 +1373,15 @@ "Serilog": "[4.4.0, 4.4.0]" } }, + "Backbone.BuildingBlocks.Module": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Microsoft.Extensions.Configuration.Abstractions": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[10.0.10, 10.0.10]", + "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" + } + }, "Backbone.Common.Infrastructure": { "type": "Project", "dependencies": { @@ -929,6 +1392,13 @@ "Polly": "[8.7.0, 8.7.0]" } }, + "Backbone.Crypto": { + "type": "Project", + "dependencies": { + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", + "NSec.Cryptography": "[26.4.0, 26.4.0]" + } + }, "Backbone.DevelopmentKit.Identity": { "type": "Project", "dependencies": { @@ -936,15 +1406,76 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Messages.Application": { + "Backbone.Modules.Announcements.Contracts": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )" + } + }, + "Backbone.Modules.Devices.Application": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Domain": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Crypto": "[1.0.0, )", + "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", + "FluentValidation": "[12.1.1, 12.1.1]", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "OpenIddict.Core": "[7.6.0, 7.6.0]", + "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", + "Polly": "[8.7.0, 8.7.0]" + } + }, + "Backbone.Modules.Devices.Contracts": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )" + } + }, + "Backbone.Modules.Devices.Domain": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )", + "Backbone.DevelopmentKit.Identity": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Tooling": "[1.0.0, )", + "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]" + } + }, + "Backbone.Modules.Devices.Infrastructure": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", + "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "FirebaseAdmin": "[3.6.0, 3.6.0]", + "JWT": "[11.1.0, 11.1.0]", + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.Relational": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.DependencyInjection": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Identity.Core": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Identity.Stores": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Logging": "[10.0.10, 10.0.10]", + "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, 10.0.3]", + "OpenIddict.AspNetCore": "[7.6.0, 7.6.0]", + "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", + "Polly": "[8.7.0, 8.7.0]" + } + }, + "Backbone.Modules.Messages.Abstractions": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.DevelopmentKit.Identity": "[1.0.0, )", + "Backbone.Modules.Messages.Domain": "[1.0.0, )" } }, "Backbone.Modules.Messages.Contracts": { @@ -966,19 +1497,58 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Messages.Application": "[1.0.0, )", + "Backbone.Modules.Messages.Abstractions": "[1.0.0, )", "Backbone.Modules.Messages.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, 10.0.3]" } }, + "Backbone.Modules.Messages.Infrastructure.Database.Postgres": { + "type": "Project", + "dependencies": { + "Backbone.Modules.Messages.Infrastructure": "[1.0.0, )" + } + }, + "Backbone.Modules.Messages.Infrastructure.Database.SqlServer": { + "type": "Project", + "dependencies": { + "Backbone.Modules.Messages.Infrastructure": "[1.0.0, )" + } + }, + "Backbone.Modules.Messages.Module": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.API": "[1.0.0, )", + "Backbone.BuildingBlocks.Module": "[1.0.0, )", + "Backbone.Modules.Messages.Abstractions": "[1.0.0, )", + "Backbone.Modules.Messages.Domain": "[1.0.0, )", + "Backbone.Modules.Messages.Infrastructure": "[1.0.0, )", + "Backbone.Modules.Messages.Infrastructure.Database.Postgres": "[1.0.0, )", + "Backbone.Modules.Messages.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" + } + }, "Backbone.Modules.Relationships.Contracts": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Domain": "[1.0.0, )" } }, + "Backbone.Modules.Synchronization.Contracts": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )" + } + }, + "Backbone.Modules.Tokens.Contracts": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )" + } + }, "Backbone.Tooling": { "type": "Project", "dependencies": { @@ -1000,6 +1570,24 @@ "Shouldly": "[4.3.0, 4.3.0]" } }, + "Asp.Versioning.Mvc": { + "type": "CentralTransitive", + "requested": "[10.0.1, 10.0.1]", + "resolved": "10.0.1", + "contentHash": "OqoFPKKxXkNmw62H3CgXkPrf1L4PPwwyYr9QMP6itt/khKTIayqaHhK6F2e3jt6KHc4s23cWAUbu+Z5GPEeMaw==", + "dependencies": { + "Asp.Versioning.Http": "10.0.1" + } + }, + "Asp.Versioning.Mvc.ApiExplorer": { + "type": "CentralTransitive", + "requested": "[10.0.1, 10.0.1]", + "resolved": "10.0.1", + "contentHash": "ylPZe+LheFp0pt2tSMq2pPeGAkMLqWVOn5+1/xOB/eUj889n9b35Sny08bSQ0ziAGIFjp3BBTXaYsWJjRoFV4A==", + "dependencies": { + "Asp.Versioning.Mvc": "10.0.1" + } + }, "Autofac": { "type": "CentralTransitive", "requested": "[9.3.2, 9.3.2]", @@ -1036,12 +1624,44 @@ "Azure.Storage.Common": "12.28.0" } }, + "BouncyCastle.Cryptography": { + "type": "CentralTransitive", + "requested": "[2.7.0, 2.7.0]", + "resolved": "2.7.0", + "contentHash": "U+12df8UEWHgBi04YVf/Lgi2dy3SItlIYvHjjEVa/BngCQIzDCDRBk50DDByCfDvSbe5pRNFr3b7UrVK2kMcLw==" + }, + "CSharpFunctionalExtensions": { + "type": "CentralTransitive", + "requested": "[3.7.0, 3.7.0]", + "resolved": "3.7.0", + "contentHash": "eMZp8tc88O96eEFutiIskF3LE8lFY3fjbNRGfNa1ca0CD9sB8A00r5ltyYDih/7UFdJdVbhVq7tGeHI8xj6DlQ==" + }, "Dapper": { "type": "CentralTransitive", "requested": "[2.1.79, 2.1.79]", "resolved": "2.1.79", "contentHash": "8YijbzgTfmqmQOnVNorYM6K++pxqnW3nJ4aC1sRHzxUA2CcuoJ9gsTem3kgBnPRMc38zZHl4Esb6hAezXIEEuw==" }, + "DotNetDiag.HealthChecks.NpgSql": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "lxb6wQ1YC/TpvZMVgbyeLP5dYOg/RJWLg1xlR+I0FeyfyMmukppKdwzBOrKRtZ8FHG3nV9xrVTaPdwRw0yL4Vw==", + "dependencies": { + "Microsoft.Extensions.Diagnostics.HealthChecks": "10.0.9", + "Npgsql": "10.0.3" + } + }, + "DotNetDiag.HealthChecks.SqlServer": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "6t2HP5VQR0GZDJiw8iZvzOTRC+84irUeaUuWvcqcnc4K5Mzrn/A9V0ucoyjySXOF1vGkdTHjlJMknJVYC9c2Hg==", + "dependencies": { + "Microsoft.Data.SqlClient": "7.0.2", + "Microsoft.Extensions.Diagnostics.HealthChecks": "10.0.9" + } + }, "EFCore.BulkExtensions.Core": { "type": "CentralTransitive", "requested": "[10.0.1, 10.0.1]", @@ -1075,6 +1695,16 @@ "NetTopologySuite.IO.SqlServerBytes": "2.1.0" } }, + "FirebaseAdmin": { + "type": "CentralTransitive", + "requested": "[3.6.0, 3.6.0]", + "resolved": "3.6.0", + "contentHash": "aP8UWyQYACDOZqnHN9WB77TS0DlB8kVj8/HB7evUaAhAgPJQ9y4NmISJ3kkYkWBG5va3PHvYN5H+ZDBhABSEFQ==", + "dependencies": { + "Google.Api.Gax.Rest": "4.13.1", + "Google.Apis.Auth": "1.73.0" + } + }, "FluentValidation": { "type": "CentralTransitive", "requested": "[12.1.1, 12.1.1]", @@ -1111,6 +1741,15 @@ "Google.Apis.Storage.v1": "[1.74.0.4115, 2.0.0)" } }, + "JWT": { + "type": "CentralTransitive", + "requested": "[11.1.0, 11.1.0]", + "resolved": "11.1.0", + "contentHash": "GbmNr2WUyY3Ma0rwuvmTDnE5tIV8gFNDWeua9Fn54HwrpvGfwQzi7HtEAnMgI4quf4MuJr0iwPkt9sKrNCq1Tg==", + "dependencies": { + "Newtonsoft.Json": "13.0.4" + } + }, "MediatR": { "type": "CentralTransitive", "requested": "[12.5.0, 12.5.0]", @@ -1127,6 +1766,16 @@ "resolved": "2.0.1", "contentHash": "FYv95bNT4UwcNA+G/J1oX5OpRiSUxteXaUt2BJbRSdRNiIUNbggJF69wy6mnk2wYToaanpdXZdCwVylt96MpwQ==" }, + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "/ZV8RMWbWob1ZGsF5f1wVJNNlFLPKCf2ba834PpQiNhirVQ/ksup5SujtuUsvByHEZgv+9dmjC/4Xdi75axmXQ==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "10.0.10", + "Microsoft.Extensions.Identity.Stores": "10.0.10" + } + }, "Microsoft.Data.Sqlite.Core": { "type": "CentralTransitive", "requested": "[10.0.10, 10.0.10]", @@ -1342,6 +1991,17 @@ "Microsoft.Extensions.Options": "10.0.10" } }, + "Microsoft.Extensions.Identity.Stores": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "WMG/9wPJPnwU2w1R/WPLO/RL2UpGpBhw9z6odAAUkFdZypzzXl620FJWEoPpuBUq6Q4GYgMg0FQVRCO6gO4MQQ==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "10.0.10", + "Microsoft.Extensions.Identity.Core": "10.0.10", + "Microsoft.Extensions.Logging": "10.0.10" + } + }, "Microsoft.Extensions.Logging": { "type": "CentralTransitive", "requested": "[10.0.10, 10.0.10]", @@ -1383,12 +2043,118 @@ "Npgsql": "10.0.3" } }, + "NSec.Cryptography": { + "type": "CentralTransitive", + "requested": "[26.4.0, 26.4.0]", + "resolved": "26.4.0", + "contentHash": "0vsCtY5f+YgQROiWNqzgWp+l2pddfk9FkWoGV/bEo0MuEYPKlJWuoA8aOfO6qp3f+EnObKE3zSJhn1PspJeJVg==", + "dependencies": { + "libsodium": "[1.0.22, 1.0.23)" + } + }, + "OpenIddict.AspNetCore": { + "type": "CentralTransitive", + "requested": "[7.6.0, 7.6.0]", + "resolved": "7.6.0", + "contentHash": "FblhXU1SzSjL1nPsK5kqi+uMofNYLg1gwBU/qqc8diOafTv/6jLOhpCzzk+wISR8OnkS7H3oFMcTjy8aaTm8ww==", + "dependencies": { + "OpenIddict": "7.6.0", + "OpenIddict.Client.AspNetCore": "7.6.0", + "OpenIddict.Client.DataProtection": "7.6.0", + "OpenIddict.Server.AspNetCore": "7.6.0", + "OpenIddict.Server.DataProtection": "7.6.0", + "OpenIddict.Validation.AspNetCore": "7.6.0", + "OpenIddict.Validation.DataProtection": "7.6.0" + } + }, + "OpenIddict.Core": { + "type": "CentralTransitive", + "requested": "[7.6.0, 7.6.0]", + "resolved": "7.6.0", + "contentHash": "LJQ+GsSY6Nfw5FZ4NzCvL2kwYU1GNz6ygiUNGvqcKP0qXwstU59RDAjNKTCGkPPq4TQGnETqr4UsJgyK+AFxeA==", + "dependencies": { + "Microsoft.Extensions.Caching.Memory": "10.0.10", + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.Extensions.Options": "10.0.10", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[7.6.0, 7.6.0]", + "resolved": "7.6.0", + "contentHash": "BWbgvgKbDcg3EuNJvmXtUzeLxg9c4bU+PfDnZetCjGwcnlCsWcASkjVexKKevtUgWxRWJTQFRchMA09OKmOF/w==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "10.0.10", + "OpenIddict.Core": "7.6.0", + "OpenIddict.EntityFrameworkCore.Models": "7.6.0" + } + }, "OpenTelemetry.Api": { "type": "CentralTransitive", "requested": "[1.18.0, )", "resolved": "1.18.0", "contentHash": "Dhzm5oughIY9EWckt2J1yXcEbXpki5WCL2q7prJoYxzH6C7jdkfGtPMTkUVZZ4AhjJKzQnlC+kLSIlmIVwC4Vw==" }, + "OpenTelemetry.Exporter.OpenTelemetryProtocol": { + "type": "CentralTransitive", + "requested": "[1.18.0, )", + "resolved": "1.18.0", + "contentHash": "Et3WAviooKGObZjUZN8d6eTsdJs1YM3ZoN+KlWSAHksTmHG1nyGi9XGo2wb0fkFMWK0g80FOPdR1njg52Dm+aw==", + "dependencies": { + "OpenTelemetry": "1.18.0" + } + }, + "OpenTelemetry.Extensions.Hosting": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "u+JMA82H65MKwMvd2qUpL8C2qE4Jux2nvX9hmy036UK/Apv2YyIRYCttF/vlX6nMPcAKI8BXkscmL4QG3C69fw==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", + "OpenTelemetry": "1.18.0" + } + }, + "OpenTelemetry.Instrumentation.AspNetCore": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "hBiMXE/CGIAHUOpi0gScNkjHB0L9XbCin5lZObL+dMBl4OmpndnHgxP3JZDnnGtU6qOzdeh8TYUV9f6Jgmmhlw==", + "dependencies": { + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[1.18.0-beta.1, )", + "resolved": "1.18.0-beta.1", + "contentHash": "n15cNXxkSl9G6KD41wZYmujjERYOBiIgn2VeesTFhLtHZ+QQQE3baLrCk7UyzidEw/uGObRcW3SKhqpyMpGe1w==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Http": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "/X57peOOa4a+9V4DSVXbuIWdsAxmU5gsxw8lu+gJU0zuewsYhC9f6qdm8GEW0VvqG9e+gxn0HdVR5G3YHcWDTw==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Runtime": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "McuXGjBJDL/Cown2PxfUQysK98MZG7ZDjO/IKUtaAx8t1m0PB0d+QtJC79RFTVipMhRIwjJiULNOp0OGfZbvwg==", + "dependencies": { + "OpenTelemetry.Api": "[1.18.0, 2.0.0)" + } + }, "Polly": { "type": "CentralTransitive", "requested": "[8.7.0, 8.7.0]", @@ -1423,6 +2189,25 @@ "resolved": "4.4.0", "contentHash": "ZC6Le3rr4TVJJjS4KsQAesxeF1EhW9qcZmmG7eP5Y2G3+gTGkJEUXkq4+tZNPtyp05I0wWOxnIjwtxFweJsObw==" }, + "Serilog.Enrichers.Sensitive": { + "type": "CentralTransitive", + "requested": "[2.1.0, 2.1.0]", + "resolved": "2.1.0", + "contentHash": "nlaEYMoHjJqncjQgc0Nv4LOIkAwUt4Nvmx3EMNjY4MKC7QqZs9zB0v/NwFnaWzLF7qztc7mna1bjn20Auohu0g==" + }, + "Serilog.Extensions.Hosting": { + "type": "CentralTransitive", + "requested": "[10.0.0, 10.0.0]", + "resolved": "10.0.0", + "contentHash": "E7juuIc+gzoGxgzFooFgAV8g9BfiSXNKsUok9NmEpyAXg2odkcPsMa/Yo4axkJRlh0se7mkYQ1GXDaBemR+b6w==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Serilog": "4.3.0", + "Serilog.Extensions.Logging": "10.0.0" + } + }, "Shouldly": { "type": "CentralTransitive", "requested": "[4.3.0, 4.3.0]", @@ -1444,25 +2229,50 @@ "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "Swashbuckle.AspNetCore": { + "type": "CentralTransitive", + "requested": "[10.2.3, 10.2.3]", + "resolved": "10.2.3", + "contentHash": "8KNh1RWvofdU6DVLyBs4Z/OpUMnmf8oNvJQc0QxpwySRbi42bwLfdVMMrXZWANg5U5KQGQq1xW6r/hlcqw99tQ==", + "dependencies": { + "Microsoft.Extensions.ApiDescription.Server": "10.0.0", + "Swashbuckle.AspNetCore.Swagger": "10.2.3", + "Swashbuckle.AspNetCore.SwaggerGen": "10.2.3", + "Swashbuckle.AspNetCore.SwaggerUI": "10.2.3" + } + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/linux-arm64": { + "libsodium": { + "type": "Transitive", + "resolved": "1.0.22", + "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" + }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1483,6 +2293,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1498,33 +2323,46 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "SQLitePCLRaw.lib.e_sqlite3": { "type": "CentralTransitive", "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/linux-x64": { + "libsodium": { + "type": "Transitive", + "resolved": "1.0.22", + "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" + }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1545,6 +2383,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1560,33 +2413,46 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "SQLitePCLRaw.lib.e_sqlite3": { "type": "CentralTransitive", "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/osx-arm64": { + "libsodium": { + "type": "Transitive", + "resolved": "1.0.22", + "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" + }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1607,6 +2473,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1622,33 +2503,46 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "SQLitePCLRaw.lib.e_sqlite3": { "type": "CentralTransitive", "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/win-x64": { + "libsodium": { + "type": "Transitive", + "resolved": "1.0.22", + "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" + }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1669,6 +2563,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1684,14 +2593,23 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "SQLitePCLRaw.lib.e_sqlite3": { "type": "CentralTransitive", "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } } } diff --git a/Modules/Quotas/test/Quotas.Infrastructure.Tests/packages.lock.json b/Modules/Quotas/test/Quotas.Infrastructure.Tests/packages.lock.json index 00a5b1ef29..0ded28d020 100644 --- a/Modules/Quotas/test/Quotas.Infrastructure.Tests/packages.lock.json +++ b/Modules/Quotas/test/Quotas.Infrastructure.Tests/packages.lock.json @@ -948,15 +948,13 @@ "Backbone.BuildingBlocks.Domain": "[1.0.0, )" } }, - "Backbone.Modules.Messages.Application": { + "Backbone.Modules.Messages.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Domain": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.DevelopmentKit.Identity": "[1.0.0, )", + "Backbone.Modules.Messages.Domain": "[1.0.0, )" } }, "Backbone.Modules.Messages.Contracts": { @@ -978,7 +976,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Messages.Application": "[1.0.0, )", + "Backbone.Modules.Messages.Abstractions": "[1.0.0, )", "Backbone.Modules.Messages.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", From a82f6f965d948257e6e98a832791a6f18497dda8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20H=C3=BCgel?= Date: Wed, 30 Sep 2026 15:37:59 +0200 Subject: [PATCH 02/25] fix: several fixes --- .../IServiceCollectionExtensions.cs | 42 ++++++++++--------- Applications/ConsumerApi/src/Program.cs | 3 +- .../Features/Messages/GET.feature | 13 ++++++ .../Features/Messages/POST.feature | 7 ++++ .../MessagesStepDefinitions.cs | 14 +++++++ .../HttpExceptionResponseFactory.cs | 18 +++++--- .../HttpResponseEnvelope.cs | 2 +- .../MinimalApi/ServiceCollectionExtensions.cs | 15 +++++++ .../Messages/ListMessages/Endpoint.cs | 3 +- 9 files changed, 89 insertions(+), 28 deletions(-) create mode 100644 BuildingBlocks/src/BuildingBlocks.API/MinimalApi/ServiceCollectionExtensions.cs diff --git a/Applications/ConsumerApi/src/Extensions/IServiceCollectionExtensions.cs b/Applications/ConsumerApi/src/Extensions/IServiceCollectionExtensions.cs index 8f85cee466..40f1b0c927 100644 --- a/Applications/ConsumerApi/src/Extensions/IServiceCollectionExtensions.cs +++ b/Applications/ConsumerApi/src/Extensions/IServiceCollectionExtensions.cs @@ -55,26 +55,9 @@ public static IServiceCollection AddCustomAspNetCore(this IServiceCollection ser return new BadRequestObjectResult(responsePayload); }; }) - .AddJsonOptions(options => - { - var jsonConverters = - AppDomain.CurrentDomain - .GetAssemblies() - .SelectMany(x => x.ExportedTypes) - .Where(x => !x.IsAbstract) - .Where(x => !x.ContainsGenericParameters) - .Where(x => x.BaseType != null && x.IsAssignableTo(typeof(JsonConverter))); - - foreach (var jsonConverter in jsonConverters) - { - if (jsonConverter == typeof(DynamicJsonConverter)) continue; - var instance = (Activator.CreateInstance(jsonConverter) as JsonConverter)!; - options.JsonSerializerOptions.Converters.Add(instance); - } + .AddJsonOptions(options => ConfigureJsonSerializerOptions(options.JsonSerializerOptions)); - options.JsonSerializerOptions.Converters.Add(new PublicKey.PublicKeyDTOJsonConverter()); - options.JsonSerializerOptions.DictionaryKeyPolicy = JsonNamingPolicy.CamelCase; - }); + services.ConfigureHttpJsonOptions(options => ConfigureJsonSerializerOptions(options.SerializerOptions)); services.AddAuthentication(OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme); @@ -114,6 +97,27 @@ public static IServiceCollection AddCustomAspNetCore(this IServiceCollection ser return services; } + private static void ConfigureJsonSerializerOptions(JsonSerializerOptions options) + { + var jsonConverters = + AppDomain.CurrentDomain + .GetAssemblies() + .SelectMany(x => x.ExportedTypes) + .Where(x => !x.IsAbstract) + .Where(x => !x.ContainsGenericParameters) + .Where(x => x.BaseType != null && x.IsAssignableTo(typeof(JsonConverter))); + + foreach (var jsonConverter in jsonConverters) + { + if (jsonConverter == typeof(DynamicJsonConverter)) continue; + var instance = (Activator.CreateInstance(jsonConverter) as JsonConverter)!; + options.Converters.Add(instance); + } + + options.Converters.Add(new PublicKey.PublicKeyDTOJsonConverter()); + options.DictionaryKeyPolicy = JsonNamingPolicy.CamelCase; + } + public static IServiceCollection AddCustomOpenIddict(this IServiceCollection services, ConsumerApiConfiguration.AuthenticationConfiguration configuration) { diff --git a/Applications/ConsumerApi/src/Program.cs b/Applications/ConsumerApi/src/Program.cs index 95dad451f9..7130563723 100644 --- a/Applications/ConsumerApi/src/Program.cs +++ b/Applications/ConsumerApi/src/Program.cs @@ -1,5 +1,4 @@ using Autofac.Extensions.DependencyInjection; -using Backbone.BuildingBlocks.API; using Backbone.BuildingBlocks.API.Extensions; using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API.Mvc.Middleware; @@ -127,7 +126,7 @@ static void ConfigureServices(IServiceCollection services, IConfiguration config services.ConfigureAndValidate(configuration.Bind); services.AddSingleton(); - services.AddSingleton(); + services.AddMinimalApiErrorHandling(); services.AddSaveChangesTimeInterceptor(); diff --git a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/Features/Messages/GET.feature b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/Features/Messages/GET.feature index 821884cffb..5a95f7d04c 100644 --- a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/Features/Messages/GET.feature +++ b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/Features/Messages/GET.feature @@ -10,6 +10,19 @@ Identity gets all its Messages When i2 sends a GET request to the /Message/{m.id} endpoint Then the response status code is 200 (Ok) + Scenario: Getting a non existent Message + Given Identity i + When i sends a GET request to the /Messages/{id} endpoint with a non existent id + Then the response status code is 404 (Not Found) + And the response content contains an error with the error code "error.platform.recordNotFound" + + Scenario: Filtering Messages by id + Given Identities i1 and i2 + And an active Relationship r12 between i1 and i2 + And i1 has sent a Message m to i2 + When i sends a GET request to the /Messages endpoint with ids={m.Id} + Then the response status code is 200 (Ok) + Scenario: Getting all Messages Given Identities i1 and i2 And an active Relationship r12 between i1 and i2 diff --git a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/Features/Messages/POST.feature b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/Features/Messages/POST.feature index 6bde6310db..1528abdb5d 100644 --- a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/Features/Messages/POST.feature +++ b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/Features/Messages/POST.feature @@ -10,6 +10,13 @@ Identity sends a Message Then the response status code is 201 (Created) And the response contains a SendMessageResponse + Scenario: Sending a Message without a body + Given Identities i1 and i2 + And an active Relationship r12 between i1 and i2 + When i1 sends a POST request to the /Messages endpoint without a body and with i2 as recipient + Then the response status code is 400 (Bad Request) + And the response content contains an error with the error code "error.platform.inputCannotBeParsed" + Scenario: Sending a Message to Identity to be deleted Given Identities i1 and i2 And an active Relationship r12 between i1 and i2 diff --git a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/StepDefinitions/MessagesStepDefinitions.cs b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/StepDefinitions/MessagesStepDefinitions.cs index f44791d3cc..33967ecaa4 100644 --- a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/StepDefinitions/MessagesStepDefinitions.cs +++ b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/StepDefinitions/MessagesStepDefinitions.cs @@ -53,6 +53,13 @@ public async Task WhenIdentitySendsAGetRequestToTheMessagesEndpoint(string sende _responseContext.WhenResponse = _getMessagesResponse = await sender.Messages.ListMessages(); } + [When($"{RegexFor.SINGLE_THING} sends a GET request to the /Messages endpoint with ids={{{RegexFor.SINGLE_THING}.Id}}")] + public async Task WhenIdentitySendsAGetRequestToTheMessagesEndpointWithIds(string senderName, string messageId) + { + var sender = _clientPool.FirstForIdentityName(senderName); + _responseContext.WhenResponse = _getMessagesResponse = await sender.Messages.ListMessages([messageId]); + } + [When($@"{RegexFor.SINGLE_THING} sends a GET request to the /Message/\{{{RegexFor.SINGLE_THING}\.id\}} endpoint")] public async Task WhenIdentitySendsAGetRequestToTheMessageEndpoint(string identityName, string messageName) { @@ -60,6 +67,13 @@ public async Task WhenIdentitySendsAGetRequestToTheMessageEndpoint(string identi _responseContext.WhenResponse = await identity.Messages.GetMessage(_messagesContext.Messages[messageName].Id); } + [When($"^{RegexFor.SINGLE_THING} sends a GET request to the /Messages/\\{{id\\}} endpoint with a non existent id$")] + public async Task WhenIdentitySendsAGetRequestToTheMessagesIdEndpointWithANonExistentId(string identityName) + { + var identity = _clientPool.FirstForIdentityName(identityName); + _responseContext.WhenResponse = await identity.Messages.GetMessage("MSGthisiddoesnoexist"); + } + [When($"{RegexFor.SINGLE_THING} sends a POST request to the /Messages endpoint with {RegexFor.SINGLE_THING} as recipient")] public async Task WhenIdentitySendsAPostRequestToTheMessagesEndpoint(string senderIdentityName, string recipientIdentityName) { diff --git a/BuildingBlocks/src/BuildingBlocks.API/HttpExceptionResponseFactory.cs b/BuildingBlocks/src/BuildingBlocks.API/HttpExceptionResponseFactory.cs index 8d5165d115..556da3e488 100644 --- a/BuildingBlocks/src/BuildingBlocks.API/HttpExceptionResponseFactory.cs +++ b/BuildingBlocks/src/BuildingBlocks.API/HttpExceptionResponseFactory.cs @@ -14,29 +14,37 @@ namespace Backbone.BuildingBlocks.API; public sealed class HttpExceptionResponseFactory(IWebHostEnvironment environment) { - private const string UnexpectedExceptionErrorCode = "error.platform.unexpected"; - private const string RequestBodyTooLargeErrorCode = "error.platform.requestBodyTooLarge"; + private const string UNEXPECTED_EXCEPTION_ERROR_CODE = "error.platform.unexpected"; + private const string REQUEST_BODY_TOO_LARGE_ERROR_CODE = "error.platform.requestBodyTooLarge"; public HttpExceptionResponse Create(Exception exception) => exception switch { InfrastructureException infrastructureException => new(HttpStatusCode.BadRequest, HttpError.ForProduction(infrastructureException.Code, infrastructureException.Message, "")), ApplicationException applicationException => new(GetStatusCode(applicationException), HttpError.ForProduction(applicationException.Code, applicationException.Message, "", GetCustomData(applicationException))), DomainException domainException => new(GetStatusCode(domainException), HttpError.ForProduction(domainException.Code, domainException.Message, "")), - BadHttpRequestException => new(HttpStatusCode.BadRequest, HttpError.ForProduction(RequestBodyTooLargeErrorCode, "The request body is too large.", "")), + BadHttpRequestException { StatusCode: StatusCodes.Status413PayloadTooLarge } => + new(HttpStatusCode.BadRequest, HttpError.ForProduction(REQUEST_BODY_TOO_LARGE_ERROR_CODE, "The request body is too large.", "")), + BadHttpRequestException badHttpRequestException => CreateInvalidInputResponse(badHttpRequestException), _ => new(HttpStatusCode.InternalServerError, CreateUnexpectedExceptionError(exception)) }; + private static HttpExceptionResponse CreateInvalidInputResponse(BadHttpRequestException exception) + { + var error = GenericApplicationErrors.Validation.InputCannotBeParsed(exception.InnerException?.Message ?? exception.Message); + return new HttpExceptionResponse(HttpStatusCode.BadRequest, HttpError.ForProduction(error.Code, error.Message, "")); + } + private HttpError CreateUnexpectedExceptionError(Exception exception) { if (!environment.IsDevelopment() && !environment.IsLocal()) - return HttpError.ForProduction(UnexpectedExceptionErrorCode, "An unexpected error occurred.", ""); + return HttpError.ForProduction(UNEXPECTED_EXCEPTION_ERROR_CODE, "An unexpected error occurred.", ""); var details = exception.Message; for (var inner = exception.InnerException; inner != null; inner = inner.InnerException) details += "\r\n> " + inner.Message; var stackTrace = exception.StackTrace == null ? Enumerable.Empty() : Regex.Matches(exception.StackTrace, "at .+").Select(match => match.Value.Trim()); - return HttpError.ForDev(UnexpectedExceptionErrorCode, "An unexpected error occurred.", "", stackTrace, details); + return HttpError.ForDev(UNEXPECTED_EXCEPTION_ERROR_CODE, "An unexpected error occurred.", "", stackTrace, details); } private static dynamic? GetCustomData(ApplicationException exception) => exception is QuotaExhaustedException quotaExhaustedException diff --git a/BuildingBlocks/src/BuildingBlocks.API/HttpResponseEnvelope.cs b/BuildingBlocks/src/BuildingBlocks.API/HttpResponseEnvelope.cs index ba5906b50a..99ad11bf21 100644 --- a/BuildingBlocks/src/BuildingBlocks.API/HttpResponseEnvelope.cs +++ b/BuildingBlocks/src/BuildingBlocks.API/HttpResponseEnvelope.cs @@ -2,7 +2,7 @@ namespace Backbone.BuildingBlocks.API; public class HttpResponseEnvelope { - public static HttpResponseEnvelope CreateError(HttpError error) + public static HttpResponseEnvelopeError CreateError(HttpError error) { return new HttpResponseEnvelopeError(error); } diff --git a/BuildingBlocks/src/BuildingBlocks.API/MinimalApi/ServiceCollectionExtensions.cs b/BuildingBlocks/src/BuildingBlocks.API/MinimalApi/ServiceCollectionExtensions.cs new file mode 100644 index 0000000000..11e0ce956d --- /dev/null +++ b/BuildingBlocks/src/BuildingBlocks.API/MinimalApi/ServiceCollectionExtensions.cs @@ -0,0 +1,15 @@ +using Microsoft.AspNetCore.Routing; +using Microsoft.Extensions.DependencyInjection; + +namespace Backbone.BuildingBlocks.API.MinimalApi; + +public static class ServiceCollectionExtensions +{ + public static IServiceCollection AddMinimalApiErrorHandling(this IServiceCollection services) + { + services.AddSingleton(); + services.Configure(options => options.ThrowOnBadRequest = true); + + return services; + } +} diff --git a/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Endpoint.cs b/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Endpoint.cs index 1f9dbbb78d..b6741ddab9 100644 --- a/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Endpoint.cs +++ b/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Endpoint.cs @@ -23,9 +23,10 @@ public static RouteGroupBuilder MapListMessagesEndpoint(this RouteGroupBuilder g return group; } - private static async Task Handle([AsParameters] PaginationFilter paginationFilter, [FromQuery] string[]? ids, IMediator mediator, + private static async Task Handle([FromQuery] int? pageNumber, [FromQuery] int? pageSize, [FromQuery] string[]? ids, IMediator mediator, IOptions options, CancellationToken cancellationToken) { + var paginationFilter = new PaginationFilter(pageNumber, pageSize); paginationFilter.PageSize ??= options.Value.Pagination.DefaultPageSize; if (paginationFilter.PageSize > options.Value.Pagination.MaxPageSize) throw new ApplicationException(GenericApplicationErrors.Validation.InvalidPageSize(options.Value.Pagination.MaxPageSize)); From 4144b49e795b53a2b41297690af996a782c9f8a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20H=C3=BCgel?= Date: Thu, 1 Oct 2026 09:33:58 +0200 Subject: [PATCH 03/25] test: extract single get message tests into separate file --- .../Features/Messages/GET.feature | 15 +-------------- .../Features/Messages/{id}/GET.feature | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 14 deletions(-) create mode 100644 Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/Features/Messages/{id}/GET.feature diff --git a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/Features/Messages/GET.feature b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/Features/Messages/GET.feature index 5a95f7d04c..a29614c8f7 100644 --- a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/Features/Messages/GET.feature +++ b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/Features/Messages/GET.feature @@ -3,24 +3,11 @@ Feature: GET /Messages Identity gets all its Messages - Scenario: Getting a Message by id - Given Identities i1 and i2 - And an active Relationship r12 between i1 and i2 - And i1 has sent a Message m to i2 - When i2 sends a GET request to the /Message/{m.id} endpoint - Then the response status code is 200 (Ok) - - Scenario: Getting a non existent Message - Given Identity i - When i sends a GET request to the /Messages/{id} endpoint with a non existent id - Then the response status code is 404 (Not Found) - And the response content contains an error with the error code "error.platform.recordNotFound" - Scenario: Filtering Messages by id Given Identities i1 and i2 And an active Relationship r12 between i1 and i2 And i1 has sent a Message m to i2 - When i sends a GET request to the /Messages endpoint with ids={m.Id} + When i1 sends a GET request to the /Messages endpoint with ids={m.Id} Then the response status code is 200 (Ok) Scenario: Getting all Messages diff --git a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/Features/Messages/{id}/GET.feature b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/Features/Messages/{id}/GET.feature new file mode 100644 index 0000000000..6aa03d66d1 --- /dev/null +++ b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/Features/Messages/{id}/GET.feature @@ -0,0 +1,17 @@ +@Integration +Feature: GET /Messages/{id} + +Identity gets single Message + + Scenario: Getting a Message by id + Given Identities i1 and i2 + And an active Relationship r12 between i1 and i2 + And i1 has sent a Message m to i2 + When i2 sends a GET request to the /Message/{m.id} endpoint + Then the response status code is 200 (Ok) + + Scenario: Getting a non existent Message + Given Identity i + When i sends a GET request to the /Messages/{id} endpoint with a non existent id + Then the response status code is 404 (Not Found) + And the response content contains an error with the error code "error.platform.recordNotFound" From 8fc21f14d920604d85fd49ea2cf0a38331be482a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20H=C3=BCgel?= Date: Thu, 1 Oct 2026 09:34:39 +0200 Subject: [PATCH 04/25] test: fix step definition --- .../StepDefinitions/MessagesStepDefinitions.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/StepDefinitions/MessagesStepDefinitions.cs b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/StepDefinitions/MessagesStepDefinitions.cs index 33967ecaa4..3cd2313163 100644 --- a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/StepDefinitions/MessagesStepDefinitions.cs +++ b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/StepDefinitions/MessagesStepDefinitions.cs @@ -57,7 +57,8 @@ public async Task WhenIdentitySendsAGetRequestToTheMessagesEndpoint(string sende public async Task WhenIdentitySendsAGetRequestToTheMessagesEndpointWithIds(string senderName, string messageId) { var sender = _clientPool.FirstForIdentityName(senderName); - _responseContext.WhenResponse = _getMessagesResponse = await sender.Messages.ListMessages([messageId]); + var message = _messagesContext.Messages[messageId]; + _responseContext.WhenResponse = _getMessagesResponse = await sender.Messages.ListMessages([message.Id]); } [When($@"{RegexFor.SINGLE_THING} sends a GET request to the /Message/\{{{RegexFor.SINGLE_THING}\.id\}} endpoint")] From 0d9de38a213f73a88575631564806afcb344820c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20H=C3=BCgel?= Date: Thu, 1 Oct 2026 09:40:01 +0200 Subject: [PATCH 05/25] chore: fix formatting --- .../ApplicationServiceCollectionExtensions.cs | 8 ++++---- .../Features/Messages/GetMessage/Handler.cs | 2 +- .../Features/Messages/ListMessages/Handler.cs | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Modules/Messages/src/Messages.Module/ApplicationServiceCollectionExtensions.cs b/Modules/Messages/src/Messages.Module/ApplicationServiceCollectionExtensions.cs index 9a1ceec815..fd1b3b192b 100644 --- a/Modules/Messages/src/Messages.Module/ApplicationServiceCollectionExtensions.cs +++ b/Modules/Messages/src/Messages.Module/ApplicationServiceCollectionExtensions.cs @@ -25,9 +25,9 @@ public static void AddApplication(this IServiceCollection services) private static IEnumerable GetDomainEventHandlers(Assembly assembly) { return from type in assembly.GetTypes() - from implementedInterface in type.GetInterfaces() - where type.IsClass && !type.IsAbstract && implementedInterface.IsGenericType && - implementedInterface.GetGenericTypeDefinition() == typeof(IDomainEventHandler<>) - select type; + from implementedInterface in type.GetInterfaces() + where type.IsClass && !type.IsAbstract && implementedInterface.IsGenericType && + implementedInterface.GetGenericTypeDefinition() == typeof(IDomainEventHandler<>) + select type; } } diff --git a/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Handler.cs b/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Handler.cs index 60e404e1a8..69065a0d7f 100644 --- a/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Handler.cs +++ b/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Handler.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.Modules.Messages.Abstractions.Persistence; -using Backbone.Modules.Messages.Module.Features.Messages.Shared; using Backbone.Modules.Messages.Domain.Ids; +using Backbone.Modules.Messages.Module.Features.Messages.Shared; using MediatR; using Microsoft.Extensions.Options; diff --git a/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Handler.cs b/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Handler.cs index 2c1984da74..da381c320a 100644 --- a/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Handler.cs +++ b/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Handler.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.Modules.Messages.Abstractions.Persistence; -using Backbone.Modules.Messages.Module.Features.Messages.Shared; using Backbone.Modules.Messages.Domain.Ids; +using Backbone.Modules.Messages.Module.Features.Messages.Shared; using MediatR; using Microsoft.Extensions.Options; From 797813d63b9376d9afaf5e8c1943f764bb002a1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20H=C3=BCgel?= Date: Thu, 1 Oct 2026 09:45:48 +0200 Subject: [PATCH 06/25] chore: fix naming --- .../Mvc/ExceptionFilters/CustomExceptionFilter.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/BuildingBlocks/src/BuildingBlocks.API/Mvc/ExceptionFilters/CustomExceptionFilter.cs b/BuildingBlocks/src/BuildingBlocks.API/Mvc/ExceptionFilters/CustomExceptionFilter.cs index 6b24e53ca3..c95e6b8a94 100644 --- a/BuildingBlocks/src/BuildingBlocks.API/Mvc/ExceptionFilters/CustomExceptionFilter.cs +++ b/BuildingBlocks/src/BuildingBlocks.API/Mvc/ExceptionFilters/CustomExceptionFilter.cs @@ -16,7 +16,7 @@ namespace Backbone.BuildingBlocks.API.Mvc.ExceptionFilters; [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)] public class CustomExceptionFilter : ExceptionFilterAttribute { - private const string RequestBodyTooLargeErrorCode = "error.platform.requestBodyTooLarge"; + private const string REQUEST_BODY_TOO_LARGE_ERROR_CODE = "error.platform.requestBodyTooLarge"; private readonly ILogger _logger; private readonly HttpExceptionResponseFactory _responseFactory; @@ -54,7 +54,7 @@ private void LogException(Exception exception, string uri) _logger.InvalidUserInput(nameof(DomainException), domainException.Code, domainException.Message); break; case BadHttpRequestException: - _logger.RequestBodyTooLarge(RequestBodyTooLargeErrorCode); + _logger.RequestBodyTooLarge(REQUEST_BODY_TOO_LARGE_ERROR_CODE); break; default: _logger.ErrorWhileProcessingRequestToUri(uri, exception); From bae2d117a8271096d07ad694e4e96abbb2f1871d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20H=C3=BCgel?= Date: Thu, 1 Oct 2026 12:15:01 +0200 Subject: [PATCH 07/25] chore: update package-lock --- Modules/Messages/test/Messages.Module.Tests/packages.lock.json | 1 + 1 file changed, 1 insertion(+) diff --git a/Modules/Messages/test/Messages.Module.Tests/packages.lock.json b/Modules/Messages/test/Messages.Module.Tests/packages.lock.json index 7181c571b7..315a75a0d9 100644 --- a/Modules/Messages/test/Messages.Module.Tests/packages.lock.json +++ b/Modules/Messages/test/Messages.Module.Tests/packages.lock.json @@ -1423,6 +1423,7 @@ "Backbone.Modules.Devices.Domain": "[1.0.0, )", "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", + "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", "FluentValidation": "[12.1.1, 12.1.1]", "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "OpenIddict.Core": "[7.6.0, 7.6.0]", From 109398ef2a09fcc53fe5fdb010f97889e23347ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20H=C3=BCgel?= Date: Thu, 1 Oct 2026 12:29:59 +0200 Subject: [PATCH 08/25] test: make UserContextBaggageMiddlewareTests work --- .../Middleware/UserContextBaggageMiddlewareTests.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/BuildingBlocks/test/BuildingBlocks.API.Tests/Mvc/Middleware/UserContextBaggageMiddlewareTests.cs b/BuildingBlocks/test/BuildingBlocks.API.Tests/Mvc/Middleware/UserContextBaggageMiddlewareTests.cs index 3b357bee89..a27fa993f0 100644 --- a/BuildingBlocks/test/BuildingBlocks.API.Tests/Mvc/Middleware/UserContextBaggageMiddlewareTests.cs +++ b/BuildingBlocks/test/BuildingBlocks.API.Tests/Mvc/Middleware/UserContextBaggageMiddlewareTests.cs @@ -7,7 +7,7 @@ namespace Backbone.BuildingBlocks.API.Tests.Mvc.Middleware; -public class UserContextBaggageMiddlewareTests +public class UserContextBaggageMiddlewareTests : AbstractTestsBase { [Fact] public async Task InvokeAsync_SetsUserContextValuesAsBaggage() @@ -23,10 +23,10 @@ public async Task InvokeAsync_SetsUserContextValuesAsBaggage() var middleware = new UserContextBaggageMiddleware(_ => { - Baggage.GetBaggage("deviceId").ShouldBe(deviceId.Value); - Baggage.GetBaggage("identityAddress").ShouldBe(identityAddress.Value); - Baggage.GetBaggage("clientId").ShouldBe("client-id"); - Baggage.GetBaggage("username").ShouldBe("username"); + Baggage.GetBaggage("enmeshed.backbone.device_id").ShouldBe(deviceId.Value); + Baggage.GetBaggage("enmeshed.backbone.identity_address").ShouldBe(identityAddress.Value); + Baggage.GetBaggage("enmeshed.backbone.client_id").ShouldBe("client-id"); + Baggage.GetBaggage("enmeshed.backbone.username").ShouldBe("username"); return Task.CompletedTask; }); From e470d8fae1e6912e18726db0c865373452a1625e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20H=C3=BCgel?= Date: Thu, 1 Oct 2026 12:32:08 +0200 Subject: [PATCH 09/25] refactor: migrate Tags module --- .../src/Controllers/Tags/TagsController.cs | 31 - Applications/ConsumerApi/src/Program.cs | 3 +- .../ConsumerApi/src/packages.lock.json | 13 +- .../packages.lock.json | 13 +- .../Backbone.Tests.ArchUnit.csproj | 3 +- .../VerticalSliceArchitecture.cs | 106 ++ Backbone.Tests.ArchUnit/packages.lock.json | 182 ++- Backbone.slnx | 5 +- .../MinimalApi/IResultExtensions.cs | 57 + .../BuildingBlocks.API.Tests.csproj | 25 +- .../MinimalApi/IResultExtensionsTests.cs | 89 ++ .../packages.lock.json | 140 +- .../ITagsRepository.cs | 4 +- .../Tags.Abstractions.csproj | 5 + .../TagsRepositoryOptions.cs | 9 + .../src/Tags.Abstractions/packages.lock.json | 14 + .../Tags.Application/Tags.Application.csproj | 7 - .../Tags/Queries/ListTags/ListTagsQuery.cs | 5 - .../src/Tags.Application/packages.lock.json | 1344 ----------------- .../IServiceCollectionExtensions.cs | 2 +- .../Persistence/Repository/TagsRepository.cs | 5 +- .../Tags.Infrastructure.csproj | 6 +- .../Tags.Infrastructure/packages.lock.json | 1337 +--------------- .../ApplicationConfiguration.cs | 4 +- ...ApplicationServiceCollectionExtensions.cs} | 6 +- .../Features/Tags/ListTags/Endpoint.cs | 26 + .../Features/Tags}/ListTags/Handler.cs | 4 +- .../Features/Tags/ListTags/Query.cs | 5 + .../Features/Tags/ListTags/Response.cs} | 4 +- .../Tags/src/Tags.Module/Tags.Module.csproj | 3 +- .../src/Tags.Module/TagsEndpointExtensions.cs | 16 + Modules/Tags/src/Tags.Module/TagsModule.cs | 9 +- .../Tags/src/Tags.Module/packages.lock.json | 1127 ++++++++++++-- 33 files changed, 1662 insertions(+), 2947 deletions(-) delete mode 100644 Applications/ConsumerApi/src/Controllers/Tags/TagsController.cs create mode 100644 Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs create mode 100644 BuildingBlocks/src/BuildingBlocks.API/MinimalApi/IResultExtensions.cs create mode 100644 BuildingBlocks/test/BuildingBlocks.API.Tests/MinimalApi/IResultExtensionsTests.cs rename Modules/Tags/src/{Tags.Application/Infrastructure/Persistence/Repository => Tags.Abstractions}/ITagsRepository.cs (56%) create mode 100644 Modules/Tags/src/Tags.Abstractions/Tags.Abstractions.csproj create mode 100644 Modules/Tags/src/Tags.Abstractions/TagsRepositoryOptions.cs create mode 100644 Modules/Tags/src/Tags.Abstractions/packages.lock.json delete mode 100644 Modules/Tags/src/Tags.Application/Tags.Application.csproj delete mode 100644 Modules/Tags/src/Tags.Application/Tags/Queries/ListTags/ListTagsQuery.cs delete mode 100644 Modules/Tags/src/Tags.Application/packages.lock.json rename Modules/Tags/src/{Tags.Application => Tags.Module}/ApplicationConfiguration.cs (98%) rename Modules/Tags/src/{Tags.Application/Extensions/IServiceCollectionExtensions.cs => Tags.Module/ApplicationServiceCollectionExtensions.cs} (59%) create mode 100644 Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Endpoint.cs rename Modules/Tags/src/{Tags.Application/Tags/Queries => Tags.Module/Features/Tags}/ListTags/Handler.cs (80%) create mode 100644 Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Query.cs rename Modules/Tags/src/{Tags.Application/Tags/Queries/ListTags/ListTagsResponse.cs => Tags.Module/Features/Tags/ListTags/Response.cs} (76%) create mode 100644 Modules/Tags/src/Tags.Module/TagsEndpointExtensions.cs diff --git a/Applications/ConsumerApi/src/Controllers/Tags/TagsController.cs b/Applications/ConsumerApi/src/Controllers/Tags/TagsController.cs deleted file mode 100644 index 1dcdc68db5..0000000000 --- a/Applications/ConsumerApi/src/Controllers/Tags/TagsController.cs +++ /dev/null @@ -1,31 +0,0 @@ -using Backbone.BuildingBlocks.API; -using Backbone.BuildingBlocks.API.Mvc; -using Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; -using Backbone.ConsumerApi.Versions; -using Backbone.Modules.Tags.Application.Tags.Queries.ListTags; -using MediatR; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; - -namespace Backbone.ConsumerApi.Controllers.Tags; - -[V2] -[Route("api/v{v:apiVersion}/[controller]")] -[Authorize("OpenIddict.Validation.AspNetCore")] -public class TagsController : ApiControllerBase -{ - public TagsController(IMediator mediator) : base(mediator) - { - } - - [HttpGet] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - [AllowAnonymous] - [HandleHttpCaching] - public async Task ListTags(CancellationToken cancellationToken) - { - var response = await _mediator.Send(new ListTagsQuery(), cancellationToken); - - return Ok(response); - } -} diff --git a/Applications/ConsumerApi/src/Program.cs b/Applications/ConsumerApi/src/Program.cs index 7130563723..299e9857be 100644 --- a/Applications/ConsumerApi/src/Program.cs +++ b/Applications/ConsumerApi/src/Program.cs @@ -144,7 +144,7 @@ static void ConfigureServices(IServiceCollection services, IConfiguration config Backbone.Modules.Relationships.Infrastructure.InfrastructureConfiguration>(configuration) .AddModule(configuration) - .AddModule(configuration) + .AddModule(configuration) .AddModule(configuration); #pragma warning disable ASP0000 // We retrieve the BackboneConfiguration via IOptions here so that it is validated @@ -215,6 +215,7 @@ static void Configure(WebApplication app, ConsumerApiConfiguration configuration app.UseMiddleware(); app.MapMessagesEndpoints(); + app.MapTagsEndpoints(); app.MapControllers(); app.MapHealthChecks("/health", new HealthCheckOptions { diff --git a/Applications/ConsumerApi/src/packages.lock.json b/Applications/ConsumerApi/src/packages.lock.json index fc0055716e..5641182cd5 100644 --- a/Applications/ConsumerApi/src/packages.lock.json +++ b/Applications/ConsumerApi/src/packages.lock.json @@ -1566,11 +1566,9 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Tags.Application": { + "Backbone.Modules.Tags.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.Modules.Tags.Domain": "[1.0.0, )" } }, @@ -1580,15 +1578,18 @@ "Backbone.Modules.Tags.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.Modules.Tags.Application": "[1.0.0, )", - "Backbone.Modules.Tags.Domain": "[1.0.0, )" + "Backbone.Modules.Tags.Abstractions": "[1.0.0, )", + "Backbone.Modules.Tags.Domain": "[1.0.0, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Options": "[10.0.10, 10.0.10]" } }, "Backbone.Modules.Tags.Module": { "type": "Project", "dependencies": { + "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Tags.Application": "[1.0.0, )", + "Backbone.Modules.Tags.Abstractions": "[1.0.0, )", "Backbone.Modules.Tags.Infrastructure": "[1.0.0, )", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } diff --git a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/packages.lock.json b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/packages.lock.json index 848561834d..736a0b1251 100644 --- a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/packages.lock.json +++ b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/packages.lock.json @@ -2194,11 +2194,9 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Tags.Application": { + "Backbone.Modules.Tags.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.Modules.Tags.Domain": "[1.0.0, )" } }, @@ -2208,15 +2206,18 @@ "Backbone.Modules.Tags.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.Modules.Tags.Application": "[1.0.0, )", - "Backbone.Modules.Tags.Domain": "[1.0.0, )" + "Backbone.Modules.Tags.Abstractions": "[1.0.0, )", + "Backbone.Modules.Tags.Domain": "[1.0.0, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Options": "[10.0.10, 10.0.10]" } }, "Backbone.Modules.Tags.Module": { "type": "Project", "dependencies": { + "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Tags.Application": "[1.0.0, )", + "Backbone.Modules.Tags.Abstractions": "[1.0.0, )", "Backbone.Modules.Tags.Infrastructure": "[1.0.0, )", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } diff --git a/Backbone.Tests.ArchUnit/Backbone.Tests.ArchUnit.csproj b/Backbone.Tests.ArchUnit/Backbone.Tests.ArchUnit.csproj index 08cd6ffa38..aa0a161243 100644 --- a/Backbone.Tests.ArchUnit/Backbone.Tests.ArchUnit.csproj +++ b/Backbone.Tests.ArchUnit/Backbone.Tests.ArchUnit.csproj @@ -50,10 +50,11 @@ - + + diff --git a/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs b/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs new file mode 100644 index 0000000000..2e4606179b --- /dev/null +++ b/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs @@ -0,0 +1,106 @@ +using System.Reflection; +using ArchUnitNET.Domain; +using ArchUnitNET.xUnitV3; +using Shouldly; +using static ArchUnitNET.Fluent.ArchRuleDefinition; +using Assembly = System.Reflection.Assembly; + +namespace Backbone.Backbone.Tests.ArchUnit; + +public class VerticalSliceArchitecture +{ + private static readonly string[] MIGRATED_MODULES = ["Messages", "Tags"]; + + [Fact] + public void DomainsShouldNotDependOnOuterLayers() + { + Types().That().ResideInAssemblyMatching(@"^Backbone\.Modules\.[^.]+\.Domain(,|$)") + .Should().NotDependOnAnyTypesThat().ResideInAssemblyMatching(@"^Backbone\.(Modules\..*\.(Application|Module|Infrastructure.*|Abstractions)|.*Api|BuildingBlocks\.(API|Application.*|Module|Infrastructure))(,|$)") + .Check(Backbone.ARCHITECTURE); + } + + [Fact] + public void ContractsAndAbstractionsShouldNotDependOnImplementations() + { + Types().That().ResideInAssemblyMatching(@"^Backbone\.Modules\.[^.]+\.(Contracts|Abstractions)(,|$)") + .Should().NotDependOnAnyTypesThat().ResideInAssemblyMatching(@"^Backbone\.(Modules\..*\.(Application|Module|Infrastructure.*)|.*Api|BuildingBlocks\.API)(,|$)") + .Check(Backbone.ARCHITECTURE); + } + + [Fact] + public void InfrastructureShouldNotDependOnModulesOrApis() + { + Types().That().ResideInAssemblyMatching(@"^Backbone\.Modules\.[^.]+\.Infrastructure[^,]*(,|$)") + .Should().NotDependOnAnyTypesThat().ResideInAssemblyMatching(@"^Backbone\.(Modules\.[^.]+\.Module|.*Api|BuildingBlocks\.API)(,|$)") + .Check(Backbone.ARCHITECTURE); + } + + [Theory] + [InlineData("Messages")] + [InlineData("Tags")] + public void UseCasesShouldResideInTheirModule(string module) + { + Classes().That().ResideInAssemblyMatching($@"^Backbone\.Modules\.{module}\.(?!.*Tests).*$") + .And().HaveNameMatching(".*(Command|Query|Handler|Validator)$") + .Should().ResideInAssemblyMatching($@"^Backbone\.Modules\.{module}\.Module(,|$)") + .Check(Backbone.ARCHITECTURE); + } + + [Theory] + [InlineData("Messages")] + [InlineData("Tags")] + public void UseCasesShouldNotDependOnAdapters(string module) + { + Classes().That().Are(UseCases(module)).Should().NotDependOnAnyTypesThat() + .ResideInAssemblyMatching(@"^Backbone\.Modules\.[^.]+\.Infrastructure[^,]*(,|$)") + .Check(Backbone.ARCHITECTURE); + Classes().That().Are(UseCases(module)).Should().NotDependOnAnyTypesThat().ResideInNamespaceMatching(@"Microsoft\.AspNetCore\..*") + .Check(Backbone.ARCHITECTURE); + } + + [Theory] + [InlineData("Messages")] + [InlineData("Tags")] + public void ModulesShouldOnlyReferenceTheirOwnImplementationAndOtherContracts(string module) + { + foreach (var assembly in SolutionAssemblies().Where(assembly => assembly.GetName().Name == $"Backbone.Modules.{module}.Module")) + { + foreach (var reference in assembly.GetReferencedAssemblies()) + { + var name = reference.Name!; + if (!name.StartsWith("Backbone.Modules.", StringComparison.Ordinal)) continue; + (name.StartsWith($"Backbone.Modules.{module}.", StringComparison.Ordinal) || name.EndsWith(".Contracts", StringComparison.Ordinal) || + name.EndsWith(".Abstractions", StringComparison.Ordinal)).ShouldBeTrue($"{assembly.GetName().Name} references {name}"); + } + } + } + + [Fact] + public void RemovedApplicationAssembliesShouldNotBeReferencedOrPresent() + { + foreach (var assembly in SolutionAssemblies()) + { + foreach (var module in MIGRATED_MODULES) + { + var removed = $"Backbone.Modules.{module}.Application"; + assembly.GetName().Name.ShouldNotBe(removed); + assembly.GetReferencedAssemblies().Select(reference => reference.Name).ShouldNotContain(removed); + } + } + } + + [Fact] + public void ConsumerApiShouldReferenceMigratedModules() + { + var consumerApi = SolutionAssemblies().Single(assembly => assembly.GetName().Name == "Backbone.ConsumerApi"); + foreach (var module in MIGRATED_MODULES) + consumerApi.GetReferencedAssemblies().Select(reference => reference.Name).ShouldContain($"Backbone.Modules.{module}.Module"); + } + + private static IObjectProvider UseCases(string module) => + Classes().That().ResideInNamespaceMatching($@"^Backbone\.Modules\.{module}\.Module\.Features\..*") + .And().HaveNameMatching(".*(Command|Query|Handler|Validator|Response)$"); + + private static IEnumerable SolutionAssemblies() => Directory.GetFiles(AppContext.BaseDirectory, "Backbone.*.dll") + .Select(path => Assembly.Load(AssemblyName.GetAssemblyName(path))); +} diff --git a/Backbone.Tests.ArchUnit/packages.lock.json b/Backbone.Tests.ArchUnit/packages.lock.json index e971cf969e..2f293a122b 100644 --- a/Backbone.Tests.ArchUnit/packages.lock.json +++ b/Backbone.Tests.ArchUnit/packages.lock.json @@ -370,6 +370,42 @@ "resolved": "10.0.10", "contentHash": "q2RNx0N/qrsU+JgbPE78I9pu5ekwguitAFVoeE1NCgxtkUTguvf7oTzBnn42zSQxuugJ4fmj0RSarob8Rvorrg==" }, + "Microsoft.AspNetCore.Http": { + "type": "Transitive", + "resolved": "2.3.9", + "contentHash": "+CcfWi1LoKYbcxt+3toO4xbBG+qSSMbPuuow+cbZKIrITXuu1geN1traamL4jG8QaHdHGm3M0eCh+EOgdMgNPA==", + "dependencies": { + "Microsoft.AspNetCore.Http.Abstractions": "2.3.0", + "Microsoft.AspNetCore.WebUtilities": "2.3.0", + "Microsoft.Extensions.ObjectPool": "8.0.11", + "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Net.Http.Headers": "2.3.8" + } + }, + "Microsoft.AspNetCore.Http.Abstractions": { + "type": "Transitive", + "resolved": "2.3.0", + "contentHash": "39r9PPrjA6s0blyFv5qarckjNkaHRA5B+3b53ybuGGNTXEj1/DStQJ4NWjFL6QTRQpL9zt7nDyKxZdJOlcnq+Q==", + "dependencies": { + "Microsoft.AspNetCore.Http.Features": "2.3.0" + } + }, + "Microsoft.AspNetCore.Http.Features": { + "type": "Transitive", + "resolved": "2.3.0", + "contentHash": "f10WUgcsKqrkmnz6gt8HeZ7kyKjYN30PO7cSic1lPtH7paPtnQqXPOveul/SIPI43PhRD4trttg4ywnrEmmJpA==", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0" + } + }, + "Microsoft.AspNetCore.WebUtilities": { + "type": "Transitive", + "resolved": "2.3.0", + "contentHash": "trbXdWzoAEUVd0PE2yTopkz4kjZaAIA7xUWekd5uBw+7xE8Do/YOVTeb9d9koPTlbtZT539aESJjSLSqD8eYrQ==", + "dependencies": { + "Microsoft.Net.Http.Headers": "2.3.0" + } + }, "Microsoft.Azure.Amqp": { "type": "Transitive", "resolved": "2.7.0", @@ -839,11 +875,11 @@ }, "Microsoft.IdentityModel.Protocols.OpenIdConnect": { "type": "Transitive", - "resolved": "8.16.0", - "contentHash": "h4yVXyJsEBBX5lg2G5ftMsi5JzcNEGAzrNphA6DQ6eOd8P0s+cDCOyPwVTYLePZvJL5unbPvYIvzrbTXzFjXnQ==", + "resolved": "8.19.2", + "contentHash": "1XOcyY36cVymzE3qKdzKaUEZ4Pzt7ZpSa14JZoPPK1NLFUkQDs85TCqpV6XDo0YjFXj6nVK00AfOHppjghjhtw==", "dependencies": { - "Microsoft.IdentityModel.Protocols": "8.16.0", - "System.IdentityModel.Tokens.Jwt": "8.16.0" + "Microsoft.IdentityModel.Protocols": "8.19.2", + "System.IdentityModel.Tokens.Jwt": "8.19.2" } }, "Microsoft.IdentityModel.Tokens": { @@ -856,6 +892,14 @@ "Microsoft.IdentityModel.Logging": "8.19.2" } }, + "Microsoft.Net.Http.Headers": { + "type": "Transitive", + "resolved": "2.3.8", + "contentHash": "JO60u/VVUdaZfv4XQ//zgcH54y8rnxdpcvXnsDqWLKB4adDKaCiaozixDfQ/6H+PKYfkNV2CL8b8U+F9mciE3Q==", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0" + } + }, "Microsoft.OpenApi": { "type": "Transitive", "resolved": "2.7.5", @@ -1204,6 +1248,14 @@ "Serilog": "4.2.0" } }, + "Serilog.Sinks.Debug": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "4BzXcdrgRX7wde9PmHuYd9U6YqycCC28hhpKonK7hx0wb19eiuRj16fPcPSVp0o/Y1ipJuNLYQ00R3q2Zs8FDA==", + "dependencies": { + "Serilog": "4.0.0" + } + }, "Serilog.Sinks.File": { "type": "Transitive", "resolved": "7.0.0", @@ -1292,11 +1344,11 @@ }, "System.IdentityModel.Tokens.Jwt": { "type": "Transitive", - "resolved": "8.16.0", - "contentHash": "rrs2u7DRMXQG2yh0oVyF/vLwosfRv20Ld2iEpYcKwQWXHjfV+gFXNQsQ9p008kR9Ou4pxBs68Q6/9zC8Gi1wjg==", + "resolved": "8.19.2", + "contentHash": "gqhDC/icByKEutygpr+OFgAmjwTVowyzFjWB8K0q1ww8uFj5a1BQNL+QvijUl9uhq4p8OdDwcAIrjVC+eC9FVA==", "dependencies": { - "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", - "Microsoft.IdentityModel.Tokens": "8.16.0" + "Microsoft.IdentityModel.JsonWebTokens": "8.19.2", + "Microsoft.IdentityModel.Tokens": "8.19.2" } }, "System.IO.Hashing": { @@ -1562,6 +1614,39 @@ "Polly": "[8.7.0, 8.7.0]" } }, + "Backbone.ConsumerApi": { + "type": "Project", + "dependencies": { + "Autofac.Extensions.DependencyInjection": "[11.0.2, 11.0.2]", + "Backbone.BuildingBlocks.API": "[1.0.0, )", + "Backbone.Modules.Announcements.Module": "[1.0.0, )", + "Backbone.Modules.Challenges.Module": "[1.0.0, )", + "Backbone.Modules.Devices.Module": "[1.0.0, )", + "Backbone.Modules.Files.Module": "[1.0.0, )", + "Backbone.Modules.Messages.Module": "[1.0.0, )", + "Backbone.Modules.Quotas.Module": "[1.0.0, )", + "Backbone.Modules.Relationships.Module": "[1.0.0, )", + "Backbone.Modules.Synchronization.Module": "[1.0.0, )", + "Backbone.Modules.Tags.Module": "[1.0.0, )", + "Backbone.Modules.Tokens.Module": "[1.0.0, )", + "DotNetDiag.HealthChecks.SqlServer": "[10.0.10, 10.0.10]", + "Microsoft.AspNetCore.Authentication.JwtBearer": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.Relational": "[10.0.10, 10.0.10]", + "MyCSharp.HttpUserAgentParser": "[3.1.6, 3.1.6]", + "MyCSharp.HttpUserAgentParser.AspNetCore": "[3.1.6, 3.1.6]", + "NetEscapades.AspNetCore.SecurityHeaders": "[1.3.1, 1.3.1]", + "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]", + "Serilog": "[4.4.0, 4.4.0]", + "Serilog.AspNetCore": "[10.0.0, 10.0.0]", + "Serilog.Enrichers.ClientInfo": "[2.9.0, 2.9.0]", + "Serilog.Enrichers.Sensitive": "[2.1.0, 2.1.0]", + "Serilog.Exceptions": "[8.4.0, 8.4.0]", + "Serilog.Exceptions.EntityFrameworkCore": "[8.4.0, 8.4.0]", + "Serilog.Formatting.Compact": "[3.0.0, 3.0.0]", + "Serilog.Sinks.Http": "[9.2.1, 9.2.1]", + "Serilog.Sinks.Seq": "[9.1.0, 9.1.0]" + } + }, "Backbone.Crypto": { "type": "Project", "dependencies": { @@ -2366,11 +2451,9 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Tags.Application": { + "Backbone.Modules.Tags.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.Modules.Tags.Domain": "[1.0.0, )" } }, @@ -2380,15 +2463,18 @@ "Backbone.Modules.Tags.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.Modules.Tags.Application": "[1.0.0, )", - "Backbone.Modules.Tags.Domain": "[1.0.0, )" + "Backbone.Modules.Tags.Abstractions": "[1.0.0, )", + "Backbone.Modules.Tags.Domain": "[1.0.0, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Options": "[10.0.10, 10.0.10]" } }, "Backbone.Modules.Tags.Module": { "type": "Project", "dependencies": { + "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Tags.Application": "[1.0.0, )", + "Backbone.Modules.Tags.Abstractions": "[1.0.0, )", "Backbone.Modules.Tags.Infrastructure": "[1.0.0, )", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } @@ -2725,6 +2811,15 @@ "resolved": "2.0.1", "contentHash": "FYv95bNT4UwcNA+G/J1oX5OpRiSUxteXaUt2BJbRSdRNiIUNbggJF69wy6mnk2wYToaanpdXZdCwVylt96MpwQ==" }, + "Microsoft.AspNetCore.Authentication.JwtBearer": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "VAcqS42zb9WJd9DjPdkVTS5YrQENmNzPNJuRu8VAW7x3TEWUipc4d4hHzVJdFB0h/KLdr4XcXZzRHcUOKVanMQ==", + "dependencies": { + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.19.2" + } + }, "Microsoft.AspNetCore.Identity.EntityFrameworkCore": { "type": "CentralTransitive", "requested": "[10.0.10, 10.0.10]", @@ -2991,6 +3086,30 @@ "Microsoft.Extensions.Primitives": "10.0.10" } }, + "MyCSharp.HttpUserAgentParser": { + "type": "CentralTransitive", + "requested": "[3.1.6, 3.1.6]", + "resolved": "3.1.6", + "contentHash": "PmGxCD5U5zSEVKzxvzdsCTLppBDFH/ExsK7Sqeom5CwBvjEFDit3AamiQvAOnkaVSQQWBQ9hba8gHfXNyxWmXQ==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" + } + }, + "MyCSharp.HttpUserAgentParser.AspNetCore": { + "type": "CentralTransitive", + "requested": "[3.1.6, 3.1.6]", + "resolved": "3.1.6", + "contentHash": "NED5p3ePIBOzqDxvuBBeiiglbjkzx5o6jKN0Zfs4zhQnMEPgFJxFvErcnGYtMu2WyQ7Qxa6OMXopmxJ6O+u+ow==", + "dependencies": { + "MyCSharp.HttpUserAgentParser": "3.1.6" + } + }, + "NetEscapades.AspNetCore.SecurityHeaders": { + "type": "CentralTransitive", + "requested": "[1.3.1, 1.3.1]", + "resolved": "1.3.1", + "contentHash": "wccVMVSGq9nQ43SjJl1s/VaAo+iWauJYWiZy/Hkvszk2vCQdq7aRn7GL3LTBMsnHuI13JRMfCi9Lk8747+njUg==" + }, "Npgsql.EntityFrameworkCore.PostgreSQL": { "type": "CentralTransitive", "requested": "[10.0.3, 10.0.3]", @@ -3148,6 +3267,31 @@ "resolved": "4.4.0", "contentHash": "ZC6Le3rr4TVJJjS4KsQAesxeF1EhW9qcZmmG7eP5Y2G3+gTGkJEUXkq4+tZNPtyp05I0wWOxnIjwtxFweJsObw==" }, + "Serilog.AspNetCore": { + "type": "CentralTransitive", + "requested": "[10.0.0, 10.0.0]", + "resolved": "10.0.0", + "contentHash": "a/cNa1mY4On1oJlfGG1wAvxjp5g7OEzk/Jf/nm7NF9cWoE7KlZw1GldrifUBWm9oKibHkR7Lg/l5jy3y7ACR8w==", + "dependencies": { + "Serilog": "4.3.0", + "Serilog.Extensions.Hosting": "10.0.0", + "Serilog.Formatting.Compact": "3.0.0", + "Serilog.Settings.Configuration": "10.0.0", + "Serilog.Sinks.Console": "6.1.1", + "Serilog.Sinks.Debug": "3.0.0", + "Serilog.Sinks.File": "7.0.0" + } + }, + "Serilog.Enrichers.ClientInfo": { + "type": "CentralTransitive", + "requested": "[2.9.0, 2.9.0]", + "resolved": "2.9.0", + "contentHash": "JsmW94VJJTG+Md/sKtw+Tbt7OSWx5TNs5NmnymD01mVU8FfPNMD8JBAZr2D1zKmnjSyfsQ8/RWn751XYBy+4Fw==", + "dependencies": { + "Microsoft.AspNetCore.Http": "2.3.9", + "Serilog": "4.3.0" + } + }, "Serilog.Enrichers.Sensitive": { "type": "CentralTransitive", "requested": "[2.1.0, 2.1.0]", @@ -3216,6 +3360,16 @@ "Serilog": "4.0.0" } }, + "Serilog.Sinks.Http": { + "type": "CentralTransitive", + "requested": "[9.2.1, 9.2.1]", + "resolved": "9.2.1", + "contentHash": "sxc3GZSBsDFuRhcVKZMs66Mr7RfsGCPASSyiGG1Ew20a8kaeFbUL0tru352o0K0GLHjIcmxgkH2KrwoqjvJjjQ==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "10.0.1", + "Serilog.Sinks.File": "7.0.0" + } + }, "Serilog.Sinks.Seq": { "type": "CentralTransitive", "requested": "[9.1.0, 9.1.0]", diff --git a/Backbone.slnx b/Backbone.slnx index 26d3462a20..220622d960 100644 --- a/Backbone.slnx +++ b/Backbone.slnx @@ -54,7 +54,7 @@ - + @@ -86,6 +86,7 @@ + @@ -217,7 +218,7 @@ - + diff --git a/BuildingBlocks/src/BuildingBlocks.API/MinimalApi/IResultExtensions.cs b/BuildingBlocks/src/BuildingBlocks.API/MinimalApi/IResultExtensions.cs new file mode 100644 index 0000000000..9ac188386c --- /dev/null +++ b/BuildingBlocks/src/BuildingBlocks.API/MinimalApi/IResultExtensions.cs @@ -0,0 +1,57 @@ +using System.Security.Cryptography; +using Microsoft.AspNetCore.Http; +using Microsoft.Net.Http.Headers; + +namespace Backbone.BuildingBlocks.API.MinimalApi; + +public static class IResultExtensions +{ + public static IResult WithHttpCaching(this IResult result) => new HttpCachingResult(result); + + private sealed class HttpCachingResult(IResult result) : IResult + { + private static readonly string[] HEADERS_TO_KEEP_FOR304 = + [ + HeaderNames.CacheControl, HeaderNames.ContentLocation, HeaderNames.ETag, HeaderNames.Expires, HeaderNames.Vary + ]; + + public async Task ExecuteAsync(HttpContext context) + { + var response = context.Response; + var originalStream = response.Body; + using var buffer = new MemoryStream(); + try + { + response.Body = buffer; + await result.ExecuteAsync(context); + buffer.Position = 0; + + if (response.StatusCode == StatusCodes.Status200OK) + { + var responseHeaders = response.GetTypedHeaders(); + responseHeaders.ETag ??= new EntityTagHeaderValue($"\"{Convert.ToBase64String(MD5.HashData(buffer))}\""); + buffer.Position = 0; + var requestHeaders = context.Request.GetTypedHeaders(); + var cacheValid = requestHeaders.IfNoneMatch.Any() + ? requestHeaders.IfNoneMatch.Any(etag => etag.Compare(responseHeaders.ETag, useStrongComparison: false)) + : requestHeaders.IfModifiedSince is not null && responseHeaders.LastModified is not null && + requestHeaders.IfModifiedSince >= responseHeaders.LastModified; + + if (cacheValid) + { + response.StatusCode = StatusCodes.Status304NotModified; + foreach (var header in response.Headers.Keys.Where(key => !HEADERS_TO_KEEP_FOR304.Contains(key)).ToArray()) + response.Headers.Remove(header); + return; + } + } + + await buffer.CopyToAsync(originalStream, context.RequestAborted); + } + finally + { + response.Body = originalStream; + } + } + } +} diff --git a/BuildingBlocks/test/BuildingBlocks.API.Tests/BuildingBlocks.API.Tests.csproj b/BuildingBlocks/test/BuildingBlocks.API.Tests/BuildingBlocks.API.Tests.csproj index e1c5dcf8ee..2c1a5f799b 100644 --- a/BuildingBlocks/test/BuildingBlocks.API.Tests/BuildingBlocks.API.Tests.csproj +++ b/BuildingBlocks/test/BuildingBlocks.API.Tests/BuildingBlocks.API.Tests.csproj @@ -1,17 +1,20 @@ - - false - + + false + Exe + - - - - + + + + all + + - - - - + + + + diff --git a/BuildingBlocks/test/BuildingBlocks.API.Tests/MinimalApi/IResultExtensionsTests.cs b/BuildingBlocks/test/BuildingBlocks.API.Tests/MinimalApi/IResultExtensionsTests.cs new file mode 100644 index 0000000000..727fdc11f3 --- /dev/null +++ b/BuildingBlocks/test/BuildingBlocks.API.Tests/MinimalApi/IResultExtensionsTests.cs @@ -0,0 +1,89 @@ +using System.Text; +using Backbone.BuildingBlocks.API.MinimalApi; +using Microsoft.AspNetCore.Http; + +namespace Backbone.BuildingBlocks.API.Tests.MinimalApi; + +public class IResultExtensionsTests : AbstractTestsBase +{ + [Fact] + public async Task Exceptions_restore_original_response_stream() + { + var context = CreateContext(); + var original = context.Response.Body; + var result = new TestResult(_ => throw new InvalidOperationException("Serialization failed")); + await Should.ThrowAsync(() => result.WithHttpCaching().ExecuteAsync(context)); + context.Response.Body.ShouldBeSameAs(original); + } + + [Fact] + public async Task Non_success_responses_are_copied_without_etag() + { + var context = CreateContext(); + var original = context.Response.Body; + await new TestResult(async ctx => + { + ctx.Response.StatusCode = StatusCodes.Status400BadRequest; + await ctx.Response.Body.WriteAsync(Encoding.UTF8.GetBytes("error"), ctx.RequestAborted); + }).WithHttpCaching().ExecuteAsync(context); + context.Response.StatusCode.ShouldBe(StatusCodes.Status400BadRequest); + context.Response.Headers.ETag.Count.ShouldBe(0); + context.Response.Body.ShouldBeSameAs(original); + Encoding.UTF8.GetString(((MemoryStream)original).ToArray()).ShouldBe("error"); + } + + [Theory] + [InlineData(false, 304)] + [InlineData(true, 200)] + public async Task If_none_match_takes_precedence_over_if_modified_since(bool withNonmatchingEtag, int expectedStatus) + { + var context = CreateContext(); + var modified = new DateTimeOffset(2026, 1, 1, 0, 0, 0, TimeSpan.Zero); + context.Request.GetTypedHeaders().IfModifiedSince = modified.AddDays(1); + if (withNonmatchingEtag) + context.Request.Headers.IfNoneMatch = "\"old\""; + await new TestResult(async ctx => + { + ctx.Response.GetTypedHeaders().LastModified = modified; + await ctx.Response.Body.WriteAsync(Encoding.UTF8.GetBytes("result"), ctx.RequestAborted); + }).WithHttpCaching().ExecuteAsync(context); + context.Response.StatusCode.ShouldBe(expectedStatus); + ((MemoryStream)context.Response.Body).Length.ShouldBe(expectedStatus == 304 ? 0 : 6); + } + + [Fact] + public async Task Matching_existing_etag_preserves_only_cache_headers() + { + var context = CreateContext(); + context.Request.Headers.IfNoneMatch = "\"existing\""; + await new TestResult(async ctx => + { + ctx.Response.Headers.ETag = "\"existing\""; + ctx.Response.Headers.CacheControl = "public, max-age=60"; + ctx.Response.Headers.Vary = "Accept-Encoding"; + ctx.Response.ContentType = "application/json"; + ctx.Response.ContentLength = 6; + await ctx.Response.Body.WriteAsync(Encoding.UTF8.GetBytes("result"), ctx.RequestAborted); + }).WithHttpCaching().ExecuteAsync(context); + context.Response.StatusCode.ShouldBe(StatusCodes.Status304NotModified); + context.Response.Headers.ETag.ToString().ShouldBe("\"existing\""); + context.Response.Headers.CacheControl.ToString().ShouldBe("public, max-age=60"); + context.Response.Headers.Vary.ToString().ShouldBe("Accept-Encoding"); + context.Response.ContentType.ShouldBeNull(); + context.Response.ContentLength.ShouldBeNull(); + ((MemoryStream)context.Response.Body).Length.ShouldBe(0); + } + + private static DefaultHttpContext CreateContext() + { + var context = new DefaultHttpContext(); + context.Response.Body = new MemoryStream(); + context.RequestAborted = TestContext.Current.CancellationToken; + return context; + } + + private sealed class TestResult(Func execute) : IResult + { + public Task ExecuteAsync(HttpContext context) => execute(context); + } +} diff --git a/BuildingBlocks/test/BuildingBlocks.API.Tests/packages.lock.json b/BuildingBlocks/test/BuildingBlocks.API.Tests/packages.lock.json index adf5bb76e0..f104e5363e 100644 --- a/BuildingBlocks/test/BuildingBlocks.API.Tests/packages.lock.json +++ b/BuildingBlocks/test/BuildingBlocks.API.Tests/packages.lock.json @@ -18,16 +18,6 @@ "Microsoft.TestPlatform.TestHost": "18.8.1" } }, - "Shouldly": { - "type": "Direct", - "requested": "[4.3.0, 4.3.0]", - "resolved": "4.3.0", - "contentHash": "sDetrWXrl6YXZ4HeLsdBoNk3uIa7K+V4uvIJ+cqdRa5DrFxeTED7VkjoxCuU1kJWpUuBDZz2QXFzSxBtVXLwRQ==", - "dependencies": { - "DiffEngine": "11.3.0", - "EmptyFiles": "4.4.0" - } - }, "xunit.v3.mtp-v2": { "type": "Direct", "requested": "[3.2.2, 3.2.2]", @@ -1026,22 +1016,22 @@ }, "OpenTelemetry": { "type": "Transitive", - "resolved": "1.17.0", - "contentHash": "rMLOTftlMlTm7+MSrvXDHnJRjVkROFNKXHZrYjOsX+LankaFG7QSflx7qRRGjoqZoirohnxmJQ7GEb9occO4Gg==", + "resolved": "1.18.0", + "contentHash": "13AKxycK+olOLe061MjliPTNBR/DUkjyRr0b9zwUhKyMjFS8lXS7G31R85rkbM55up2YFmdykWdAw2giBDJpiQ==", "dependencies": { "Microsoft.Extensions.Configuration.EnvironmentVariables": "10.0.0", "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.0", "Microsoft.Extensions.Logging.Configuration": "10.0.0", - "OpenTelemetry.Api.ProviderBuilderExtensions": "1.17.0" + "OpenTelemetry.Api.ProviderBuilderExtensions": "1.18.0" } }, "OpenTelemetry.Api.ProviderBuilderExtensions": { "type": "Transitive", - "resolved": "1.17.0", - "contentHash": "Xgc3Qf9B9TFMFpx6exTdGqMWuYIT2miNzkdMPutVvT9YuMFaEovXWke1Gb6z8NxYaQbbGF38vYLuSg1JCeui5Q==", + "resolved": "1.18.0", + "contentHash": "io6A6PJFp3vIObRGf6oPjdHsdglkinXt/0SpTDJHrVnsLxUtOzwh/QwTsnhBJ43wJ6QcGMkyNzsSSY8XEB1Q5Q==", "dependencies": { "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", - "OpenTelemetry.Api": "1.17.0" + "OpenTelemetry.Api": "1.18.0" } }, "Polly.Core": { @@ -1304,13 +1294,12 @@ "DotNetDiag.HealthChecks.SqlServer": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.Relational": "[10.0.10, 10.0.10]", - "OpenTelemetry.Exporter.Console": "[1.17.0, )", - "OpenTelemetry.Exporter.OpenTelemetryProtocol": "[1.17.0, )", - "OpenTelemetry.Extensions.Hosting": "[1.17.0, 1.17.0]", - "OpenTelemetry.Instrumentation.AspNetCore": "[1.17.0, 1.17.0]", - "OpenTelemetry.Instrumentation.EntityFrameworkCore": "[1.17.0-beta.1, )", - "OpenTelemetry.Instrumentation.Http": "[1.17.0, 1.17.0]", - "OpenTelemetry.Instrumentation.Runtime": "[1.17.0, 1.17.0]", + "OpenTelemetry.Exporter.OpenTelemetryProtocol": "[1.18.0, )", + "OpenTelemetry.Extensions.Hosting": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.AspNetCore": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.EntityFrameworkCore": "[1.18.0-beta.1, )", + "OpenTelemetry.Instrumentation.Http": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.Runtime": "[1.18.0, 1.18.0]", "Polly": "[8.7.0, 8.7.0]", "Serilog.Enrichers.Sensitive": "[2.1.0, 2.1.0]", "Serilog.Extensions.Hosting": "[10.0.0, 10.0.0]", @@ -1369,7 +1358,7 @@ "Microsoft.Extensions.Identity.Core": "[10.0.10, 10.0.10]", "Microsoft.Extensions.Logging": "[10.0.10, 10.0.10]", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, 10.0.3]", - "OpenTelemetry.Api": "[1.17.0, )", + "OpenTelemetry.Api": "[1.18.0, )", "Polly": "[8.7.0, 8.7.0]", "RabbitMQ.Client": "[7.2.1, 7.2.1]", "Serilog": "[4.4.0, 4.4.0]" @@ -1408,13 +1397,24 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, + "Backbone.Modules.Announcements.Contracts": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )" + } + }, "Backbone.Modules.Devices.Application": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.Crypto": "[1.0.0, )", + "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", + "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", "FluentValidation": "[12.1.1, 12.1.1]", "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "OpenIddict.Core": "[7.6.0, 7.6.0]", @@ -1422,11 +1422,18 @@ "Polly": "[8.7.0, 8.7.0]" } }, + "Backbone.Modules.Devices.Contracts": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )" + } + }, "Backbone.Modules.Devices.Domain": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Domain": "[1.0.0, )", "Backbone.DevelopmentKit.Identity": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", "Backbone.Tooling": "[1.0.0, )", "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]" @@ -1454,6 +1461,18 @@ "Polly": "[8.7.0, 8.7.0]" } }, + "Backbone.Modules.Synchronization.Contracts": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )" + } + }, + "Backbone.Modules.Tokens.Contracts": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )" + } + }, "Backbone.Tooling": { "type": "Project", "dependencies": { @@ -2006,76 +2025,67 @@ }, "OpenTelemetry.Api": { "type": "CentralTransitive", - "requested": "[1.17.0, )", - "resolved": "1.17.0", - "contentHash": "mSBxzomZgHIJu9CyVNqyDu/n2JHEtqVgfcCD1Br0cV5iLYogjZOMqhlVLt99PEp+0KGBNUR3GXgeOdN2GR3F9g==" - }, - "OpenTelemetry.Exporter.Console": { - "type": "CentralTransitive", - "requested": "[1.17.0, )", - "resolved": "1.17.0", - "contentHash": "sSoCa2DMCkw7tQabiVduwKWVyg9ungCiwh+0JuDPODF6CuYvR+OCuJwqcbzJsTMecWQrbgL8OYWAt3GC5tJGhw==", - "dependencies": { - "OpenTelemetry": "1.17.0" - } + "requested": "[1.18.0, )", + "resolved": "1.18.0", + "contentHash": "Dhzm5oughIY9EWckt2J1yXcEbXpki5WCL2q7prJoYxzH6C7jdkfGtPMTkUVZZ4AhjJKzQnlC+kLSIlmIVwC4Vw==" }, "OpenTelemetry.Exporter.OpenTelemetryProtocol": { "type": "CentralTransitive", - "requested": "[1.17.0, )", - "resolved": "1.17.0", - "contentHash": "R1omQOrQpGlS0Cp5UIr/TAiuEA48JrPlgr1NPV5gESiTU7HhWU+ILe2EBSYb1fKdsSavZ7nZkHcUxAzofPqr2A==", + "requested": "[1.18.0, )", + "resolved": "1.18.0", + "contentHash": "Et3WAviooKGObZjUZN8d6eTsdJs1YM3ZoN+KlWSAHksTmHG1nyGi9XGo2wb0fkFMWK0g80FOPdR1njg52Dm+aw==", "dependencies": { - "OpenTelemetry": "1.17.0" + "OpenTelemetry": "1.18.0" } }, "OpenTelemetry.Extensions.Hosting": { "type": "CentralTransitive", - "requested": "[1.17.0, 1.17.0]", - "resolved": "1.17.0", - "contentHash": "t1OwL/4qgboGMobYVT+UV5zgWnFqCp4Pw8lcsmzh8m2K8PQsTKkyxrC32tqYTMYny3GOW4q5cltE3dTVzLmRew==", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "u+JMA82H65MKwMvd2qUpL8C2qE4Jux2nvX9hmy036UK/Apv2YyIRYCttF/vlX6nMPcAKI8BXkscmL4QG3C69fw==", "dependencies": { "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", - "OpenTelemetry": "1.17.0" + "OpenTelemetry": "1.18.0" } }, "OpenTelemetry.Instrumentation.AspNetCore": { "type": "CentralTransitive", - "requested": "[1.17.0, 1.17.0]", - "resolved": "1.17.0", - "contentHash": "rGbmk1vuy1kvgZmE0ps7Vb99YZvDap6AalrrF60FwnNit1uW/PbeFZj1cpb0T8MPkYmjhBrRJ1/JB6QqXkRjHA==", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "hBiMXE/CGIAHUOpi0gScNkjHB0L9XbCin5lZObL+dMBl4OmpndnHgxP3JZDnnGtU6qOzdeh8TYUV9f6Jgmmhlw==", "dependencies": { - "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.17.0, 2.0.0)" + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" } }, "OpenTelemetry.Instrumentation.EntityFrameworkCore": { "type": "CentralTransitive", - "requested": "[1.17.0-beta.1, )", - "resolved": "1.17.0-beta.1", - "contentHash": "BPSv1rk6qEkGZUGTNBfk7XmYqBAWdF3FBdjXEjVClp0bKUl6VCumlaosT84qvlK7YnHLCv5FFqJHx2N62TbKEw==", + "requested": "[1.18.0-beta.1, )", + "resolved": "1.18.0-beta.1", + "contentHash": "n15cNXxkSl9G6KD41wZYmujjERYOBiIgn2VeesTFhLtHZ+QQQE3baLrCk7UyzidEw/uGObRcW3SKhqpyMpGe1w==", "dependencies": { "Microsoft.Extensions.Configuration": "10.0.0", "Microsoft.Extensions.Options": "10.0.0", - "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.17.0, 2.0.0)" + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" } }, "OpenTelemetry.Instrumentation.Http": { "type": "CentralTransitive", - "requested": "[1.17.0, 1.17.0]", - "resolved": "1.17.0", - "contentHash": "uTwVtxIJ/xB96wGYTaDsbkJVeCFdUxTwvrlDUn2YJixy0UuKc8DvQMzwKNJMTzNFiiyYO9c40id6tUHTmWs33A==", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "/X57peOOa4a+9V4DSVXbuIWdsAxmU5gsxw8lu+gJU0zuewsYhC9f6qdm8GEW0VvqG9e+gxn0HdVR5G3YHcWDTw==", "dependencies": { "Microsoft.Extensions.Configuration": "10.0.0", "Microsoft.Extensions.Options": "10.0.0", - "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.17.0, 2.0.0)" + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" } }, "OpenTelemetry.Instrumentation.Runtime": { "type": "CentralTransitive", - "requested": "[1.17.0, 1.17.0]", - "resolved": "1.17.0", - "contentHash": "HyYenisDn/xdtyVXdjImsCl+RNC2gq01N0rvSR7tsYAylXR2sxX/YgMsyTajMXA27+r1vB7lNU8cWRhV0fwL+Q==", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "McuXGjBJDL/Cown2PxfUQysK98MZG7ZDjO/IKUtaAx8t1m0PB0d+QtJC79RFTVipMhRIwjJiULNOp0OGfZbvwg==", "dependencies": { - "OpenTelemetry.Api": "[1.17.0, 2.0.0)" + "OpenTelemetry.Api": "[1.18.0, 2.0.0)" } }, "Polly": { @@ -2131,6 +2141,16 @@ "Serilog.Extensions.Logging": "10.0.0" } }, + "Shouldly": { + "type": "CentralTransitive", + "requested": "[4.3.0, 4.3.0]", + "resolved": "4.3.0", + "contentHash": "sDetrWXrl6YXZ4HeLsdBoNk3uIa7K+V4uvIJ+cqdRa5DrFxeTED7VkjoxCuU1kJWpUuBDZz2QXFzSxBtVXLwRQ==", + "dependencies": { + "DiffEngine": "11.3.0", + "EmptyFiles": "4.4.0" + } + }, "SimpleBase": { "type": "CentralTransitive", "requested": "[5.6.3, 5.6.3]", diff --git a/Modules/Tags/src/Tags.Application/Infrastructure/Persistence/Repository/ITagsRepository.cs b/Modules/Tags/src/Tags.Abstractions/ITagsRepository.cs similarity index 56% rename from Modules/Tags/src/Tags.Application/Infrastructure/Persistence/Repository/ITagsRepository.cs rename to Modules/Tags/src/Tags.Abstractions/ITagsRepository.cs index cca1336cbf..71dbe07d78 100644 --- a/Modules/Tags/src/Tags.Application/Infrastructure/Persistence/Repository/ITagsRepository.cs +++ b/Modules/Tags/src/Tags.Abstractions/ITagsRepository.cs @@ -1,6 +1,6 @@ -using Backbone.Modules.Tags.Domain; +using Backbone.Modules.Tags.Domain; -namespace Backbone.Modules.Tags.Application.Infrastructure.Persistence.Repository; +namespace Backbone.Modules.Tags.Abstractions; public interface ITagsRepository { diff --git a/Modules/Tags/src/Tags.Abstractions/Tags.Abstractions.csproj b/Modules/Tags/src/Tags.Abstractions/Tags.Abstractions.csproj new file mode 100644 index 0000000000..2059e41e8d --- /dev/null +++ b/Modules/Tags/src/Tags.Abstractions/Tags.Abstractions.csproj @@ -0,0 +1,5 @@ + + + + + diff --git a/Modules/Tags/src/Tags.Abstractions/TagsRepositoryOptions.cs b/Modules/Tags/src/Tags.Abstractions/TagsRepositoryOptions.cs new file mode 100644 index 0000000000..7a9836a4ad --- /dev/null +++ b/Modules/Tags/src/Tags.Abstractions/TagsRepositoryOptions.cs @@ -0,0 +1,9 @@ +using Backbone.Modules.Tags.Domain; + +namespace Backbone.Modules.Tags.Abstractions; + +public class TagsRepositoryOptions +{ + public required List SupportedLanguages { get; init; } + public required Dictionary> TagsForAttributeValueTypes { get; init; } +} diff --git a/Modules/Tags/src/Tags.Abstractions/packages.lock.json b/Modules/Tags/src/Tags.Abstractions/packages.lock.json new file mode 100644 index 0000000000..c5da19ecf2 --- /dev/null +++ b/Modules/Tags/src/Tags.Abstractions/packages.lock.json @@ -0,0 +1,14 @@ +{ + "version": 2, + "dependencies": { + "net10.0": { + "Backbone.Modules.Tags.Domain": { + "type": "Project" + } + }, + "net10.0/linux-arm64": {}, + "net10.0/linux-x64": {}, + "net10.0/osx-arm64": {}, + "net10.0/win-x64": {} + } +} \ No newline at end of file diff --git a/Modules/Tags/src/Tags.Application/Tags.Application.csproj b/Modules/Tags/src/Tags.Application/Tags.Application.csproj deleted file mode 100644 index 688eca0f04..0000000000 --- a/Modules/Tags/src/Tags.Application/Tags.Application.csproj +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/Modules/Tags/src/Tags.Application/Tags/Queries/ListTags/ListTagsQuery.cs b/Modules/Tags/src/Tags.Application/Tags/Queries/ListTags/ListTagsQuery.cs deleted file mode 100644 index d6004cb1bf..0000000000 --- a/Modules/Tags/src/Tags.Application/Tags/Queries/ListTags/ListTagsQuery.cs +++ /dev/null @@ -1,5 +0,0 @@ -using MediatR; - -namespace Backbone.Modules.Tags.Application.Tags.Queries.ListTags; - -public class ListTagsQuery : IRequest; diff --git a/Modules/Tags/src/Tags.Application/packages.lock.json b/Modules/Tags/src/Tags.Application/packages.lock.json deleted file mode 100644 index 43a716ccc1..0000000000 --- a/Modules/Tags/src/Tags.Application/packages.lock.json +++ /dev/null @@ -1,1344 +0,0 @@ -{ - "version": 2, - "dependencies": { - "net10.0": { - "AWSSDK.Core": { - "type": "Transitive", - "resolved": "4.0.100.9", - "contentHash": "OPYy41jZjXwxxcYRotaq24HDrwUnVtBB/mvg1IwB9D1ICXAtHqMa1sp2hpmlVJCZwjlcrPcTCJIejInvV1vp5g==" - }, - "Azure.Core": { - "type": "Transitive", - "resolved": "1.60.0", - "contentHash": "qCa5DLAq0w14aTl9/bvMZNA/QxPzYj1a4zakrpeudxWd4D4YliRHRfccD3yFECeHkMkvQjMmyWLggb8bzhDVKA==", - "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "10.0.9", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.9", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.9", - "Microsoft.Identity.Client": "4.84.2", - "Microsoft.Identity.Client.Extensions.Msal": "4.84.2", - "System.ClientModel": "1.14.0", - "System.Memory.Data": "10.0.9" - } - }, - "Azure.Core.Amqp": { - "type": "Transitive", - "resolved": "1.3.1", - "contentHash": "AY1ZM4WwLBb9L2WwQoWs7wS2XKYg83tp3yVVdgySdebGN0FuIszuEqCy3Nhv6qHpbkjx/NGuOTsUbF/oNGBgwA==", - "dependencies": { - "Microsoft.Azure.Amqp": "2.6.7", - "System.Memory.Data": "1.0.2" - } - }, - "Azure.Identity": { - "type": "Transitive", - "resolved": "1.17.1", - "contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Microsoft.Identity.Client": "4.78.0", - "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" - } - }, - "Azure.Storage.Common": { - "type": "Transitive", - "resolved": "12.28.0", - "contentHash": "5l8YhNrks38zKLGFW2BBFLwieyamH/xauABSASsdpZv79G0f+n2n22IjkRmUqCmALSupkwRHh2LOhbW3yj5Qgw==", - "dependencies": { - "Azure.Core": "1.55.0", - "System.IO.Hashing": "10.0.3" - } - }, - "Castle.Core": { - "type": "Transitive", - "resolved": "5.2.1", - "contentHash": "wHARzQA695jwwKreOzNsq54KiGqKP38tv8hi8e2FXDEC/sA6BtrX90tVPDkOfVu13PbEzr00TCV8coikl+D1Iw==", - "dependencies": { - "System.Diagnostics.EventLog": "6.0.0" - } - }, - "Google.Api.CommonProtos": { - "type": "Transitive", - "resolved": "2.17.0", - "contentHash": "elfQPknFr495hm7vdy6ZlgyQh6yzZq9TU7sS35L/Fj/fqjM/mUGau9gVJLhvQEtUlPjtR80hpn/m9HvBMyCXIw==", - "dependencies": { - "Google.Protobuf": "[3.31.1, 4.0.0]" - } - }, - "Google.Api.Gax": { - "type": "Transitive", - "resolved": "4.13.1", - "contentHash": "ujDpZk7O2VqAEIqcSlhH0FKzVpGZWly/qcNjHxpNUrL445Tei9PHnu4V1pwW2WDiMDvo3TpL1Bi4DeU525Afrg==", - "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "6.0.0", - "Newtonsoft.Json": "13.0.4" - } - }, - "Google.Api.Gax.Grpc": { - "type": "Transitive", - "resolved": "4.13.1", - "contentHash": "QgYF0bd8z6xWSVLGkGAMPB70seJSa9J02lFn8LT0Rb7PjSxZYpX+wU6LbVmghxDi6Wd64taulpX37pFq20J61g==", - "dependencies": { - "Google.Api.CommonProtos": "2.17.0", - "Google.Api.Gax": "4.13.1", - "Google.Apis.Auth": "1.73.0", - "Grpc.Auth": "[2.71.0, 3.0.0)", - "Grpc.Core.Api": "[2.71.0, 3.0.0)", - "Grpc.Net.Client": "[2.71.0, 3.0.0)", - "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0" - } - }, - "Google.Api.Gax.Rest": { - "type": "Transitive", - "resolved": "4.13.1", - "contentHash": "wDfFZXKoHC6sy+Yfub/4cLQOb5ozBVPqDOrxCUAeTfku4d96ILqgzulJSdkPHbiT3oWB3hlYTdJgUwNSJjyo+A==", - "dependencies": { - "Google.Api.Gax": "4.13.1", - "Google.Apis.Auth": "1.73.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0" - } - }, - "Google.Apis": { - "type": "Transitive", - "resolved": "1.74.0", - "contentHash": "Z6hSkmRD6V8/raSBqn/EsPpNop6suaLaGE9DbSY3yRE5G47l4zYqrJgapcLARk2Z3TsQUDmWz+w/tob3wuVt3g==", - "dependencies": { - "Google.Apis.Core": "1.74.0" - } - }, - "Google.Apis.Auth": { - "type": "Transitive", - "resolved": "1.74.0", - "contentHash": "43H4foh3zfWgboK8QnJjIfPQuBiS794TxqQLDfeE3erQSluKmEN0qeDuwxLTpSr9Mtwj76S4LWxPneuSbC6fNg==", - "dependencies": { - "Google.Apis": "1.74.0", - "Google.Apis.Core": "1.74.0", - "System.Management": "7.0.2" - } - }, - "Google.Apis.Core": { - "type": "Transitive", - "resolved": "1.74.0", - "contentHash": "gWOIiks6yo2TRliIyy10V18BJOO2BfUSPJFiTW6Tfap4tm3hFj7nvYU3XIfwzAxwoIy6nsBoqVDt9iBDSXrvYQ==", - "dependencies": { - "Newtonsoft.Json": "13.0.4" - } - }, - "Google.Apis.Storage.v1": { - "type": "Transitive", - "resolved": "1.74.0.4115", - "contentHash": "9J3YPPSG53xwQLzdQ304dI+DMtVxJDpEazA2QQ2LA8IJoM4VUu4DpIxyhTGxpnAK4Db7s4LwzeNi6NkPKM3HzQ==", - "dependencies": { - "Google.Apis": "1.74.0", - "Google.Apis.Auth": "1.74.0" - } - }, - "Google.Cloud.Iam.V1": { - "type": "Transitive", - "resolved": "3.5.0", - "contentHash": "CTLBAQ7WxsLoA4lovpvhF4MRUJH64smrIjuD/0jDrLs6zpbpf+f8Ur8ekRKv67kwlpN6Ug0q7EuT2csWDEczlQ==", - "dependencies": { - "Google.Api.Gax.Grpc": "[4.12.1, 5.0.0)" - } - }, - "Google.Protobuf": { - "type": "Transitive", - "resolved": "3.31.1", - "contentHash": "gSnJbUmGiOTdWddPhqzrEscHq9Ls6sqRDPB9WptckyjTUyx70JOOAaDLkFff8gManZNN3hllQ4aQInnQyq/Z/A==" - }, - "Grpc.Auth": { - "type": "Transitive", - "resolved": "2.71.0", - "contentHash": "t2aGh/pMgqmc3GimtYfC7VcgVY/VSbk6SLH+61wewsgK45tzxxD9nYYItT5bpLn7fbebirmHXfgJcVKIArd0cg==", - "dependencies": { - "Google.Apis.Auth": "1.69.0", - "Grpc.Core.Api": "2.71.0" - } - }, - "Grpc.Core.Api": { - "type": "Transitive", - "resolved": "2.71.0", - "contentHash": "QquqUC37yxsDzd1QaDRsH2+uuznWPTS8CVE2Yzwl3CvU4geTNkolQXoVN812M2IwT6zpv3jsZRc9ExJFNFslTg==" - }, - "Grpc.Net.Client": { - "type": "Transitive", - "resolved": "2.71.0", - "contentHash": "U1vr20r5ngoT9nlb7wejF28EKN+taMhJsV9XtK9MkiepTZwnKxxiarriiMfCHuDAfPUm9XUjFMn/RIuJ4YY61w==", - "dependencies": { - "Grpc.Net.Common": "2.71.0", - "Microsoft.Extensions.Logging.Abstractions": "6.0.0" - } - }, - "Grpc.Net.Common": { - "type": "Transitive", - "resolved": "2.71.0", - "contentHash": "v0c8R97TwRYwNXlC8GyRXwYTCNufpDfUtj9la+wUrZFzVWkFJuNAltU+c0yI3zu0jl54k7en6u2WKgZgd57r2Q==", - "dependencies": { - "Grpc.Core.Api": "2.71.0" - } - }, - "MedallionTopologicalSort": { - "type": "Transitive", - "resolved": "1.0.0", - "contentHash": "dcAqM8TcyZQ/T466CvqNMUUn/G0FQE+4R7l62ngXH7hLFP9yA7yoP/ySsLgiXx3pGUQC3J+cUvXmJOOR/eC+oQ==" - }, - "Microsoft.AspNetCore.Cryptography.Internal": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "T/kOT3kAVZU1B0QlpRxASpdbAJ/o5DLFW7bWS6vyE44uMqPmojEcaFENt6ww1xaLH++ZNwsEJ1YUOwPK050lNQ==" - }, - "Microsoft.AspNetCore.Cryptography.KeyDerivation": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "w6P461MvhJrttEcyGfN00tf8rdwQJFK+s0pebR44jiTzAa+PUZ804xzbGZQpR6klSFd212M4DIIROSaW0Acifg==", - "dependencies": { - "Microsoft.AspNetCore.Cryptography.Internal": "10.0.10" - } - }, - "Microsoft.Azure.Amqp": { - "type": "Transitive", - "resolved": "2.7.0", - "contentHash": "gm/AEakujttMzrDhZ5QpRz3fICVkYDn/oDG9SmxDP+J7R8JDBXYU9WWG7hr6wQy40mY+wjUF0yUGXDPRDRNJwQ==" - }, - "Microsoft.Bcl.AsyncInterfaces": { - "type": "Transitive", - "resolved": "10.0.9", - "contentHash": "Aq7M8lG6BrHeatqKqncVm9m55ec34k6nnfPRLe/PvGg+b/pAsRM2ejofeKmCLjTXMa+5NGXm382f8CG/D5WDow==" - }, - "Microsoft.Data.SqlClient": { - "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" - } - }, - "Microsoft.Data.SqlClient.SNI.runtime": { - "type": "Transitive", - "resolved": "6.0.2", - "contentHash": "f+pRODTWX7Y67jXO3T5S2dIPZ9qMJNySjlZT/TKmWVNWe19N8jcWmHaqHnnchaq3gxEKv1SWVY5EFzOD06l41w==" - }, - "Microsoft.EntityFrameworkCore.Analyzers": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "2gLDordUCGf3aNOOuqtTbP5mxhiP9nk6TnvGiE3RnqT891O+Zf/qKu1PIREubs1M16A0SImr4vULBfU5BTDs1Q==" - }, - "Microsoft.EntityFrameworkCore.SqlServer.Abstractions": { - "type": "Transitive", - "resolved": "10.0.3", - "contentHash": "K73jOafOjF8oMLrPhXz3er6csmXCOGBQbeXsFPXrtz7/4QJJYalcOHQzoppEhl1gwLEZNnJMUDlOWcQ1FeW27Q==", - "dependencies": { - "Microsoft.SqlServer.Types": "160.1000.6" - } - }, - "Microsoft.EntityFrameworkCore.SqlServer.HierarchyId": { - "type": "Transitive", - "resolved": "10.0.3", - "contentHash": "tkiCR+rJMb9pib0jlJH1nItw36SlFj0l8sD/PQSd7sj1cvKhW1qmA7hahrp3WOvp7ZsIIXgMDUltryzinNOMTw==", - "dependencies": { - "Microsoft.Data.SqlClient": "6.1.1", - "Microsoft.EntityFrameworkCore.SqlServer": "10.0.3", - "Microsoft.EntityFrameworkCore.SqlServer.Abstractions": "10.0.3", - "Microsoft.Extensions.Caching.Memory": "10.0.3", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.3", - "Microsoft.Extensions.Logging": "10.0.3", - "Microsoft.SqlServer.Types": "160.1000.6" - } - }, - "Microsoft.Extensions.Caching.Abstractions": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "4ZFBNE+jzR+CrWWlhOesnmywCW7pYKT0dxyAQRdL11yJwxe4jvcAu31eorFtEkoFeCDcUTeNssgPv2yaRRptaQ==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.Caching.Memory": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "N1w5H7uK6gCTnCBZAWzE0/EQYSPysij/uYwDqntqBVvBa6bjMmBKitsnEFd6yh/SX3wLm67nO6+OnZ84K+gZWg==", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "10.0.10", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.Compliance.Abstractions": { - "type": "Transitive", - "resolved": "10.8.0", - "contentHash": "7I0DXMTCqpXpXg+SLLDlfedtv6DN5Lgiv+PR3MclzqKPOHNB17YP42KMNI61ckSrffh0xsuIqQyCIjvWc6vUuw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.ObjectPool": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.CommandLine": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "33cBeR2HRbzHUTtmcmLdNOApneNGcymwwL4arHuotgVK9Frba8kcDTrvVTj7cSCmF1R9OiSbZH0KxNOwab3HUg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.EnvironmentVariables": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "KRfFSSCV58vEdU7mPED/YMzeovIWF5P0g8s9K8n9HEfy0/WzMq37SrPdXdFN5/dFT/rPMHpF7AvpoXHckbcBFg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.FileExtensions": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "ZOhZYwvbXGTgGVRwswIirofEMVHuWdxjdh0JeUZXwaF9cgcjXdz/t0ELtgaevw7ezTyv47yPNCgGreWtLkn3IQ==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Physical": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.UserSecrets": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "1s1sKFTk/Foam64JY6+m/diH8drL3Wx6V3gtSd5v1IEZtszZYyc1pW8uRnMblzpNiR0l0t8gGk7tXj3xHzFgdg==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.Json": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Physical": "10.0.10" - } - }, - "Microsoft.Extensions.Diagnostics": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "Kr/e7lUf4+N8tacbqJ2Ctwe/HarKdAc9ZkgKVVqvtJDBKbez+T/KnUwu82KSlnBp/SrpBcxc7u7xkE2oUZT/5Q==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.10", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10" - } - }, - "Microsoft.Extensions.Diagnostics.Abstractions": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "9uWiKpeOVac355STyChWR/pliFX/5CeLqChW9kKsaxyDH4EUTZxMkT4Jwp/J/peLm0GBFmSX5c0WCse3yCnq1Q==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Extensions.Diagnostics.HealthChecks": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "R0O5oG+zAJeBSM8nNTa+Ycj2Zobyr/v6Ilo7Dha0sNB2Vq/XXoLdoecj9DAWGbN8YrPaW6u8+osTQ5Ypj7ZF0w==", - "dependencies": { - "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": "10.0.10", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "6euxgVR7NS83y0a2wLRAxfYXusLQJ2e1ah0MpQgYTYMs5lYrmdNP79C6T8uvRZdP87n5mcCcp6+w0EyWAidKZw==" - }, - "Microsoft.Extensions.FileProviders.Abstractions": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "c5zqFCY9DiIpMovLd7/d/CTiEtrMOuQ639dhv3PABtKQIKNQikSHwQt8+N679uii9q+B55lgK28Uv64FOwEu8w==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.FileProviders.Physical": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "jhJAyo38kSrH3ARvWUk0h8itogVnQu2DCZuPo+s0Z+tXes0ugTxMPaHYzap85785eHQmPFqD9TYERqBbtGxn/w==", - "dependencies": { - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.FileSystemGlobbing": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.FileSystemGlobbing": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "jSOCVxEwCd4Aq925kJVz1kSO1EpX2OHYKL04qVREXkDU7Ce3pVDdHPYm+fEy8y/th2kJf/DAstRHpJAqoNWP8w==" - }, - "Microsoft.Extensions.Logging.Configuration": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "cLrqxkuEfcilZ8SjK+9KAnpLk9lOoMPaOokF+wRUYie+iUEcdX4/p/+gJkt0BYgWLthjpBUCkVTBI6Kxg0nsOw==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.Binder": "10.0.10", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.Console": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "VIlNzPwPS0GeQVSmCqqo36ugryX3LpE9ul6gEkks5VLET3weH/XMLeWmclwfoGn4Nxi2mwVibB+OZBVJ9tDqvg==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging.Configuration": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.Debug": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "8+TZBnV5fgBXoVNJ5ROSErUwYogk4hOgV7c2HWK1u5cqKGmiUTUn7+KqZ35iQu8e/B7Ykccyz5OTjdXcidNZ9g==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.EventLog": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "0RE4951AzQ+YD4gVrvbq0BhdsiBgSDo44yM7+QBZ2mrmMJeNjY+teCIYfUjqDPVYnKs0HR6SkkhgrX1YgXZq3Q==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "System.Diagnostics.EventLog": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.EventSource": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "85SAPwXhJtdBInzN2k7SChiFiBGh3KOWay5AfoY+GREF6P7oZA98+ST2p7Z9384iLKYjkZSKIZ/FqIO5aojtNw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.ObjectPool": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "Tx0R6PY9MNSh0mDKSxbpHLuuec93IxF1cel+1ithQnMNr/vbfLSSHOQHGHIppAJCGfPcEo/wO1Ylj+QpXtzo3A==" - }, - "Microsoft.Extensions.Options.ConfigurationExtensions": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "tnBmu/LwF25ZQK+HBNCu2xrwnkKoB/XEbJyooGGoYxHrhvxbSKi7eOFiJ4AXBy/QU4vtCvCJfoi8k9Ej72qzOQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.Binder": "10.0.10", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.Primitives": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "5wu/GrYVd8mG2DVUw3vFJzF+O336TyTGg/Kmcgw9bfwYhCoFiV5lR5QeEmKecJyrW4W54nMfD3p3589E8a7czQ==" - }, - "Microsoft.Extensions.Telemetry.Abstractions": { - "type": "Transitive", - "resolved": "10.8.0", - "contentHash": "XHlOerNKjVrPJqbuFi196tyFhS7eNMoPUC800xJmCGsSiruE/goGoKyBKzS1HeelAGnoFPFrS+LgNitXNeEYRQ==", - "dependencies": { - "Microsoft.Extensions.Compliance.Abstractions": "10.8.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.ObjectPool": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Identity.Client": { - "type": "Transitive", - "resolved": "4.84.2", - "contentHash": "Va9FjmABSgj/lcUfHH0pBNQkmS7SNyepz2ERV7Yynp6QgEYpFdSqR6Vzy1WWipN8GS5pBHuXoZbqaDWuARCrHQ==", - "dependencies": { - "Microsoft.IdentityModel.Abstractions": "8.14.0" - } - }, - "Microsoft.Identity.Client.Extensions.Msal": { - "type": "Transitive", - "resolved": "4.84.2", - "contentHash": "+D98LaU3dOu/Nzs6kgbBJapMvH7iwYcAeC99XwSkpmEadsPv6rozecOl9P6m4A3RfpOuPt9e6J6TwwUUp3+M4w==", - "dependencies": { - "Microsoft.Identity.Client": "4.84.2", - "System.Security.Cryptography.ProtectedData": "4.5.0" - } - }, - "Microsoft.IdentityModel.Abstractions": { - "type": "Transitive", - "resolved": "8.14.0", - "contentHash": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==" - }, - "Microsoft.IdentityModel.JsonWebTokens": { - "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "3Izi75UCUssvo8LPx3OVnEeZay58qaFicrtSnbtUt7q8qQi0gy46gh4V8VUTkMVMKXV6VMyjBVmeNNgeCUJuIw==", - "dependencies": { - "Microsoft.IdentityModel.Tokens": "7.7.1" - } - }, - "Microsoft.IdentityModel.Logging": { - "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "BZNgSq/o8gsKExdYoBKPR65fdsxW0cTF8PsdqB8y011AGUJJW300S/ZIsEUD0+sOmGc003Gwv3FYbjrVjvsLNQ==", - "dependencies": { - "Microsoft.IdentityModel.Abstractions": "7.7.1" - } - }, - "Microsoft.IdentityModel.Protocols": { - "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "h+fHHBGokepmCX+QZXJk4Ij8OApCb2n2ktoDkNX5CXteXsOxTHMNgjPGpAwdJMFvAL7TtGarUnk3o97NmBq2QQ==", - "dependencies": { - "Microsoft.IdentityModel.Tokens": "7.7.1" - } - }, - "Microsoft.IdentityModel.Protocols.OpenIdConnect": { - "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "yT2Hdj8LpPbcT9C9KlLVxXl09C8zjFaVSaApdOwuecMuoV4s6Sof/mnTDz/+F/lILPIBvrWugR9CC7iRVZgbfQ==", - "dependencies": { - "Microsoft.IdentityModel.Protocols": "7.7.1", - "System.IdentityModel.Tokens.Jwt": "7.7.1" - } - }, - "Microsoft.IdentityModel.Tokens": { - "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "fQ0VVCba75lknUHGldi3iTKAYUQqbzp1Un8+d9cm9nON0Gs8NAkXddNg8iaUB0qi/ybtAmNWizTR4avdkCJ9pQ==", - "dependencies": { - "Microsoft.IdentityModel.Logging": "7.7.1" - } - }, - "Microsoft.SqlServer.Server": { - "type": "Transitive", - "resolved": "1.0.0", - "contentHash": "N4KeF3cpcm1PUHym1RmakkzfkEv3GRMyofVv40uXsQhCQeglr2OHNcUk2WOG51AKpGO8ynGpo9M/kFXSzghwug==" - }, - "Microsoft.SqlServer.Types": { - "type": "Transitive", - "resolved": "160.1000.6", - "contentHash": "4kk+rz5vnIPr9ENzm8KttUbhBKftv0uHSSFDVjc5OuKPtRP5q0lDbYUy5ZsoYCAG3RrZdJoxPnWN2JNozZAiGA==", - "dependencies": { - "Microsoft.SqlServer.Server": "1.0.0" - } - }, - "NetTopologySuite": { - "type": "Transitive", - "resolved": "2.6.0", - "contentHash": "1B1OTacTd4QtFyBeuIOcThwSSLUdRZU3bSFIwM8vk36XiZlBMi3K36u74e4OqwwHRHUuJC1PhbDx4hyI266X1Q==" - }, - "NetTopologySuite.IO.SqlServerBytes": { - "type": "Transitive", - "resolved": "2.1.0", - "contentHash": "R4BcV19f2l6EjHSjh/EHwLhYQHrOov9vig1EW5oBm0iqlZOgaIJm5tBnlbFnYlvdYOPuf5p0Qtf8PCVwH77Wbg==", - "dependencies": { - "NetTopologySuite": "[2.0.0, 3.0.0-A)" - } - }, - "Newtonsoft.Json": { - "type": "Transitive", - "resolved": "13.0.4", - "contentHash": "pdgNNMai3zv51W5aq268sujXUyx7SNdE2bj1wZcWjAQrKMFZV260lbqYop1d2GM67JI1huLRwxo9ZqnfF/lC6A==" - }, - "Npgsql": { - "type": "Transitive", - "resolved": "10.0.3", - "contentHash": "7nb5YzXuvWWJxB0J8DiyL3we+X4FOctZrt0fIBnucOIaIevFEEwGQVZKtiu9olXdlNAK1eNgqSral6r/jlhI4w==", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "10.0.0" - } - }, - "Polly.Core": { - "type": "Transitive", - "resolved": "8.7.0", - "contentHash": "BS2t+nsBer16PIebCEPNBK5fgMisADQyRCd7K+BgkMWpFmSaiYE+rVVNpFhGRqUkJmNSLmw0uCNzHHWfgml28Q==" - }, - "System.ClientModel": { - "type": "Transitive", - "resolved": "1.14.0", - "contentHash": "yhIJHDW3Hh5kcvhHv3ww1T8qvya06Nlwo/SR/rke4/fHXtyKiqQV/9b/VDhnVI7QUcMnpfvh4pIEFhNsTDLeKQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.3", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.3", - "Microsoft.Extensions.Logging.Abstractions": "10.0.3", - "System.Memory.Data": "10.0.3" - } - }, - "System.CodeDom": { - "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "GLltyqEsE5/3IE+zYRP5sNa1l44qKl9v+bfdMcwg+M9qnQf47wK3H0SUR/T+3N4JEQXF3vV4CSuuo0rsg+nq2A==" - }, - "System.Configuration.ConfigurationManager": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "vPinosRgEk1CGjohbv0pDuz6gPprkWo5xvBTjOJjks5JOgOEWvPndq5NngGxiTcBcy1+k9GwzZ1c3Bp2fU5ezw==", - "dependencies": { - "System.Diagnostics.EventLog": "9.0.11", - "System.Security.Cryptography.ProtectedData": "9.0.11" - } - }, - "System.Diagnostics.EventLog": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" - }, - "System.IdentityModel.Tokens.Jwt": { - "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "rQkO1YbAjLwnDJSMpRhRtrc6XwIcEOcUvoEcge+evurpzSZM3UNK+MZfD3sKyTlYsvknZ6eJjSBfnmXqwOsT9Q==", - "dependencies": { - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Tokens": "7.7.1" - } - }, - "System.IO.Hashing": { - "type": "Transitive", - "resolved": "10.0.3", - "contentHash": "La6ICwsdTKhVX+LKN+pvFjQRR3LhLwq3uKdi2knjLzRyPYBSydF4cjXidYxIiTcDD6XVYdsBWQEI8ZxiZ/OdIg==" - }, - "System.Management": { - "type": "Transitive", - "resolved": "7.0.2", - "contentHash": "/qEUN91mP/MUQmJnM5y5BdT7ZoPuVrtxnFlbJ8a3kBJGhe2wCzBfnPFtK2wTtEEcf3DMGR9J00GZZfg6HRI6yA==", - "dependencies": { - "System.CodeDom": "7.0.0" - } - }, - "System.Memory.Data": { - "type": "Transitive", - "resolved": "10.0.9", - "contentHash": "YweovHiLUoEdbr2Xv8eRqCSkTu1vMms4a6xBHaQiMSFVy32PL+hXv6Vhol2NWOmLHjaVgTyhJ3R52U6JxS6w3Q==" - }, - "System.Security.Cryptography.Pkcs": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" - }, - "System.Security.Cryptography.ProtectedData": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "s8yUYuYYu+PAwvBdhLG1KyrGrk9gkYeuPxfAsXsTqqWyepwSyEw8hAaflW4nO98NG52YpYI1am2+9o+79h2RtQ==" - }, - "System.Threading.RateLimiting": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "7mu9v0QDv66ar3DpGSZHg9NuNcxDaaAcnMULuZlaTpP9+hwXhrxNGsF5GmLkSHxFdb5bBc1TzeujsRgTrPWi+Q==" - }, - "Backbone.BuildingBlocks.Application": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Common.Infrastructure": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "MediatR": "[12.5.0, 12.5.0]", - "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", - "Polly": "[8.7.0, 8.7.0]", - "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" - } - }, - "Backbone.BuildingBlocks.Application.Abstractions": { - "type": "Project", - "dependencies": { - "Backbone.DevelopmentKit.Identity": "[1.0.0, )", - "Backbone.Tooling": "[1.0.0, )", - "MediatR.Contracts": "[2.0.1, 2.0.1]", - "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]" - } - }, - "Backbone.BuildingBlocks.Domain": { - "type": "Project", - "dependencies": { - "Backbone.Tooling": "[1.0.0, )" - } - }, - "Backbone.BuildingBlocks.Infrastructure": { - "type": "Project", - "dependencies": { - "AWSSDK.S3": "[4.0.101.6, 4.0.101.6]", - "Autofac": "[9.3.2, 9.3.2]", - "Azure.Messaging.ServiceBus": "[7.20.2, 7.20.2]", - "Azure.Storage.Blobs": "[12.29.1, 12.29.1]", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "EFCore.BulkExtensions.Core": "[10.0.1, 10.0.1]", - "EFCore.BulkExtensions.PostgreSql": "[10.0.1, 10.0.1]", - "EFCore.BulkExtensions.SqlServer": "[10.0.1, 10.0.1]", - "Google.Cloud.PubSub.V1": "[3.36.0, 3.36.0]", - "Google.Cloud.Storage.V1": "[4.15.0, 4.15.0]", - "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", - "Microsoft.EntityFrameworkCore.Abstractions": "[10.0.10, 10.0.10]", - "Microsoft.EntityFrameworkCore.Proxies": "[10.0.10, 10.0.10]", - "Microsoft.EntityFrameworkCore.Relational": "[10.0.10, 10.0.10]", - "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", - "Microsoft.Extensions.Azure": "[1.14.0, 1.14.0]", - "Microsoft.Extensions.DependencyInjection": "[10.0.10, 10.0.10]", - "Microsoft.Extensions.Diagnostics.HealthChecks.Common": "[10.8.0, 10.8.0]", - "Microsoft.Extensions.Identity.Core": "[10.0.10, 10.0.10]", - "Microsoft.Extensions.Logging": "[10.0.10, 10.0.10]", - "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, 10.0.3]", - "OpenTelemetry.Api": "[1.18.0, )", - "Polly": "[8.7.0, 8.7.0]", - "RabbitMQ.Client": "[7.2.1, 7.2.1]", - "Serilog": "[4.4.0, 4.4.0]" - } - }, - "Backbone.Common.Infrastructure": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.DevelopmentKit.Identity": "[1.0.0, )", - "Dapper": "[2.1.79, 2.1.79]", - "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", - "Polly": "[8.7.0, 8.7.0]" - } - }, - "Backbone.DevelopmentKit.Identity": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )", - "SimpleBase": "[5.6.3, 5.6.3]" - } - }, - "Backbone.Modules.Tags.Domain": { - "type": "Project" - }, - "Backbone.Tooling": { - "type": "Project", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "[10.0.10, 10.0.10]", - "Microsoft.Extensions.Options": "[10.0.10, 10.0.10]" - } - }, - "Autofac": { - "type": "CentralTransitive", - "requested": "[9.3.2, 9.3.2]", - "resolved": "9.3.2", - "contentHash": "an3dLpmXWvb2aBP5qyA7GVEcXhoG+W/EtFRa3sBYzJdXSNDnB0aoeo4MgOQru0G5sjNDGYM3D3CnBzNFXEVOOA==" - }, - "AWSSDK.S3": { - "type": "CentralTransitive", - "requested": "[4.0.101.6, 4.0.101.6]", - "resolved": "4.0.101.6", - "contentHash": "LsVXGc3lyJuUJe+EbGubkFeR0cVmtmj4YdMChqsqSIsjZtCMzPg2BXR7cJqcrIBGoHab3q3RS6K8T9QD2tbhhQ==", - "dependencies": { - "AWSSDK.Core": "[4.0.100.9, 5.0.0)" - } - }, - "Azure.Messaging.ServiceBus": { - "type": "CentralTransitive", - "requested": "[7.20.2, 7.20.2]", - "resolved": "7.20.2", - "contentHash": "mwr5c3Qs7FWUtwzlLOtVixYDpUuA+Ln7sNirljTHZR8kDhzdr2grlqx0RRBvGV+IDCRHt1jIRb+hi0MUzjeVmw==", - "dependencies": { - "Azure.Core": "1.60.0", - "Azure.Core.Amqp": "1.3.1", - "Microsoft.Azure.Amqp": "2.7.0" - } - }, - "Azure.Storage.Blobs": { - "type": "CentralTransitive", - "requested": "[12.29.1, 12.29.1]", - "resolved": "12.29.1", - "contentHash": "pWh7xZBto8YcwiO853AB3uijTfVqs9PDte0Bu9/Zd8O9nwKiitWm0Jej1vsNkmYUzeG1552f8vJPjmtW30pBUQ==", - "dependencies": { - "Azure.Core": "1.55.0", - "Azure.Storage.Common": "12.28.0" - } - }, - "Dapper": { - "type": "CentralTransitive", - "requested": "[2.1.79, 2.1.79]", - "resolved": "2.1.79", - "contentHash": "8YijbzgTfmqmQOnVNorYM6K++pxqnW3nJ4aC1sRHzxUA2CcuoJ9gsTem3kgBnPRMc38zZHl4Esb6hAezXIEEuw==" - }, - "EFCore.BulkExtensions.Core": { - "type": "CentralTransitive", - "requested": "[10.0.1, 10.0.1]", - "resolved": "10.0.1", - "contentHash": "D++Wd1Qy6RM+yMy4nQ3r0nc/cSA0T+AdlFBEuKDhwl6r5bwuBQpluP5h2rvQ3i+CetUGppef6JNH9grg8lo+Bw==", - "dependencies": { - "MedallionTopologicalSort": "1.0.0", - "Microsoft.EntityFrameworkCore.Relational": "10.0.3", - "NetTopologySuite": "2.6.0" - } - }, - "EFCore.BulkExtensions.PostgreSql": { - "type": "CentralTransitive", - "requested": "[10.0.1, 10.0.1]", - "resolved": "10.0.1", - "contentHash": "iZCay5ghyULm4kA0ET6BOrL9J7AhVlgBqILpy4TUBm6yaGALIwcGc/qe6EO/VS+k9/RwJdO4qsRqWiTNrxF1Aw==", - "dependencies": { - "EFCore.BulkExtensions.Core": "10.0.1", - "Npgsql.EntityFrameworkCore.PostgreSQL": "10.0.0" - } - }, - "EFCore.BulkExtensions.SqlServer": { - "type": "CentralTransitive", - "requested": "[10.0.1, 10.0.1]", - "resolved": "10.0.1", - "contentHash": "Eg5nL1rjTvrCIjJD7ABjAH3waENRZ5mt/OZkhJe9FXgOIbovS8hzaDzy5Pqi+gwaPJLrdCeQWHfJgNjyULOVUw==", - "dependencies": { - "EFCore.BulkExtensions.Core": "10.0.1", - "Microsoft.Data.SqlClient": "6.1.4", - "Microsoft.EntityFrameworkCore.SqlServer.HierarchyId": "10.0.3", - "NetTopologySuite.IO.SqlServerBytes": "2.1.0" - } - }, - "FluentValidation": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" - }, - "Google.Cloud.PubSub.V1": { - "type": "CentralTransitive", - "requested": "[3.36.0, 3.36.0]", - "resolved": "3.36.0", - "contentHash": "69Tc+bHPvQQPXYs5cnLPhCsEMBYH5CABu/N+yccH+xS2Eforkt3r8DIhy6MUTA+O2NQYKYQSbmU/gIVXYpOBQA==", - "dependencies": { - "Google.Api.Gax.Grpc": "[4.13.1, 5.0.0)", - "Google.Cloud.Iam.V1": "[3.5.0, 4.0.0)" - } - }, - "Google.Cloud.Storage.V1": { - "type": "CentralTransitive", - "requested": "[4.15.0, 4.15.0]", - "resolved": "4.15.0", - "contentHash": "TVlJsaIkMDwHbZPCcLFFKduFcFD0yJL1jsZmV/V/FMjv5iok/eoC0oy8/VHjxfmWmNGkJLPLMAe5MrFLtY7hzg==", - "dependencies": { - "Google.Api.Gax.Rest": "[4.13.1, 5.0.0)", - "Google.Apis.Storage.v1": "[1.74.0.4115, 2.0.0)" - } - }, - "MediatR": { - "type": "CentralTransitive", - "requested": "[12.5.0, 12.5.0]", - "resolved": "12.5.0", - "contentHash": "vqm2H8/nqL5NAJHPhsG1JOPwfkmbVrPyh4svdoRzu+uZh6Ex7PRoHBGsLYC0/RWCEJFqD1ohHNpteQvql9OktA==", - "dependencies": { - "MediatR.Contracts": "[2.0.1, 3.0.0)", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" - } - }, - "MediatR.Contracts": { - "type": "CentralTransitive", - "requested": "[2.0.1, 2.0.1]", - "resolved": "2.0.1", - "contentHash": "FYv95bNT4UwcNA+G/J1oX5OpRiSUxteXaUt2BJbRSdRNiIUNbggJF69wy6mnk2wYToaanpdXZdCwVylt96MpwQ==" - }, - "Microsoft.EntityFrameworkCore": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "a0V7zj/VbYP6dTdWpUgE/r2PuLKtUGe2aJ0lVKkn/wP9ZhaxUz2kQydVfvOjCv2SKxlrqdBfHhPD4Cvlf+4ffA==", - "dependencies": { - "Microsoft.EntityFrameworkCore.Abstractions": "10.0.10", - "Microsoft.EntityFrameworkCore.Analyzers": "10.0.10", - "Microsoft.Extensions.Caching.Memory": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10" - } - }, - "Microsoft.EntityFrameworkCore.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "bOzrFCl6uZCjaSh2bG1ToRQRdx+iXvxosCg9hFyG9OWeAzOFI4xev9OqKeWfKf/kAHyox2JnbcvLVf2ceA7sqA==" - }, - "Microsoft.EntityFrameworkCore.Proxies": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "H/Fu7n1eZb8mLc6Nfj9Hr9IE3DRNhwPhflQnlMB33y+07Bc9C1B+paRWyg0DhX5PUFDdVKlXbBnNNzRMp/UEnA==", - "dependencies": { - "Castle.Core": "5.2.1", - "Microsoft.EntityFrameworkCore": "10.0.10", - "Microsoft.Extensions.Caching.Memory": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10" - } - }, - "Microsoft.EntityFrameworkCore.Relational": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "wNonj40aZxia+GtuBiiD6ZqVh4h6y5Nje1bGdmzZ8/ui0QRsAN+S0SIrLHFCEGbG9cDbeaE40sh+Lr7o9rRs6g==", - "dependencies": { - "Microsoft.EntityFrameworkCore": "10.0.10", - "Microsoft.Extensions.Caching.Memory": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10" - } - }, - "Microsoft.EntityFrameworkCore.SqlServer": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "xwAOvQ1WCfWyA4sRkoYVHyTm8UJ7NDYpRo++2oWuXGQ9g60Z1yepaQBmoPDT2nX24q4ISWnktAW9zARFTiSVvg==", - "dependencies": { - "Microsoft.Data.SqlClient": "6.1.1", - "Microsoft.EntityFrameworkCore.Relational": "10.0.10", - "Microsoft.Extensions.Caching.Memory": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10" - } - }, - "Microsoft.Extensions.Azure": { - "type": "CentralTransitive", - "requested": "[1.14.0, 1.14.0]", - "resolved": "1.14.0", - "contentHash": "g4d2TLfbAiZeXBcGkJdgIl2ZzqMcepMUbECENgg4XXqDU8uGAUwBxJb6x2DBpF6BY09vrHO0Ug3xZcH+cVbMrQ==", - "dependencies": { - "Azure.Core": "1.53.0", - "Microsoft.Extensions.Configuration.Binder": "10.0.3", - "Microsoft.Extensions.Logging": "10.0.3" - } - }, - "Microsoft.Extensions.Configuration": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "plJWK2zpWuuyxI8F8s2scx6Je7N1Ajjs6HvYUGKwRnDMWIVIz9FHwAkiT7ASgrvAOd10T0FPVlh9BzAJJME+jg==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "5Vnd2I75DmZCVEjSynIdJ/0EGafgnLQwgR3t2C2/fkjx/nRG+cLwxLLdInoHeCEpkD5K4Ov/g9ZCRYrl4TRsaA==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.Binder": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "GqmN2o1CkJvk7uWp+p4CwBYW0w/zfoEbvsiFDbO2G8l1Uz+mrDAbAcZiXhU2lufKPby1cjAUdd5GTWpebYOkOA==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.Json": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "uvJ6sHwjgrkMEJOgiC76G0mcZGXerwyyWkwX34EOjCbxKG6TCtfAoqDKAMsCvEBf9HxjlGQEgqsSMOGCmGBf+A==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.FileExtensions": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.DependencyInjection": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "ANyvsgkNBRvcJh2XLgn8veGmajf+8m0AbKK+HPWdRL1yraSNVVSmQhFntLtdz/C795jxqqup+k05cs/3jZQPOA==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "z/2xXlFw2aLGjHyEm6E0tQ+In6VfzQzTrtArbQ2c0TQE16ZbyDCMGPvaUT9I0s8rgy9sRWlU2P9waW37qV04qA==" - }, - "Microsoft.Extensions.Diagnostics.HealthChecks.Common": { - "type": "CentralTransitive", - "requested": "[10.8.0, 10.8.0]", - "resolved": "10.8.0", - "contentHash": "nyB5D+P7R2LOIrAiZyCgcUsQZcKa/n4PIGkE8eXGknlhPTfd5bivi2u4vhFVvjZYkObw/bpWRSwBllyx1ZuWGw==", - "dependencies": { - "Microsoft.Extensions.Configuration.Binder": "10.0.10", - "Microsoft.Extensions.Diagnostics": "10.0.10", - "Microsoft.Extensions.Diagnostics.HealthChecks": "10.0.10", - "Microsoft.Extensions.ObjectPool": "10.0.10", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10", - "Microsoft.Extensions.Telemetry.Abstractions": "10.8.0" - } - }, - "Microsoft.Extensions.Hosting": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "tL9FkfV64GPUDSPvwrgyw42LVzsnVAnyrqJEuZVJbODgrQ3eL63zmzEcVWoCHzfgqUhWggzbgAyUCnz/zfI3Pg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.Binder": "10.0.10", - "Microsoft.Extensions.Configuration.CommandLine": "10.0.10", - "Microsoft.Extensions.Configuration.EnvironmentVariables": "10.0.10", - "Microsoft.Extensions.Configuration.FileExtensions": "10.0.10", - "Microsoft.Extensions.Configuration.Json": "10.0.10", - "Microsoft.Extensions.Configuration.UserSecrets": "10.0.10", - "Microsoft.Extensions.DependencyInjection": "10.0.10", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Diagnostics": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Physical": "10.0.10", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging.Configuration": "10.0.10", - "Microsoft.Extensions.Logging.Console": "10.0.10", - "Microsoft.Extensions.Logging.Debug": "10.0.10", - "Microsoft.Extensions.Logging.EventLog": "10.0.10", - "Microsoft.Extensions.Logging.EventSource": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Extensions.Hosting.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "5LugpYGHk+mkn0a8IZgcyfBca8PCTAU9RQFoMrTdtOOidq88M2SI5f3px6ugnzgxC+eTkvYYJi8pzlUnG5xdAQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Identity.Core": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "ZA+9MX1D7+jm/1RF3iOOBThCps55MT1jAwLne1dryMj9cuAeOVtGS3pBegqk1Mwza+0tuVAklob+Q/EA9bHnQw==", - "dependencies": { - "Microsoft.AspNetCore.Cryptography.KeyDerivation": "10.0.10", - "Microsoft.Extensions.Diagnostics": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Extensions.Logging": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "Tf6z5HsL0VDYRTfvsoNrTGHGheCwkTsZBA2FFh5ATJUbkAwug+FFNISJK2gjpUNemlAOoWllAK52HOWCjto3EQ==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "zkFxGYUvdxAvIKTyXHrmW+Sux53D4SezD9dMyZ6hrwwzPQJNuwCRy1f5W7AvYTqacEGhWF2XderRQG1OvbV8og==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Options": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "srnhnk7nE8krBiIXp71LvBmKBtraBONWSRzdjJgRv1Ko9Mp8IVNqv4vIS9hGeVteBig8aQkva9ZG+sC+o5sVcA==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Npgsql.EntityFrameworkCore.PostgreSQL": { - "type": "CentralTransitive", - "requested": "[10.0.3, 10.0.3]", - "resolved": "10.0.3", - "contentHash": "IPGrrZnRkuW7OlHDhUESZz4G5DLkW7Nej/O3Cx+0iTsgyU5XJxBgpsvTHLloo3WWuAKKbDHXBvWPVkX1deRh1Q==", - "dependencies": { - "Microsoft.EntityFrameworkCore": "[10.0.4, 11.0.0)", - "Microsoft.EntityFrameworkCore.Relational": "[10.0.4, 11.0.0)", - "Npgsql": "10.0.3" - } - }, - "OpenTelemetry.Api": { - "type": "CentralTransitive", - "requested": "[1.18.0, )", - "resolved": "1.18.0", - "contentHash": "Dhzm5oughIY9EWckt2J1yXcEbXpki5WCL2q7prJoYxzH6C7jdkfGtPMTkUVZZ4AhjJKzQnlC+kLSIlmIVwC4Vw==" - }, - "Polly": { - "type": "CentralTransitive", - "requested": "[8.7.0, 8.7.0]", - "resolved": "8.7.0", - "contentHash": "0qR4f0OR8FeCAfLWcfwzAM7w6EmpUgwa22PgxKjcL25dEAto7sKpQQXbtxp38vVvK+V3RFkh/TeI7g/iUdoYIQ==", - "dependencies": { - "Polly.Core": "8.7.0" - } - }, - "RabbitMQ.Client": { - "type": "CentralTransitive", - "requested": "[7.2.1, 7.2.1]", - "resolved": "7.2.1", - "contentHash": "YKXEfg9fVQiTKgZlvIhAfPSFaamEgi8DsQmisCH0IAsU4FYLrtoguDrDj6JtJVGUt40QPnBLRH6fTQcAC4qsOg==", - "dependencies": { - "System.Threading.RateLimiting": "8.0.0" - } - }, - "ReHackt.Extensions.Options.Validation": { - "type": "CentralTransitive", - "requested": "[10.0.1, 10.0.1]", - "resolved": "10.0.1", - "contentHash": "/mjsZpv8DLDeHns99iDROqFa0eJ/5NU4X2kMMt3VTfVf3xYWQNLPoTs//x+wKXWYSo+pdXkA+ASvaJT/pifB2Q==", - "dependencies": { - "Microsoft.Extensions.Hosting": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Serilog": { - "type": "CentralTransitive", - "requested": "[4.4.0, 4.4.0]", - "resolved": "4.4.0", - "contentHash": "ZC6Le3rr4TVJJjS4KsQAesxeF1EhW9qcZmmG7eP5Y2G3+gTGkJEUXkq4+tZNPtyp05I0wWOxnIjwtxFweJsObw==" - }, - "SimpleBase": { - "type": "CentralTransitive", - "requested": "[5.6.3, 5.6.3]", - "resolved": "5.6.3", - "contentHash": "ayL730f1gdQVYmFFLKSX83QcoltyKSMBsV94qfCBpZHMaJz/e3ALuXKZDD8SkseWbNHxBe0HxLRBe5OOpQ9HpA==" - } - }, - "net10.0/linux-arm64": { - "Microsoft.Data.SqlClient": { - "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" - } - }, - "Microsoft.Data.SqlClient.SNI.runtime": { - "type": "Transitive", - "resolved": "6.0.2", - "contentHash": "f+pRODTWX7Y67jXO3T5S2dIPZ9qMJNySjlZT/TKmWVNWe19N8jcWmHaqHnnchaq3gxEKv1SWVY5EFzOD06l41w==" - }, - "Microsoft.SqlServer.Types": { - "type": "Transitive", - "resolved": "160.1000.6", - "contentHash": "4kk+rz5vnIPr9ENzm8KttUbhBKftv0uHSSFDVjc5OuKPtRP5q0lDbYUy5ZsoYCAG3RrZdJoxPnWN2JNozZAiGA==", - "dependencies": { - "Microsoft.SqlServer.Server": "1.0.0" - } - }, - "System.Diagnostics.EventLog": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" - }, - "System.Management": { - "type": "Transitive", - "resolved": "7.0.2", - "contentHash": "/qEUN91mP/MUQmJnM5y5BdT7ZoPuVrtxnFlbJ8a3kBJGhe2wCzBfnPFtK2wTtEEcf3DMGR9J00GZZfg6HRI6yA==", - "dependencies": { - "System.CodeDom": "7.0.0" - } - }, - "System.Security.Cryptography.Pkcs": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" - } - }, - "net10.0/linux-x64": { - "Microsoft.Data.SqlClient": { - "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" - } - }, - "Microsoft.Data.SqlClient.SNI.runtime": { - "type": "Transitive", - "resolved": "6.0.2", - "contentHash": "f+pRODTWX7Y67jXO3T5S2dIPZ9qMJNySjlZT/TKmWVNWe19N8jcWmHaqHnnchaq3gxEKv1SWVY5EFzOD06l41w==" - }, - "Microsoft.SqlServer.Types": { - "type": "Transitive", - "resolved": "160.1000.6", - "contentHash": "4kk+rz5vnIPr9ENzm8KttUbhBKftv0uHSSFDVjc5OuKPtRP5q0lDbYUy5ZsoYCAG3RrZdJoxPnWN2JNozZAiGA==", - "dependencies": { - "Microsoft.SqlServer.Server": "1.0.0" - } - }, - "System.Diagnostics.EventLog": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" - }, - "System.Management": { - "type": "Transitive", - "resolved": "7.0.2", - "contentHash": "/qEUN91mP/MUQmJnM5y5BdT7ZoPuVrtxnFlbJ8a3kBJGhe2wCzBfnPFtK2wTtEEcf3DMGR9J00GZZfg6HRI6yA==", - "dependencies": { - "System.CodeDom": "7.0.0" - } - }, - "System.Security.Cryptography.Pkcs": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" - } - }, - "net10.0/osx-arm64": { - "Microsoft.Data.SqlClient": { - "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" - } - }, - "Microsoft.Data.SqlClient.SNI.runtime": { - "type": "Transitive", - "resolved": "6.0.2", - "contentHash": "f+pRODTWX7Y67jXO3T5S2dIPZ9qMJNySjlZT/TKmWVNWe19N8jcWmHaqHnnchaq3gxEKv1SWVY5EFzOD06l41w==" - }, - "Microsoft.SqlServer.Types": { - "type": "Transitive", - "resolved": "160.1000.6", - "contentHash": "4kk+rz5vnIPr9ENzm8KttUbhBKftv0uHSSFDVjc5OuKPtRP5q0lDbYUy5ZsoYCAG3RrZdJoxPnWN2JNozZAiGA==", - "dependencies": { - "Microsoft.SqlServer.Server": "1.0.0" - } - }, - "System.Diagnostics.EventLog": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" - }, - "System.Management": { - "type": "Transitive", - "resolved": "7.0.2", - "contentHash": "/qEUN91mP/MUQmJnM5y5BdT7ZoPuVrtxnFlbJ8a3kBJGhe2wCzBfnPFtK2wTtEEcf3DMGR9J00GZZfg6HRI6yA==", - "dependencies": { - "System.CodeDom": "7.0.0" - } - }, - "System.Security.Cryptography.Pkcs": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" - } - }, - "net10.0/win-x64": { - "Microsoft.Data.SqlClient": { - "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" - } - }, - "Microsoft.Data.SqlClient.SNI.runtime": { - "type": "Transitive", - "resolved": "6.0.2", - "contentHash": "f+pRODTWX7Y67jXO3T5S2dIPZ9qMJNySjlZT/TKmWVNWe19N8jcWmHaqHnnchaq3gxEKv1SWVY5EFzOD06l41w==" - }, - "Microsoft.SqlServer.Types": { - "type": "Transitive", - "resolved": "160.1000.6", - "contentHash": "4kk+rz5vnIPr9ENzm8KttUbhBKftv0uHSSFDVjc5OuKPtRP5q0lDbYUy5ZsoYCAG3RrZdJoxPnWN2JNozZAiGA==", - "dependencies": { - "Microsoft.SqlServer.Server": "1.0.0" - } - }, - "System.Diagnostics.EventLog": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" - }, - "System.Management": { - "type": "Transitive", - "resolved": "7.0.2", - "contentHash": "/qEUN91mP/MUQmJnM5y5BdT7ZoPuVrtxnFlbJ8a3kBJGhe2wCzBfnPFtK2wTtEEcf3DMGR9J00GZZfg6HRI6yA==", - "dependencies": { - "System.CodeDom": "7.0.0" - } - }, - "System.Security.Cryptography.Pkcs": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" - } - } - } -} \ No newline at end of file diff --git a/Modules/Tags/src/Tags.Infrastructure/Persistence/Repository/IServiceCollectionExtensions.cs b/Modules/Tags/src/Tags.Infrastructure/Persistence/Repository/IServiceCollectionExtensions.cs index 974a02f6f2..d7ac47ee53 100644 --- a/Modules/Tags/src/Tags.Infrastructure/Persistence/Repository/IServiceCollectionExtensions.cs +++ b/Modules/Tags/src/Tags.Infrastructure/Persistence/Repository/IServiceCollectionExtensions.cs @@ -1,4 +1,4 @@ -using Backbone.Modules.Tags.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Tags.Abstractions; using Microsoft.Extensions.DependencyInjection; namespace Backbone.Modules.Tags.Infrastructure.Persistence.Repository; diff --git a/Modules/Tags/src/Tags.Infrastructure/Persistence/Repository/TagsRepository.cs b/Modules/Tags/src/Tags.Infrastructure/Persistence/Repository/TagsRepository.cs index f9fb755a47..ca3b35dfda 100644 --- a/Modules/Tags/src/Tags.Infrastructure/Persistence/Repository/TagsRepository.cs +++ b/Modules/Tags/src/Tags.Infrastructure/Persistence/Repository/TagsRepository.cs @@ -1,5 +1,4 @@ -using Backbone.Modules.Tags.Application; -using Backbone.Modules.Tags.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Tags.Abstractions; using Backbone.Modules.Tags.Domain; using Microsoft.Extensions.Options; @@ -10,7 +9,7 @@ public class TagsRepository : ITagsRepository private readonly List _supportedLanguages; private readonly Dictionary> _attributes; - public TagsRepository(IOptions options) + public TagsRepository(IOptions options) { _supportedLanguages = options.Value.SupportedLanguages; _attributes = options.Value.TagsForAttributeValueTypes; diff --git a/Modules/Tags/src/Tags.Infrastructure/Tags.Infrastructure.csproj b/Modules/Tags/src/Tags.Infrastructure/Tags.Infrastructure.csproj index d04c8a1be9..720695fbba 100644 --- a/Modules/Tags/src/Tags.Infrastructure/Tags.Infrastructure.csproj +++ b/Modules/Tags/src/Tags.Infrastructure/Tags.Infrastructure.csproj @@ -1,8 +1,12 @@  - + + + + + diff --git a/Modules/Tags/src/Tags.Infrastructure/packages.lock.json b/Modules/Tags/src/Tags.Infrastructure/packages.lock.json index 6e1912361a..b7dce7eb1d 100644 --- a/Modules/Tags/src/Tags.Infrastructure/packages.lock.json +++ b/Modules/Tags/src/Tags.Infrastructure/packages.lock.json @@ -2,1082 +2,14 @@ "version": 2, "dependencies": { "net10.0": { - "AWSSDK.Core": { - "type": "Transitive", - "resolved": "4.0.100.9", - "contentHash": "OPYy41jZjXwxxcYRotaq24HDrwUnVtBB/mvg1IwB9D1ICXAtHqMa1sp2hpmlVJCZwjlcrPcTCJIejInvV1vp5g==" - }, - "Azure.Core": { - "type": "Transitive", - "resolved": "1.60.0", - "contentHash": "qCa5DLAq0w14aTl9/bvMZNA/QxPzYj1a4zakrpeudxWd4D4YliRHRfccD3yFECeHkMkvQjMmyWLggb8bzhDVKA==", - "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "10.0.9", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.9", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.9", - "Microsoft.Identity.Client": "4.84.2", - "Microsoft.Identity.Client.Extensions.Msal": "4.84.2", - "System.ClientModel": "1.14.0", - "System.Memory.Data": "10.0.9" - } - }, - "Azure.Core.Amqp": { - "type": "Transitive", - "resolved": "1.3.1", - "contentHash": "AY1ZM4WwLBb9L2WwQoWs7wS2XKYg83tp3yVVdgySdebGN0FuIszuEqCy3Nhv6qHpbkjx/NGuOTsUbF/oNGBgwA==", - "dependencies": { - "Microsoft.Azure.Amqp": "2.6.7", - "System.Memory.Data": "1.0.2" - } - }, - "Azure.Identity": { - "type": "Transitive", - "resolved": "1.17.1", - "contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Microsoft.Identity.Client": "4.78.0", - "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" - } - }, - "Azure.Storage.Common": { - "type": "Transitive", - "resolved": "12.28.0", - "contentHash": "5l8YhNrks38zKLGFW2BBFLwieyamH/xauABSASsdpZv79G0f+n2n22IjkRmUqCmALSupkwRHh2LOhbW3yj5Qgw==", - "dependencies": { - "Azure.Core": "1.55.0", - "System.IO.Hashing": "10.0.3" - } - }, - "Castle.Core": { - "type": "Transitive", - "resolved": "5.2.1", - "contentHash": "wHARzQA695jwwKreOzNsq54KiGqKP38tv8hi8e2FXDEC/sA6BtrX90tVPDkOfVu13PbEzr00TCV8coikl+D1Iw==", - "dependencies": { - "System.Diagnostics.EventLog": "6.0.0" - } - }, - "Google.Api.CommonProtos": { - "type": "Transitive", - "resolved": "2.17.0", - "contentHash": "elfQPknFr495hm7vdy6ZlgyQh6yzZq9TU7sS35L/Fj/fqjM/mUGau9gVJLhvQEtUlPjtR80hpn/m9HvBMyCXIw==", - "dependencies": { - "Google.Protobuf": "[3.31.1, 4.0.0]" - } - }, - "Google.Api.Gax": { - "type": "Transitive", - "resolved": "4.13.1", - "contentHash": "ujDpZk7O2VqAEIqcSlhH0FKzVpGZWly/qcNjHxpNUrL445Tei9PHnu4V1pwW2WDiMDvo3TpL1Bi4DeU525Afrg==", - "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "6.0.0", - "Newtonsoft.Json": "13.0.4" - } - }, - "Google.Api.Gax.Grpc": { - "type": "Transitive", - "resolved": "4.13.1", - "contentHash": "QgYF0bd8z6xWSVLGkGAMPB70seJSa9J02lFn8LT0Rb7PjSxZYpX+wU6LbVmghxDi6Wd64taulpX37pFq20J61g==", - "dependencies": { - "Google.Api.CommonProtos": "2.17.0", - "Google.Api.Gax": "4.13.1", - "Google.Apis.Auth": "1.73.0", - "Grpc.Auth": "[2.71.0, 3.0.0)", - "Grpc.Core.Api": "[2.71.0, 3.0.0)", - "Grpc.Net.Client": "[2.71.0, 3.0.0)", - "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0" - } - }, - "Google.Api.Gax.Rest": { - "type": "Transitive", - "resolved": "4.13.1", - "contentHash": "wDfFZXKoHC6sy+Yfub/4cLQOb5ozBVPqDOrxCUAeTfku4d96ILqgzulJSdkPHbiT3oWB3hlYTdJgUwNSJjyo+A==", - "dependencies": { - "Google.Api.Gax": "4.13.1", - "Google.Apis.Auth": "1.73.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0" - } - }, - "Google.Apis": { - "type": "Transitive", - "resolved": "1.74.0", - "contentHash": "Z6hSkmRD6V8/raSBqn/EsPpNop6suaLaGE9DbSY3yRE5G47l4zYqrJgapcLARk2Z3TsQUDmWz+w/tob3wuVt3g==", - "dependencies": { - "Google.Apis.Core": "1.74.0" - } - }, - "Google.Apis.Auth": { - "type": "Transitive", - "resolved": "1.74.0", - "contentHash": "43H4foh3zfWgboK8QnJjIfPQuBiS794TxqQLDfeE3erQSluKmEN0qeDuwxLTpSr9Mtwj76S4LWxPneuSbC6fNg==", - "dependencies": { - "Google.Apis": "1.74.0", - "Google.Apis.Core": "1.74.0", - "System.Management": "7.0.2" - } - }, - "Google.Apis.Core": { - "type": "Transitive", - "resolved": "1.74.0", - "contentHash": "gWOIiks6yo2TRliIyy10V18BJOO2BfUSPJFiTW6Tfap4tm3hFj7nvYU3XIfwzAxwoIy6nsBoqVDt9iBDSXrvYQ==", - "dependencies": { - "Newtonsoft.Json": "13.0.4" - } - }, - "Google.Apis.Storage.v1": { - "type": "Transitive", - "resolved": "1.74.0.4115", - "contentHash": "9J3YPPSG53xwQLzdQ304dI+DMtVxJDpEazA2QQ2LA8IJoM4VUu4DpIxyhTGxpnAK4Db7s4LwzeNi6NkPKM3HzQ==", - "dependencies": { - "Google.Apis": "1.74.0", - "Google.Apis.Auth": "1.74.0" - } - }, - "Google.Cloud.Iam.V1": { - "type": "Transitive", - "resolved": "3.5.0", - "contentHash": "CTLBAQ7WxsLoA4lovpvhF4MRUJH64smrIjuD/0jDrLs6zpbpf+f8Ur8ekRKv67kwlpN6Ug0q7EuT2csWDEczlQ==", - "dependencies": { - "Google.Api.Gax.Grpc": "[4.12.1, 5.0.0)" - } - }, - "Google.Protobuf": { - "type": "Transitive", - "resolved": "3.31.1", - "contentHash": "gSnJbUmGiOTdWddPhqzrEscHq9Ls6sqRDPB9WptckyjTUyx70JOOAaDLkFff8gManZNN3hllQ4aQInnQyq/Z/A==" - }, - "Grpc.Auth": { - "type": "Transitive", - "resolved": "2.71.0", - "contentHash": "t2aGh/pMgqmc3GimtYfC7VcgVY/VSbk6SLH+61wewsgK45tzxxD9nYYItT5bpLn7fbebirmHXfgJcVKIArd0cg==", - "dependencies": { - "Google.Apis.Auth": "1.69.0", - "Grpc.Core.Api": "2.71.0" - } - }, - "Grpc.Core.Api": { - "type": "Transitive", - "resolved": "2.71.0", - "contentHash": "QquqUC37yxsDzd1QaDRsH2+uuznWPTS8CVE2Yzwl3CvU4geTNkolQXoVN812M2IwT6zpv3jsZRc9ExJFNFslTg==" - }, - "Grpc.Net.Client": { - "type": "Transitive", - "resolved": "2.71.0", - "contentHash": "U1vr20r5ngoT9nlb7wejF28EKN+taMhJsV9XtK9MkiepTZwnKxxiarriiMfCHuDAfPUm9XUjFMn/RIuJ4YY61w==", - "dependencies": { - "Grpc.Net.Common": "2.71.0", - "Microsoft.Extensions.Logging.Abstractions": "6.0.0" - } - }, - "Grpc.Net.Common": { - "type": "Transitive", - "resolved": "2.71.0", - "contentHash": "v0c8R97TwRYwNXlC8GyRXwYTCNufpDfUtj9la+wUrZFzVWkFJuNAltU+c0yI3zu0jl54k7en6u2WKgZgd57r2Q==", - "dependencies": { - "Grpc.Core.Api": "2.71.0" - } - }, - "MedallionTopologicalSort": { - "type": "Transitive", - "resolved": "1.0.0", - "contentHash": "dcAqM8TcyZQ/T466CvqNMUUn/G0FQE+4R7l62ngXH7hLFP9yA7yoP/ySsLgiXx3pGUQC3J+cUvXmJOOR/eC+oQ==" - }, - "Microsoft.AspNetCore.Cryptography.Internal": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "T/kOT3kAVZU1B0QlpRxASpdbAJ/o5DLFW7bWS6vyE44uMqPmojEcaFENt6ww1xaLH++ZNwsEJ1YUOwPK050lNQ==" - }, - "Microsoft.AspNetCore.Cryptography.KeyDerivation": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "w6P461MvhJrttEcyGfN00tf8rdwQJFK+s0pebR44jiTzAa+PUZ804xzbGZQpR6klSFd212M4DIIROSaW0Acifg==", - "dependencies": { - "Microsoft.AspNetCore.Cryptography.Internal": "10.0.10" - } - }, - "Microsoft.Azure.Amqp": { - "type": "Transitive", - "resolved": "2.7.0", - "contentHash": "gm/AEakujttMzrDhZ5QpRz3fICVkYDn/oDG9SmxDP+J7R8JDBXYU9WWG7hr6wQy40mY+wjUF0yUGXDPRDRNJwQ==" - }, - "Microsoft.Bcl.AsyncInterfaces": { - "type": "Transitive", - "resolved": "10.0.9", - "contentHash": "Aq7M8lG6BrHeatqKqncVm9m55ec34k6nnfPRLe/PvGg+b/pAsRM2ejofeKmCLjTXMa+5NGXm382f8CG/D5WDow==" - }, - "Microsoft.Data.SqlClient": { - "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" - } - }, - "Microsoft.Data.SqlClient.SNI.runtime": { - "type": "Transitive", - "resolved": "6.0.2", - "contentHash": "f+pRODTWX7Y67jXO3T5S2dIPZ9qMJNySjlZT/TKmWVNWe19N8jcWmHaqHnnchaq3gxEKv1SWVY5EFzOD06l41w==" - }, - "Microsoft.EntityFrameworkCore.Analyzers": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "2gLDordUCGf3aNOOuqtTbP5mxhiP9nk6TnvGiE3RnqT891O+Zf/qKu1PIREubs1M16A0SImr4vULBfU5BTDs1Q==" - }, - "Microsoft.EntityFrameworkCore.SqlServer.Abstractions": { - "type": "Transitive", - "resolved": "10.0.3", - "contentHash": "K73jOafOjF8oMLrPhXz3er6csmXCOGBQbeXsFPXrtz7/4QJJYalcOHQzoppEhl1gwLEZNnJMUDlOWcQ1FeW27Q==", - "dependencies": { - "Microsoft.SqlServer.Types": "160.1000.6" - } - }, - "Microsoft.EntityFrameworkCore.SqlServer.HierarchyId": { - "type": "Transitive", - "resolved": "10.0.3", - "contentHash": "tkiCR+rJMb9pib0jlJH1nItw36SlFj0l8sD/PQSd7sj1cvKhW1qmA7hahrp3WOvp7ZsIIXgMDUltryzinNOMTw==", - "dependencies": { - "Microsoft.Data.SqlClient": "6.1.1", - "Microsoft.EntityFrameworkCore.SqlServer": "10.0.3", - "Microsoft.EntityFrameworkCore.SqlServer.Abstractions": "10.0.3", - "Microsoft.Extensions.Caching.Memory": "10.0.3", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.3", - "Microsoft.Extensions.Logging": "10.0.3", - "Microsoft.SqlServer.Types": "160.1000.6" - } - }, - "Microsoft.Extensions.Caching.Abstractions": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "4ZFBNE+jzR+CrWWlhOesnmywCW7pYKT0dxyAQRdL11yJwxe4jvcAu31eorFtEkoFeCDcUTeNssgPv2yaRRptaQ==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.Caching.Memory": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "N1w5H7uK6gCTnCBZAWzE0/EQYSPysij/uYwDqntqBVvBa6bjMmBKitsnEFd6yh/SX3wLm67nO6+OnZ84K+gZWg==", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "10.0.10", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.Compliance.Abstractions": { - "type": "Transitive", - "resolved": "10.8.0", - "contentHash": "7I0DXMTCqpXpXg+SLLDlfedtv6DN5Lgiv+PR3MclzqKPOHNB17YP42KMNI61ckSrffh0xsuIqQyCIjvWc6vUuw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.ObjectPool": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.CommandLine": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "33cBeR2HRbzHUTtmcmLdNOApneNGcymwwL4arHuotgVK9Frba8kcDTrvVTj7cSCmF1R9OiSbZH0KxNOwab3HUg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.EnvironmentVariables": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "KRfFSSCV58vEdU7mPED/YMzeovIWF5P0g8s9K8n9HEfy0/WzMq37SrPdXdFN5/dFT/rPMHpF7AvpoXHckbcBFg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.FileExtensions": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "ZOhZYwvbXGTgGVRwswIirofEMVHuWdxjdh0JeUZXwaF9cgcjXdz/t0ELtgaevw7ezTyv47yPNCgGreWtLkn3IQ==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Physical": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.UserSecrets": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "1s1sKFTk/Foam64JY6+m/diH8drL3Wx6V3gtSd5v1IEZtszZYyc1pW8uRnMblzpNiR0l0t8gGk7tXj3xHzFgdg==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.Json": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Physical": "10.0.10" - } - }, - "Microsoft.Extensions.Diagnostics": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "Kr/e7lUf4+N8tacbqJ2Ctwe/HarKdAc9ZkgKVVqvtJDBKbez+T/KnUwu82KSlnBp/SrpBcxc7u7xkE2oUZT/5Q==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.10", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10" - } - }, - "Microsoft.Extensions.Diagnostics.Abstractions": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "9uWiKpeOVac355STyChWR/pliFX/5CeLqChW9kKsaxyDH4EUTZxMkT4Jwp/J/peLm0GBFmSX5c0WCse3yCnq1Q==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Extensions.Diagnostics.HealthChecks": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "R0O5oG+zAJeBSM8nNTa+Ycj2Zobyr/v6Ilo7Dha0sNB2Vq/XXoLdoecj9DAWGbN8YrPaW6u8+osTQ5Ypj7ZF0w==", - "dependencies": { - "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": "10.0.10", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "6euxgVR7NS83y0a2wLRAxfYXusLQJ2e1ah0MpQgYTYMs5lYrmdNP79C6T8uvRZdP87n5mcCcp6+w0EyWAidKZw==" - }, - "Microsoft.Extensions.FileProviders.Abstractions": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "c5zqFCY9DiIpMovLd7/d/CTiEtrMOuQ639dhv3PABtKQIKNQikSHwQt8+N679uii9q+B55lgK28Uv64FOwEu8w==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.FileProviders.Physical": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "jhJAyo38kSrH3ARvWUk0h8itogVnQu2DCZuPo+s0Z+tXes0ugTxMPaHYzap85785eHQmPFqD9TYERqBbtGxn/w==", - "dependencies": { - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.FileSystemGlobbing": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.FileSystemGlobbing": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "jSOCVxEwCd4Aq925kJVz1kSO1EpX2OHYKL04qVREXkDU7Ce3pVDdHPYm+fEy8y/th2kJf/DAstRHpJAqoNWP8w==" - }, - "Microsoft.Extensions.Logging.Configuration": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "cLrqxkuEfcilZ8SjK+9KAnpLk9lOoMPaOokF+wRUYie+iUEcdX4/p/+gJkt0BYgWLthjpBUCkVTBI6Kxg0nsOw==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.Binder": "10.0.10", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.Console": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "VIlNzPwPS0GeQVSmCqqo36ugryX3LpE9ul6gEkks5VLET3weH/XMLeWmclwfoGn4Nxi2mwVibB+OZBVJ9tDqvg==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging.Configuration": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.Debug": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "8+TZBnV5fgBXoVNJ5ROSErUwYogk4hOgV7c2HWK1u5cqKGmiUTUn7+KqZ35iQu8e/B7Ykccyz5OTjdXcidNZ9g==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.EventLog": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "0RE4951AzQ+YD4gVrvbq0BhdsiBgSDo44yM7+QBZ2mrmMJeNjY+teCIYfUjqDPVYnKs0HR6SkkhgrX1YgXZq3Q==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "System.Diagnostics.EventLog": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.EventSource": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "85SAPwXhJtdBInzN2k7SChiFiBGh3KOWay5AfoY+GREF6P7oZA98+ST2p7Z9384iLKYjkZSKIZ/FqIO5aojtNw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.ObjectPool": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "Tx0R6PY9MNSh0mDKSxbpHLuuec93IxF1cel+1ithQnMNr/vbfLSSHOQHGHIppAJCGfPcEo/wO1Ylj+QpXtzo3A==" - }, - "Microsoft.Extensions.Options.ConfigurationExtensions": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "tnBmu/LwF25ZQK+HBNCu2xrwnkKoB/XEbJyooGGoYxHrhvxbSKi7eOFiJ4AXBy/QU4vtCvCJfoi8k9Ej72qzOQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.Binder": "10.0.10", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.Primitives": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "5wu/GrYVd8mG2DVUw3vFJzF+O336TyTGg/Kmcgw9bfwYhCoFiV5lR5QeEmKecJyrW4W54nMfD3p3589E8a7czQ==" - }, - "Microsoft.Extensions.Telemetry.Abstractions": { - "type": "Transitive", - "resolved": "10.8.0", - "contentHash": "XHlOerNKjVrPJqbuFi196tyFhS7eNMoPUC800xJmCGsSiruE/goGoKyBKzS1HeelAGnoFPFrS+LgNitXNeEYRQ==", - "dependencies": { - "Microsoft.Extensions.Compliance.Abstractions": "10.8.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.ObjectPool": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Identity.Client": { - "type": "Transitive", - "resolved": "4.84.2", - "contentHash": "Va9FjmABSgj/lcUfHH0pBNQkmS7SNyepz2ERV7Yynp6QgEYpFdSqR6Vzy1WWipN8GS5pBHuXoZbqaDWuARCrHQ==", - "dependencies": { - "Microsoft.IdentityModel.Abstractions": "8.14.0" - } - }, - "Microsoft.Identity.Client.Extensions.Msal": { - "type": "Transitive", - "resolved": "4.84.2", - "contentHash": "+D98LaU3dOu/Nzs6kgbBJapMvH7iwYcAeC99XwSkpmEadsPv6rozecOl9P6m4A3RfpOuPt9e6J6TwwUUp3+M4w==", - "dependencies": { - "Microsoft.Identity.Client": "4.84.2", - "System.Security.Cryptography.ProtectedData": "4.5.0" - } - }, - "Microsoft.IdentityModel.Abstractions": { - "type": "Transitive", - "resolved": "8.14.0", - "contentHash": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==" - }, - "Microsoft.IdentityModel.JsonWebTokens": { - "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "3Izi75UCUssvo8LPx3OVnEeZay58qaFicrtSnbtUt7q8qQi0gy46gh4V8VUTkMVMKXV6VMyjBVmeNNgeCUJuIw==", - "dependencies": { - "Microsoft.IdentityModel.Tokens": "7.7.1" - } - }, - "Microsoft.IdentityModel.Logging": { - "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "BZNgSq/o8gsKExdYoBKPR65fdsxW0cTF8PsdqB8y011AGUJJW300S/ZIsEUD0+sOmGc003Gwv3FYbjrVjvsLNQ==", - "dependencies": { - "Microsoft.IdentityModel.Abstractions": "7.7.1" - } - }, - "Microsoft.IdentityModel.Protocols": { - "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "h+fHHBGokepmCX+QZXJk4Ij8OApCb2n2ktoDkNX5CXteXsOxTHMNgjPGpAwdJMFvAL7TtGarUnk3o97NmBq2QQ==", - "dependencies": { - "Microsoft.IdentityModel.Tokens": "7.7.1" - } - }, - "Microsoft.IdentityModel.Protocols.OpenIdConnect": { - "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "yT2Hdj8LpPbcT9C9KlLVxXl09C8zjFaVSaApdOwuecMuoV4s6Sof/mnTDz/+F/lILPIBvrWugR9CC7iRVZgbfQ==", - "dependencies": { - "Microsoft.IdentityModel.Protocols": "7.7.1", - "System.IdentityModel.Tokens.Jwt": "7.7.1" - } - }, - "Microsoft.IdentityModel.Tokens": { - "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "fQ0VVCba75lknUHGldi3iTKAYUQqbzp1Un8+d9cm9nON0Gs8NAkXddNg8iaUB0qi/ybtAmNWizTR4avdkCJ9pQ==", - "dependencies": { - "Microsoft.IdentityModel.Logging": "7.7.1" - } - }, - "Microsoft.SqlServer.Server": { - "type": "Transitive", - "resolved": "1.0.0", - "contentHash": "N4KeF3cpcm1PUHym1RmakkzfkEv3GRMyofVv40uXsQhCQeglr2OHNcUk2WOG51AKpGO8ynGpo9M/kFXSzghwug==" - }, - "Microsoft.SqlServer.Types": { - "type": "Transitive", - "resolved": "160.1000.6", - "contentHash": "4kk+rz5vnIPr9ENzm8KttUbhBKftv0uHSSFDVjc5OuKPtRP5q0lDbYUy5ZsoYCAG3RrZdJoxPnWN2JNozZAiGA==", - "dependencies": { - "Microsoft.SqlServer.Server": "1.0.0" - } - }, - "NetTopologySuite": { - "type": "Transitive", - "resolved": "2.6.0", - "contentHash": "1B1OTacTd4QtFyBeuIOcThwSSLUdRZU3bSFIwM8vk36XiZlBMi3K36u74e4OqwwHRHUuJC1PhbDx4hyI266X1Q==" - }, - "NetTopologySuite.IO.SqlServerBytes": { - "type": "Transitive", - "resolved": "2.1.0", - "contentHash": "R4BcV19f2l6EjHSjh/EHwLhYQHrOov9vig1EW5oBm0iqlZOgaIJm5tBnlbFnYlvdYOPuf5p0Qtf8PCVwH77Wbg==", - "dependencies": { - "NetTopologySuite": "[2.0.0, 3.0.0-A)" - } - }, - "Newtonsoft.Json": { - "type": "Transitive", - "resolved": "13.0.4", - "contentHash": "pdgNNMai3zv51W5aq268sujXUyx7SNdE2bj1wZcWjAQrKMFZV260lbqYop1d2GM67JI1huLRwxo9ZqnfF/lC6A==" - }, - "Npgsql": { - "type": "Transitive", - "resolved": "10.0.3", - "contentHash": "7nb5YzXuvWWJxB0J8DiyL3we+X4FOctZrt0fIBnucOIaIevFEEwGQVZKtiu9olXdlNAK1eNgqSral6r/jlhI4w==", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "10.0.0" - } - }, - "Polly.Core": { - "type": "Transitive", - "resolved": "8.7.0", - "contentHash": "BS2t+nsBer16PIebCEPNBK5fgMisADQyRCd7K+BgkMWpFmSaiYE+rVVNpFhGRqUkJmNSLmw0uCNzHHWfgml28Q==" - }, - "System.ClientModel": { - "type": "Transitive", - "resolved": "1.14.0", - "contentHash": "yhIJHDW3Hh5kcvhHv3ww1T8qvya06Nlwo/SR/rke4/fHXtyKiqQV/9b/VDhnVI7QUcMnpfvh4pIEFhNsTDLeKQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.3", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.3", - "Microsoft.Extensions.Logging.Abstractions": "10.0.3", - "System.Memory.Data": "10.0.3" - } - }, - "System.CodeDom": { - "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "GLltyqEsE5/3IE+zYRP5sNa1l44qKl9v+bfdMcwg+M9qnQf47wK3H0SUR/T+3N4JEQXF3vV4CSuuo0rsg+nq2A==" - }, - "System.Configuration.ConfigurationManager": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "vPinosRgEk1CGjohbv0pDuz6gPprkWo5xvBTjOJjks5JOgOEWvPndq5NngGxiTcBcy1+k9GwzZ1c3Bp2fU5ezw==", - "dependencies": { - "System.Diagnostics.EventLog": "9.0.11", - "System.Security.Cryptography.ProtectedData": "9.0.11" - } - }, - "System.Diagnostics.EventLog": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" - }, - "System.IdentityModel.Tokens.Jwt": { - "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "rQkO1YbAjLwnDJSMpRhRtrc6XwIcEOcUvoEcge+evurpzSZM3UNK+MZfD3sKyTlYsvknZ6eJjSBfnmXqwOsT9Q==", - "dependencies": { - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Tokens": "7.7.1" - } - }, - "System.IO.Hashing": { - "type": "Transitive", - "resolved": "10.0.3", - "contentHash": "La6ICwsdTKhVX+LKN+pvFjQRR3LhLwq3uKdi2knjLzRyPYBSydF4cjXidYxIiTcDD6XVYdsBWQEI8ZxiZ/OdIg==" - }, - "System.Management": { - "type": "Transitive", - "resolved": "7.0.2", - "contentHash": "/qEUN91mP/MUQmJnM5y5BdT7ZoPuVrtxnFlbJ8a3kBJGhe2wCzBfnPFtK2wTtEEcf3DMGR9J00GZZfg6HRI6yA==", - "dependencies": { - "System.CodeDom": "7.0.0" - } - }, - "System.Memory.Data": { - "type": "Transitive", - "resolved": "10.0.9", - "contentHash": "YweovHiLUoEdbr2Xv8eRqCSkTu1vMms4a6xBHaQiMSFVy32PL+hXv6Vhol2NWOmLHjaVgTyhJ3R52U6JxS6w3Q==" - }, - "System.Security.Cryptography.Pkcs": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" - }, - "System.Security.Cryptography.ProtectedData": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "s8yUYuYYu+PAwvBdhLG1KyrGrk9gkYeuPxfAsXsTqqWyepwSyEw8hAaflW4nO98NG52YpYI1am2+9o+79h2RtQ==" - }, - "System.Threading.RateLimiting": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "7mu9v0QDv66ar3DpGSZHg9NuNcxDaaAcnMULuZlaTpP9+hwXhrxNGsF5GmLkSHxFdb5bBc1TzeujsRgTrPWi+Q==" - }, - "Backbone.BuildingBlocks.Application": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Common.Infrastructure": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "MediatR": "[12.5.0, 12.5.0]", - "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", - "Polly": "[8.7.0, 8.7.0]", - "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" - } - }, - "Backbone.BuildingBlocks.Application.Abstractions": { - "type": "Project", - "dependencies": { - "Backbone.DevelopmentKit.Identity": "[1.0.0, )", - "Backbone.Tooling": "[1.0.0, )", - "MediatR.Contracts": "[2.0.1, 2.0.1]", - "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]" - } - }, - "Backbone.BuildingBlocks.Domain": { - "type": "Project", - "dependencies": { - "Backbone.Tooling": "[1.0.0, )" - } - }, - "Backbone.BuildingBlocks.Infrastructure": { - "type": "Project", - "dependencies": { - "AWSSDK.S3": "[4.0.101.6, 4.0.101.6]", - "Autofac": "[9.3.2, 9.3.2]", - "Azure.Messaging.ServiceBus": "[7.20.2, 7.20.2]", - "Azure.Storage.Blobs": "[12.29.1, 12.29.1]", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "EFCore.BulkExtensions.Core": "[10.0.1, 10.0.1]", - "EFCore.BulkExtensions.PostgreSql": "[10.0.1, 10.0.1]", - "EFCore.BulkExtensions.SqlServer": "[10.0.1, 10.0.1]", - "Google.Cloud.PubSub.V1": "[3.36.0, 3.36.0]", - "Google.Cloud.Storage.V1": "[4.15.0, 4.15.0]", - "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", - "Microsoft.EntityFrameworkCore.Abstractions": "[10.0.10, 10.0.10]", - "Microsoft.EntityFrameworkCore.Proxies": "[10.0.10, 10.0.10]", - "Microsoft.EntityFrameworkCore.Relational": "[10.0.10, 10.0.10]", - "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", - "Microsoft.Extensions.Azure": "[1.14.0, 1.14.0]", - "Microsoft.Extensions.DependencyInjection": "[10.0.10, 10.0.10]", - "Microsoft.Extensions.Diagnostics.HealthChecks.Common": "[10.8.0, 10.8.0]", - "Microsoft.Extensions.Identity.Core": "[10.0.10, 10.0.10]", - "Microsoft.Extensions.Logging": "[10.0.10, 10.0.10]", - "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, 10.0.3]", - "OpenTelemetry.Api": "[1.18.0, )", - "Polly": "[8.7.0, 8.7.0]", - "RabbitMQ.Client": "[7.2.1, 7.2.1]", - "Serilog": "[4.4.0, 4.4.0]" - } - }, - "Backbone.Common.Infrastructure": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.DevelopmentKit.Identity": "[1.0.0, )", - "Dapper": "[2.1.79, 2.1.79]", - "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", - "Polly": "[8.7.0, 8.7.0]" - } - }, - "Backbone.DevelopmentKit.Identity": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )", - "SimpleBase": "[5.6.3, 5.6.3]" - } - }, - "Backbone.Modules.Tags.Application": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Tags.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Tags.Domain": { - "type": "Project" - }, - "Backbone.Tooling": { - "type": "Project", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "[10.0.10, 10.0.10]", - "Microsoft.Extensions.Options": "[10.0.10, 10.0.10]" - } - }, - "Autofac": { - "type": "CentralTransitive", - "requested": "[9.3.2, 9.3.2]", - "resolved": "9.3.2", - "contentHash": "an3dLpmXWvb2aBP5qyA7GVEcXhoG+W/EtFRa3sBYzJdXSNDnB0aoeo4MgOQru0G5sjNDGYM3D3CnBzNFXEVOOA==" - }, - "AWSSDK.S3": { - "type": "CentralTransitive", - "requested": "[4.0.101.6, 4.0.101.6]", - "resolved": "4.0.101.6", - "contentHash": "LsVXGc3lyJuUJe+EbGubkFeR0cVmtmj4YdMChqsqSIsjZtCMzPg2BXR7cJqcrIBGoHab3q3RS6K8T9QD2tbhhQ==", - "dependencies": { - "AWSSDK.Core": "[4.0.100.9, 5.0.0)" - } - }, - "Azure.Messaging.ServiceBus": { - "type": "CentralTransitive", - "requested": "[7.20.2, 7.20.2]", - "resolved": "7.20.2", - "contentHash": "mwr5c3Qs7FWUtwzlLOtVixYDpUuA+Ln7sNirljTHZR8kDhzdr2grlqx0RRBvGV+IDCRHt1jIRb+hi0MUzjeVmw==", - "dependencies": { - "Azure.Core": "1.60.0", - "Azure.Core.Amqp": "1.3.1", - "Microsoft.Azure.Amqp": "2.7.0" - } - }, - "Azure.Storage.Blobs": { - "type": "CentralTransitive", - "requested": "[12.29.1, 12.29.1]", - "resolved": "12.29.1", - "contentHash": "pWh7xZBto8YcwiO853AB3uijTfVqs9PDte0Bu9/Zd8O9nwKiitWm0Jej1vsNkmYUzeG1552f8vJPjmtW30pBUQ==", - "dependencies": { - "Azure.Core": "1.55.0", - "Azure.Storage.Common": "12.28.0" - } - }, - "Dapper": { - "type": "CentralTransitive", - "requested": "[2.1.79, 2.1.79]", - "resolved": "2.1.79", - "contentHash": "8YijbzgTfmqmQOnVNorYM6K++pxqnW3nJ4aC1sRHzxUA2CcuoJ9gsTem3kgBnPRMc38zZHl4Esb6hAezXIEEuw==" - }, - "EFCore.BulkExtensions.Core": { - "type": "CentralTransitive", - "requested": "[10.0.1, 10.0.1]", - "resolved": "10.0.1", - "contentHash": "D++Wd1Qy6RM+yMy4nQ3r0nc/cSA0T+AdlFBEuKDhwl6r5bwuBQpluP5h2rvQ3i+CetUGppef6JNH9grg8lo+Bw==", - "dependencies": { - "MedallionTopologicalSort": "1.0.0", - "Microsoft.EntityFrameworkCore.Relational": "10.0.3", - "NetTopologySuite": "2.6.0" - } - }, - "EFCore.BulkExtensions.PostgreSql": { - "type": "CentralTransitive", - "requested": "[10.0.1, 10.0.1]", - "resolved": "10.0.1", - "contentHash": "iZCay5ghyULm4kA0ET6BOrL9J7AhVlgBqILpy4TUBm6yaGALIwcGc/qe6EO/VS+k9/RwJdO4qsRqWiTNrxF1Aw==", - "dependencies": { - "EFCore.BulkExtensions.Core": "10.0.1", - "Npgsql.EntityFrameworkCore.PostgreSQL": "10.0.0" - } - }, - "EFCore.BulkExtensions.SqlServer": { - "type": "CentralTransitive", - "requested": "[10.0.1, 10.0.1]", - "resolved": "10.0.1", - "contentHash": "Eg5nL1rjTvrCIjJD7ABjAH3waENRZ5mt/OZkhJe9FXgOIbovS8hzaDzy5Pqi+gwaPJLrdCeQWHfJgNjyULOVUw==", - "dependencies": { - "EFCore.BulkExtensions.Core": "10.0.1", - "Microsoft.Data.SqlClient": "6.1.4", - "Microsoft.EntityFrameworkCore.SqlServer.HierarchyId": "10.0.3", - "NetTopologySuite.IO.SqlServerBytes": "2.1.0" - } - }, - "FluentValidation": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" - }, - "Google.Cloud.PubSub.V1": { - "type": "CentralTransitive", - "requested": "[3.36.0, 3.36.0]", - "resolved": "3.36.0", - "contentHash": "69Tc+bHPvQQPXYs5cnLPhCsEMBYH5CABu/N+yccH+xS2Eforkt3r8DIhy6MUTA+O2NQYKYQSbmU/gIVXYpOBQA==", - "dependencies": { - "Google.Api.Gax.Grpc": "[4.13.1, 5.0.0)", - "Google.Cloud.Iam.V1": "[3.5.0, 4.0.0)" - } - }, - "Google.Cloud.Storage.V1": { - "type": "CentralTransitive", - "requested": "[4.15.0, 4.15.0]", - "resolved": "4.15.0", - "contentHash": "TVlJsaIkMDwHbZPCcLFFKduFcFD0yJL1jsZmV/V/FMjv5iok/eoC0oy8/VHjxfmWmNGkJLPLMAe5MrFLtY7hzg==", - "dependencies": { - "Google.Api.Gax.Rest": "[4.13.1, 5.0.0)", - "Google.Apis.Storage.v1": "[1.74.0.4115, 2.0.0)" - } - }, - "MediatR": { - "type": "CentralTransitive", - "requested": "[12.5.0, 12.5.0]", - "resolved": "12.5.0", - "contentHash": "vqm2H8/nqL5NAJHPhsG1JOPwfkmbVrPyh4svdoRzu+uZh6Ex7PRoHBGsLYC0/RWCEJFqD1ohHNpteQvql9OktA==", - "dependencies": { - "MediatR.Contracts": "[2.0.1, 3.0.0)", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" - } - }, - "MediatR.Contracts": { - "type": "CentralTransitive", - "requested": "[2.0.1, 2.0.1]", - "resolved": "2.0.1", - "contentHash": "FYv95bNT4UwcNA+G/J1oX5OpRiSUxteXaUt2BJbRSdRNiIUNbggJF69wy6mnk2wYToaanpdXZdCwVylt96MpwQ==" - }, - "Microsoft.EntityFrameworkCore": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "a0V7zj/VbYP6dTdWpUgE/r2PuLKtUGe2aJ0lVKkn/wP9ZhaxUz2kQydVfvOjCv2SKxlrqdBfHhPD4Cvlf+4ffA==", - "dependencies": { - "Microsoft.EntityFrameworkCore.Abstractions": "10.0.10", - "Microsoft.EntityFrameworkCore.Analyzers": "10.0.10", - "Microsoft.Extensions.Caching.Memory": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10" - } - }, - "Microsoft.EntityFrameworkCore.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "bOzrFCl6uZCjaSh2bG1ToRQRdx+iXvxosCg9hFyG9OWeAzOFI4xev9OqKeWfKf/kAHyox2JnbcvLVf2ceA7sqA==" - }, - "Microsoft.EntityFrameworkCore.Proxies": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "H/Fu7n1eZb8mLc6Nfj9Hr9IE3DRNhwPhflQnlMB33y+07Bc9C1B+paRWyg0DhX5PUFDdVKlXbBnNNzRMp/UEnA==", - "dependencies": { - "Castle.Core": "5.2.1", - "Microsoft.EntityFrameworkCore": "10.0.10", - "Microsoft.Extensions.Caching.Memory": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10" - } - }, - "Microsoft.EntityFrameworkCore.Relational": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "wNonj40aZxia+GtuBiiD6ZqVh4h6y5Nje1bGdmzZ8/ui0QRsAN+S0SIrLHFCEGbG9cDbeaE40sh+Lr7o9rRs6g==", - "dependencies": { - "Microsoft.EntityFrameworkCore": "10.0.10", - "Microsoft.Extensions.Caching.Memory": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10" - } - }, - "Microsoft.EntityFrameworkCore.SqlServer": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "xwAOvQ1WCfWyA4sRkoYVHyTm8UJ7NDYpRo++2oWuXGQ9g60Z1yepaQBmoPDT2nX24q4ISWnktAW9zARFTiSVvg==", - "dependencies": { - "Microsoft.Data.SqlClient": "6.1.1", - "Microsoft.EntityFrameworkCore.Relational": "10.0.10", - "Microsoft.Extensions.Caching.Memory": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10" - } - }, - "Microsoft.Extensions.Azure": { - "type": "CentralTransitive", - "requested": "[1.14.0, 1.14.0]", - "resolved": "1.14.0", - "contentHash": "g4d2TLfbAiZeXBcGkJdgIl2ZzqMcepMUbECENgg4XXqDU8uGAUwBxJb6x2DBpF6BY09vrHO0Ug3xZcH+cVbMrQ==", - "dependencies": { - "Azure.Core": "1.53.0", - "Microsoft.Extensions.Configuration.Binder": "10.0.3", - "Microsoft.Extensions.Logging": "10.0.3" - } - }, - "Microsoft.Extensions.Configuration": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "plJWK2zpWuuyxI8F8s2scx6Je7N1Ajjs6HvYUGKwRnDMWIVIz9FHwAkiT7ASgrvAOd10T0FPVlh9BzAJJME+jg==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "5Vnd2I75DmZCVEjSynIdJ/0EGafgnLQwgR3t2C2/fkjx/nRG+cLwxLLdInoHeCEpkD5K4Ov/g9ZCRYrl4TRsaA==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.Binder": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "GqmN2o1CkJvk7uWp+p4CwBYW0w/zfoEbvsiFDbO2G8l1Uz+mrDAbAcZiXhU2lufKPby1cjAUdd5GTWpebYOkOA==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.Json": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "uvJ6sHwjgrkMEJOgiC76G0mcZGXerwyyWkwX34EOjCbxKG6TCtfAoqDKAMsCvEBf9HxjlGQEgqsSMOGCmGBf+A==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.FileExtensions": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.DependencyInjection": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "ANyvsgkNBRvcJh2XLgn8veGmajf+8m0AbKK+HPWdRL1yraSNVVSmQhFntLtdz/C795jxqqup+k05cs/3jZQPOA==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10" - } - }, "Microsoft.Extensions.DependencyInjection.Abstractions": { - "type": "CentralTransitive", + "type": "Direct", "requested": "[10.0.10, 10.0.10]", "resolved": "10.0.10", "contentHash": "z/2xXlFw2aLGjHyEm6E0tQ+In6VfzQzTrtArbQ2c0TQE16ZbyDCMGPvaUT9I0s8rgy9sRWlU2P9waW37qV04qA==" }, - "Microsoft.Extensions.Diagnostics.HealthChecks.Common": { - "type": "CentralTransitive", - "requested": "[10.8.0, 10.8.0]", - "resolved": "10.8.0", - "contentHash": "nyB5D+P7R2LOIrAiZyCgcUsQZcKa/n4PIGkE8eXGknlhPTfd5bivi2u4vhFVvjZYkObw/bpWRSwBllyx1ZuWGw==", - "dependencies": { - "Microsoft.Extensions.Configuration.Binder": "10.0.10", - "Microsoft.Extensions.Diagnostics": "10.0.10", - "Microsoft.Extensions.Diagnostics.HealthChecks": "10.0.10", - "Microsoft.Extensions.ObjectPool": "10.0.10", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10", - "Microsoft.Extensions.Telemetry.Abstractions": "10.8.0" - } - }, - "Microsoft.Extensions.Hosting": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "tL9FkfV64GPUDSPvwrgyw42LVzsnVAnyrqJEuZVJbODgrQ3eL63zmzEcVWoCHzfgqUhWggzbgAyUCnz/zfI3Pg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.Binder": "10.0.10", - "Microsoft.Extensions.Configuration.CommandLine": "10.0.10", - "Microsoft.Extensions.Configuration.EnvironmentVariables": "10.0.10", - "Microsoft.Extensions.Configuration.FileExtensions": "10.0.10", - "Microsoft.Extensions.Configuration.Json": "10.0.10", - "Microsoft.Extensions.Configuration.UserSecrets": "10.0.10", - "Microsoft.Extensions.DependencyInjection": "10.0.10", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Diagnostics": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Physical": "10.0.10", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging.Configuration": "10.0.10", - "Microsoft.Extensions.Logging.Console": "10.0.10", - "Microsoft.Extensions.Logging.Debug": "10.0.10", - "Microsoft.Extensions.Logging.EventLog": "10.0.10", - "Microsoft.Extensions.Logging.EventSource": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Extensions.Hosting.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "5LugpYGHk+mkn0a8IZgcyfBca8PCTAU9RQFoMrTdtOOidq88M2SI5f3px6ugnzgxC+eTkvYYJi8pzlUnG5xdAQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Identity.Core": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "ZA+9MX1D7+jm/1RF3iOOBThCps55MT1jAwLne1dryMj9cuAeOVtGS3pBegqk1Mwza+0tuVAklob+Q/EA9bHnQw==", - "dependencies": { - "Microsoft.AspNetCore.Cryptography.KeyDerivation": "10.0.10", - "Microsoft.Extensions.Diagnostics": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Extensions.Logging": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "Tf6z5HsL0VDYRTfvsoNrTGHGheCwkTsZBA2FFh5ATJUbkAwug+FFNISJK2gjpUNemlAOoWllAK52HOWCjto3EQ==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "zkFxGYUvdxAvIKTyXHrmW+Sux53D4SezD9dMyZ6hrwwzPQJNuwCRy1f5W7AvYTqacEGhWF2XderRQG1OvbV8og==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10" - } - }, "Microsoft.Extensions.Options": { - "type": "CentralTransitive", + "type": "Direct", "requested": "[10.0.10, 10.0.10]", "resolved": "10.0.10", "contentHash": "srnhnk7nE8krBiIXp71LvBmKBtraBONWSRzdjJgRv1Ko9Mp8IVNqv4vIS9hGeVteBig8aQkva9ZG+sC+o5sVcA==", @@ -1086,267 +18,24 @@ "Microsoft.Extensions.Primitives": "10.0.10" } }, - "Npgsql.EntityFrameworkCore.PostgreSQL": { - "type": "CentralTransitive", - "requested": "[10.0.3, 10.0.3]", - "resolved": "10.0.3", - "contentHash": "IPGrrZnRkuW7OlHDhUESZz4G5DLkW7Nej/O3Cx+0iTsgyU5XJxBgpsvTHLloo3WWuAKKbDHXBvWPVkX1deRh1Q==", - "dependencies": { - "Microsoft.EntityFrameworkCore": "[10.0.4, 11.0.0)", - "Microsoft.EntityFrameworkCore.Relational": "[10.0.4, 11.0.0)", - "Npgsql": "10.0.3" - } - }, - "OpenTelemetry.Api": { - "type": "CentralTransitive", - "requested": "[1.18.0, )", - "resolved": "1.18.0", - "contentHash": "Dhzm5oughIY9EWckt2J1yXcEbXpki5WCL2q7prJoYxzH6C7jdkfGtPMTkUVZZ4AhjJKzQnlC+kLSIlmIVwC4Vw==" - }, - "Polly": { - "type": "CentralTransitive", - "requested": "[8.7.0, 8.7.0]", - "resolved": "8.7.0", - "contentHash": "0qR4f0OR8FeCAfLWcfwzAM7w6EmpUgwa22PgxKjcL25dEAto7sKpQQXbtxp38vVvK+V3RFkh/TeI7g/iUdoYIQ==", - "dependencies": { - "Polly.Core": "8.7.0" - } - }, - "RabbitMQ.Client": { - "type": "CentralTransitive", - "requested": "[7.2.1, 7.2.1]", - "resolved": "7.2.1", - "contentHash": "YKXEfg9fVQiTKgZlvIhAfPSFaamEgi8DsQmisCH0IAsU4FYLrtoguDrDj6JtJVGUt40QPnBLRH6fTQcAC4qsOg==", - "dependencies": { - "System.Threading.RateLimiting": "8.0.0" - } - }, - "ReHackt.Extensions.Options.Validation": { - "type": "CentralTransitive", - "requested": "[10.0.1, 10.0.1]", - "resolved": "10.0.1", - "contentHash": "/mjsZpv8DLDeHns99iDROqFa0eJ/5NU4X2kMMt3VTfVf3xYWQNLPoTs//x+wKXWYSo+pdXkA+ASvaJT/pifB2Q==", - "dependencies": { - "Microsoft.Extensions.Hosting": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Serilog": { - "type": "CentralTransitive", - "requested": "[4.4.0, 4.4.0]", - "resolved": "4.4.0", - "contentHash": "ZC6Le3rr4TVJJjS4KsQAesxeF1EhW9qcZmmG7eP5Y2G3+gTGkJEUXkq4+tZNPtyp05I0wWOxnIjwtxFweJsObw==" - }, - "SimpleBase": { - "type": "CentralTransitive", - "requested": "[5.6.3, 5.6.3]", - "resolved": "5.6.3", - "contentHash": "ayL730f1gdQVYmFFLKSX83QcoltyKSMBsV94qfCBpZHMaJz/e3ALuXKZDD8SkseWbNHxBe0HxLRBe5OOpQ9HpA==" - } - }, - "net10.0/linux-arm64": { - "Microsoft.Data.SqlClient": { - "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" - } - }, - "Microsoft.Data.SqlClient.SNI.runtime": { - "type": "Transitive", - "resolved": "6.0.2", - "contentHash": "f+pRODTWX7Y67jXO3T5S2dIPZ9qMJNySjlZT/TKmWVNWe19N8jcWmHaqHnnchaq3gxEKv1SWVY5EFzOD06l41w==" - }, - "Microsoft.SqlServer.Types": { - "type": "Transitive", - "resolved": "160.1000.6", - "contentHash": "4kk+rz5vnIPr9ENzm8KttUbhBKftv0uHSSFDVjc5OuKPtRP5q0lDbYUy5ZsoYCAG3RrZdJoxPnWN2JNozZAiGA==", - "dependencies": { - "Microsoft.SqlServer.Server": "1.0.0" - } - }, - "System.Diagnostics.EventLog": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" - }, - "System.Management": { - "type": "Transitive", - "resolved": "7.0.2", - "contentHash": "/qEUN91mP/MUQmJnM5y5BdT7ZoPuVrtxnFlbJ8a3kBJGhe2wCzBfnPFtK2wTtEEcf3DMGR9J00GZZfg6HRI6yA==", - "dependencies": { - "System.CodeDom": "7.0.0" - } - }, - "System.Security.Cryptography.Pkcs": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" - } - }, - "net10.0/linux-x64": { - "Microsoft.Data.SqlClient": { - "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" - } - }, - "Microsoft.Data.SqlClient.SNI.runtime": { - "type": "Transitive", - "resolved": "6.0.2", - "contentHash": "f+pRODTWX7Y67jXO3T5S2dIPZ9qMJNySjlZT/TKmWVNWe19N8jcWmHaqHnnchaq3gxEKv1SWVY5EFzOD06l41w==" - }, - "Microsoft.SqlServer.Types": { - "type": "Transitive", - "resolved": "160.1000.6", - "contentHash": "4kk+rz5vnIPr9ENzm8KttUbhBKftv0uHSSFDVjc5OuKPtRP5q0lDbYUy5ZsoYCAG3RrZdJoxPnWN2JNozZAiGA==", - "dependencies": { - "Microsoft.SqlServer.Server": "1.0.0" - } - }, - "System.Diagnostics.EventLog": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" - }, - "System.Management": { - "type": "Transitive", - "resolved": "7.0.2", - "contentHash": "/qEUN91mP/MUQmJnM5y5BdT7ZoPuVrtxnFlbJ8a3kBJGhe2wCzBfnPFtK2wTtEEcf3DMGR9J00GZZfg6HRI6yA==", - "dependencies": { - "System.CodeDom": "7.0.0" - } - }, - "System.Security.Cryptography.Pkcs": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" - } - }, - "net10.0/osx-arm64": { - "Microsoft.Data.SqlClient": { - "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" - } - }, - "Microsoft.Data.SqlClient.SNI.runtime": { - "type": "Transitive", - "resolved": "6.0.2", - "contentHash": "f+pRODTWX7Y67jXO3T5S2dIPZ9qMJNySjlZT/TKmWVNWe19N8jcWmHaqHnnchaq3gxEKv1SWVY5EFzOD06l41w==" - }, - "Microsoft.SqlServer.Types": { - "type": "Transitive", - "resolved": "160.1000.6", - "contentHash": "4kk+rz5vnIPr9ENzm8KttUbhBKftv0uHSSFDVjc5OuKPtRP5q0lDbYUy5ZsoYCAG3RrZdJoxPnWN2JNozZAiGA==", - "dependencies": { - "Microsoft.SqlServer.Server": "1.0.0" - } - }, - "System.Diagnostics.EventLog": { + "Microsoft.Extensions.Primitives": { "type": "Transitive", "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" + "contentHash": "5wu/GrYVd8mG2DVUw3vFJzF+O336TyTGg/Kmcgw9bfwYhCoFiV5lR5QeEmKecJyrW4W54nMfD3p3589E8a7czQ==" }, - "System.Management": { - "type": "Transitive", - "resolved": "7.0.2", - "contentHash": "/qEUN91mP/MUQmJnM5y5BdT7ZoPuVrtxnFlbJ8a3kBJGhe2wCzBfnPFtK2wTtEEcf3DMGR9J00GZZfg6HRI6yA==", + "Backbone.Modules.Tags.Abstractions": { + "type": "Project", "dependencies": { - "System.CodeDom": "7.0.0" + "Backbone.Modules.Tags.Domain": "[1.0.0, )" } }, - "System.Security.Cryptography.Pkcs": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "Backbone.Modules.Tags.Domain": { + "type": "Project" } }, - "net10.0/win-x64": { - "Microsoft.Data.SqlClient": { - "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" - } - }, - "Microsoft.Data.SqlClient.SNI.runtime": { - "type": "Transitive", - "resolved": "6.0.2", - "contentHash": "f+pRODTWX7Y67jXO3T5S2dIPZ9qMJNySjlZT/TKmWVNWe19N8jcWmHaqHnnchaq3gxEKv1SWVY5EFzOD06l41w==" - }, - "Microsoft.SqlServer.Types": { - "type": "Transitive", - "resolved": "160.1000.6", - "contentHash": "4kk+rz5vnIPr9ENzm8KttUbhBKftv0uHSSFDVjc5OuKPtRP5q0lDbYUy5ZsoYCAG3RrZdJoxPnWN2JNozZAiGA==", - "dependencies": { - "Microsoft.SqlServer.Server": "1.0.0" - } - }, - "System.Diagnostics.EventLog": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" - }, - "System.Management": { - "type": "Transitive", - "resolved": "7.0.2", - "contentHash": "/qEUN91mP/MUQmJnM5y5BdT7ZoPuVrtxnFlbJ8a3kBJGhe2wCzBfnPFtK2wTtEEcf3DMGR9J00GZZfg6HRI6yA==", - "dependencies": { - "System.CodeDom": "7.0.0" - } - }, - "System.Security.Cryptography.Pkcs": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" - } - } + "net10.0/linux-arm64": {}, + "net10.0/linux-x64": {}, + "net10.0/osx-arm64": {}, + "net10.0/win-x64": {} } } \ No newline at end of file diff --git a/Modules/Tags/src/Tags.Application/ApplicationConfiguration.cs b/Modules/Tags/src/Tags.Module/ApplicationConfiguration.cs similarity index 98% rename from Modules/Tags/src/Tags.Application/ApplicationConfiguration.cs rename to Modules/Tags/src/Tags.Module/ApplicationConfiguration.cs index 01784bc93e..6d3a6e7492 100644 --- a/Modules/Tags/src/Tags.Application/ApplicationConfiguration.cs +++ b/Modules/Tags/src/Tags.Module/ApplicationConfiguration.cs @@ -1,7 +1,7 @@ -using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations; using Backbone.Modules.Tags.Domain; -namespace Backbone.Modules.Tags.Application; +namespace Backbone.Modules.Tags.Module; [ContainsValidTags] public class ApplicationConfiguration diff --git a/Modules/Tags/src/Tags.Application/Extensions/IServiceCollectionExtensions.cs b/Modules/Tags/src/Tags.Module/ApplicationServiceCollectionExtensions.cs similarity index 59% rename from Modules/Tags/src/Tags.Application/Extensions/IServiceCollectionExtensions.cs rename to Modules/Tags/src/Tags.Module/ApplicationServiceCollectionExtensions.cs index 467c502c4c..763dd9b5ac 100644 --- a/Modules/Tags/src/Tags.Application/Extensions/IServiceCollectionExtensions.cs +++ b/Modules/Tags/src/Tags.Module/ApplicationServiceCollectionExtensions.cs @@ -1,9 +1,9 @@ -using Backbone.Modules.Tags.Application.Tags.Queries.ListTags; +using Backbone.Modules.Tags.Module.Features.Tags.ListTags; using Microsoft.Extensions.DependencyInjection; -namespace Backbone.Modules.Tags.Application.Extensions; +namespace Backbone.Modules.Tags.Module; -public static class IServiceCollectionExtensions +internal static class ApplicationServiceCollectionExtensions { public static void AddApplication(this IServiceCollection services) { diff --git a/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Endpoint.cs b/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Endpoint.cs new file mode 100644 index 0000000000..54d5dd4c94 --- /dev/null +++ b/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Endpoint.cs @@ -0,0 +1,26 @@ +using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Tags.Module.Features.Tags.ListTags; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapListTagsEndpoint(this RouteGroupBuilder group) + { + group.MapGet("", Handle) + .AllowAnonymous() + .Produces>(StatusCodes.Status200OK); + + return group; + } + + private static async Task Handle(IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new ListTagsQuery(), cancellationToken); + return EnvelopeHttpResults.Ok(response).WithHttpCaching(); + } +} diff --git a/Modules/Tags/src/Tags.Application/Tags/Queries/ListTags/Handler.cs b/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Handler.cs similarity index 80% rename from Modules/Tags/src/Tags.Application/Tags/Queries/ListTags/Handler.cs rename to Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Handler.cs index 3bef5d6c22..8f5b8a8789 100644 --- a/Modules/Tags/src/Tags.Application/Tags/Queries/ListTags/Handler.cs +++ b/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Handler.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Tags.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Tags.Abstractions; using MediatR; -namespace Backbone.Modules.Tags.Application.Tags.Queries.ListTags; +namespace Backbone.Modules.Tags.Module.Features.Tags.ListTags; public class Handler : IRequestHandler { diff --git a/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Query.cs b/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Query.cs new file mode 100644 index 0000000000..2255221a5e --- /dev/null +++ b/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Query.cs @@ -0,0 +1,5 @@ +using MediatR; + +namespace Backbone.Modules.Tags.Module.Features.Tags.ListTags; + +public class ListTagsQuery : IRequest; diff --git a/Modules/Tags/src/Tags.Application/Tags/Queries/ListTags/ListTagsResponse.cs b/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Response.cs similarity index 76% rename from Modules/Tags/src/Tags.Application/Tags/Queries/ListTags/ListTagsResponse.cs rename to Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Response.cs index e838121db1..0c6ec8d08d 100644 --- a/Modules/Tags/src/Tags.Application/Tags/Queries/ListTags/ListTagsResponse.cs +++ b/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Response.cs @@ -1,7 +1,7 @@ -using System.Text.Json.Serialization; +using System.Text.Json.Serialization; using Backbone.Modules.Tags.Domain; -namespace Backbone.Modules.Tags.Application.Tags.Queries.ListTags; +namespace Backbone.Modules.Tags.Module.Features.Tags.ListTags; public class ListTagsResponse { diff --git a/Modules/Tags/src/Tags.Module/Tags.Module.csproj b/Modules/Tags/src/Tags.Module/Tags.Module.csproj index 7b962bc59f..83b8c84b1c 100644 --- a/Modules/Tags/src/Tags.Module/Tags.Module.csproj +++ b/Modules/Tags/src/Tags.Module/Tags.Module.csproj @@ -1,7 +1,8 @@ + - + diff --git a/Modules/Tags/src/Tags.Module/TagsEndpointExtensions.cs b/Modules/Tags/src/Tags.Module/TagsEndpointExtensions.cs new file mode 100644 index 0000000000..5fb1fc96de --- /dev/null +++ b/Modules/Tags/src/Tags.Module/TagsEndpointExtensions.cs @@ -0,0 +1,16 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.Modules.Tags.Module.Features.Tags.ListTags; +using Microsoft.AspNetCore.Routing; +using OpenIddict.Validation.AspNetCore; + +namespace Backbone.Modules.Tags.Module; + +public static class TagsEndpointExtensions +{ + public static IEndpointRouteBuilder MapTagsEndpoints(this IEndpointRouteBuilder endpoints) + { + var group = endpoints.MapVersionedEndpointGroup("Tags", "Tags", 2, OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme); + group.MapListTagsEndpoint(); + return endpoints; + } +} diff --git a/Modules/Tags/src/Tags.Module/TagsModule.cs b/Modules/Tags/src/Tags.Module/TagsModule.cs index e86dd3b639..b3d4654116 100644 --- a/Modules/Tags/src/Tags.Module/TagsModule.cs +++ b/Modules/Tags/src/Tags.Module/TagsModule.cs @@ -1,11 +1,11 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Module; -using Backbone.Modules.Tags.Application; -using Backbone.Modules.Tags.Application.Extensions; +using Backbone.Modules.Tags.Abstractions; using Backbone.Modules.Tags.Infrastructure; using Backbone.Modules.Tags.Infrastructure.Persistence; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; namespace Backbone.Modules.Tags.Module; @@ -15,6 +15,11 @@ public class TagsModule : AbstractModule>(sp => Options.Create(new TagsRepositoryOptions + { + SupportedLanguages = sp.GetRequiredService>().Value.SupportedLanguages, + TagsForAttributeValueTypes = sp.GetRequiredService>().Value.TagsForAttributeValueTypes + })); services.AddApplication(); services.AddPersistence(); } diff --git a/Modules/Tags/src/Tags.Module/packages.lock.json b/Modules/Tags/src/Tags.Module/packages.lock.json index 40cd29165c..8cd5576b90 100644 --- a/Modules/Tags/src/Tags.Module/packages.lock.json +++ b/Modules/Tags/src/Tags.Module/packages.lock.json @@ -12,6 +12,22 @@ "Microsoft.Extensions.Options": "10.0.10" } }, + "Asp.Versioning.Abstractions": { + "type": "Transitive", + "resolved": "10.1.0", + "contentHash": "RwdgC5O0baZ4pt30pAKKPQHq2CV4unBKA4HWoTeu7NY9ZwXM0dWYGf1Ipc5GK0eFBe9cMeqz4pGpPncMz4/ZNQ==", + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.0" + } + }, + "Asp.Versioning.Http": { + "type": "Transitive", + "resolved": "10.0.1", + "contentHash": "g0ayV/9ho3tGgooC6eF5p1063I1WzlxFJDYQrigcGnW+mLvui6eXrcW5hzTHhQREroUR3ZwXQrIN2SAIoi+KDw==", + "dependencies": { + "Asp.Versioning.Abstractions": "10.1.0" + } + }, "AWSSDK.Core": { "type": "Transitive", "resolved": "4.0.100.9", @@ -40,16 +56,6 @@ "System.Memory.Data": "1.0.2" } }, - "Azure.Identity": { - "type": "Transitive", - "resolved": "1.17.1", - "contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Microsoft.Identity.Client": "4.78.0", - "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" - } - }, "Azure.Storage.Common": { "type": "Transitive", "resolved": "12.28.0", @@ -187,6 +193,11 @@ "Grpc.Core.Api": "2.71.0" } }, + "libsodium": { + "type": "Transitive", + "resolved": "1.0.22", + "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" + }, "MedallionTopologicalSort": { "type": "Transitive", "resolved": "1.0.0", @@ -205,6 +216,25 @@ "Microsoft.AspNetCore.Cryptography.Internal": "10.0.10" } }, + "Microsoft.AspNetCore.DataProtection": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "5sfrNrBShTlJeXvWNxjPS7ilLY4H6MICZPMZr/2vjoDoBH5Z8sQYJwbhulqfXh4yIpxIto0TcmOQHOElvpq+iQ==", + "dependencies": { + "Microsoft.AspNetCore.Cryptography.Internal": "10.0.10", + "Microsoft.AspNetCore.DataProtection.Abstractions": "10.0.10", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", + "Microsoft.Extensions.Logging.Abstractions": "10.0.10", + "Microsoft.Extensions.Options": "10.0.10", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "Microsoft.AspNetCore.DataProtection.Abstractions": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "q2RNx0N/qrsU+JgbPE78I9pu5ekwguitAFVoeE1NCgxtkUTguvf7oTzBnn42zSQxuugJ4fmj0RSarob8Rvorrg==" + }, "Microsoft.Azure.Amqp": { "type": "Transitive", "resolved": "2.7.0", @@ -215,24 +245,41 @@ "resolved": "10.0.9", "contentHash": "Aq7M8lG6BrHeatqKqncVm9m55ec34k6nnfPRLe/PvGg+b/pAsRM2ejofeKmCLjTXMa+5NGXm382f8CG/D5WDow==" }, + "Microsoft.Bcl.Cryptography": { + "type": "Transitive", + "resolved": "10.0.2", + "contentHash": "LG9Yll3B5aNpxv0+D47g6LiOiKBIlodhcHdQwcYzo8VeexFLGqx5ymetmA2aBRyo9cCcWsQWrFsdbsr8LvmWDw==" + }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, + "Microsoft.Data.SqlClient.Extensions.Abstractions": { + "type": "Transitive", + "resolved": "7.0.2", + "contentHash": "Zx7z61fG2Nc6LdDn4jA7b5Aj1ABrljkOPRE31RvVUdjF6IgbG60leDUhMCafsnWFgaheiK3iqpLe+kbf5Z5L8Q==", + "dependencies": { + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)" + } + }, + "Microsoft.Data.SqlClient.Internal.Logging": { + "type": "Transitive", + "resolved": "7.0.2", + "contentHash": "iqgYBbGSVy/DIYWjzmQOa964Kn4rs4wW5vg2IamqVK0fQqfTiILVR5hMK27XWqoyONtAZs+VxH354cPJBtSnbg==" + }, "Microsoft.Data.SqlClient.SNI.runtime": { "type": "Transitive", "resolved": "6.0.2", @@ -265,6 +312,21 @@ "Microsoft.SqlServer.Types": "160.1000.6" } }, + "Microsoft.Extensions.AmbientMetadata.Application": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "/FYCIyhRLrDwIg29tB/21/Rp7XMaEP/gWR5Cxyi4GgWcN/v/XXUpU52yhQux0s2SQy1Z0C1wnhptCMvLaaT45Q==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.10", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10" + } + }, + "Microsoft.Extensions.ApiDescription.Server": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "NCWCGiwRwje8773yzPQhvucYnnfeR+ZoB1VRIrIMp4uaeUNw7jvEPHij3HIbwCDuNCrNcphA00KSAR9yD9qmbg==" + }, "Microsoft.Extensions.Caching.Abstractions": { "type": "Transitive", "resolved": "10.0.10", @@ -335,6 +397,14 @@ "Microsoft.Extensions.FileProviders.Physical": "10.0.10" } }, + "Microsoft.Extensions.DependencyInjection.AutoActivation": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "LXwOAsnrflu2ln+Bxj7y3Zc/Pn4HquCCRzW81oOIuRsM8F75TxwA/ZpSFZ5E1+YkVpndz7BcHY4ThFSjjA4vbQ==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10" + } + }, "Microsoft.Extensions.Diagnostics": { "type": "Transitive", "resolved": "10.0.10", @@ -354,6 +424,14 @@ "Microsoft.Extensions.Options": "10.0.10" } }, + "Microsoft.Extensions.Diagnostics.ExceptionSummarization": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "tXmzwQeWgiycaLOtvSFnz0TPkJxXTyZrkwSVPTr83FgSiMj3BD/8eIbvrpGi5rzc2AgfKyegKo1ntJlJFey1Zg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10" + } + }, "Microsoft.Extensions.Diagnostics.HealthChecks": { "type": "Transitive", "resolved": "10.0.10", @@ -393,6 +471,48 @@ "resolved": "10.0.10", "contentHash": "jSOCVxEwCd4Aq925kJVz1kSO1EpX2OHYKL04qVREXkDU7Ce3pVDdHPYm+fEy8y/th2kJf/DAstRHpJAqoNWP8w==" }, + "Microsoft.Extensions.Http": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "DuEBLw2y7ZBfilnaJtlge8f2M49932v43t7j1InceXVjcZzxNrSEkobYXdgZkXuPFnFbKcbWpAS+fZgYEW1BhA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", + "Microsoft.Extensions.Diagnostics": "10.0.10", + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.Extensions.Logging.Abstractions": "10.0.10", + "Microsoft.Extensions.Options": "10.0.10" + } + }, + "Microsoft.Extensions.Http.Diagnostics": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "2pYnolFkigH7N6A5WHdGx93iZ8dIhrBnu4ZkjvB6RwbHzYmIy/iXVe12pdrViNDdeBSmKZ5FA9YP/xhwLT7q7A==", + "dependencies": { + "Microsoft.Extensions.Http": "10.0.10", + "Microsoft.Extensions.Telemetry": "10.8.0" + } + }, + "Microsoft.Extensions.Http.Polly": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "ceKyX9V/C+mtapMfXQ0ClKRkxDHAW2AAJoDgTcsh7UdOteCQKB5wRTFgHJ82Lh/3O+UlPA47LRGEZkRxtz/lCA==", + "dependencies": { + "Microsoft.Extensions.Http": "10.0.10", + "Polly": "7.2.4", + "Polly.Extensions.Http": "3.0.0" + } + }, + "Microsoft.Extensions.Http.Resilience": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "XtbZyYVxSNn1Aj2Z0PA8yauS12hPszTWDZ3GtZ5Vww7Ai3d8Pm841jMBnTvoTf1t9mRf3eSB38V5KUWxH6/4oQ==", + "dependencies": { + "Microsoft.Extensions.Http.Diagnostics": "10.8.0", + "Microsoft.Extensions.ObjectPool": "10.0.10", + "Microsoft.Extensions.Resilience": "10.8.0" + } + }, "Microsoft.Extensions.Logging.Configuration": { "type": "Transitive", "resolved": "10.0.10", @@ -476,6 +596,31 @@ "resolved": "10.0.10", "contentHash": "5wu/GrYVd8mG2DVUw3vFJzF+O336TyTGg/Kmcgw9bfwYhCoFiV5lR5QeEmKecJyrW4W54nMfD3p3589E8a7czQ==" }, + "Microsoft.Extensions.Resilience": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "RH/gv0ZcCnQ3d30lxb8+T2o661TwZq/K5eMwp488goQLX1QYqWN3i8L8XlN9DhrqP2Zcf0EtsWaKpJO3yHDUTw==", + "dependencies": { + "Microsoft.Extensions.Diagnostics": "10.0.10", + "Microsoft.Extensions.Diagnostics.ExceptionSummarization": "10.8.0", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10", + "Microsoft.Extensions.Telemetry.Abstractions": "10.8.0", + "Polly.Extensions": "8.4.2", + "Polly.RateLimiting": "8.4.2" + } + }, + "Microsoft.Extensions.Telemetry": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "IIWjDZguUJt6yNld9J4V88xuOUzpC76wBwfnRJLRmacmyTTl9jA8+KP5PuHPi7CKz/Vk/q+lQYmobiopuzapzA==", + "dependencies": { + "Microsoft.Extensions.AmbientMetadata.Application": "10.8.0", + "Microsoft.Extensions.DependencyInjection.AutoActivation": "10.8.0", + "Microsoft.Extensions.Logging.Configuration": "10.0.10", + "Microsoft.Extensions.ObjectPool": "10.0.10", + "Microsoft.Extensions.Telemetry.Abstractions": "10.8.0" + } + }, "Microsoft.Extensions.Telemetry.Abstractions": { "type": "Transitive", "resolved": "10.8.0", @@ -506,50 +651,57 @@ }, "Microsoft.IdentityModel.Abstractions": { "type": "Transitive", - "resolved": "8.14.0", - "contentHash": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==" + "resolved": "8.19.2", + "contentHash": "HJbo/lnSfNHUfphPRT910poQc4T2/9+8svFLvzuaYHGAOJ2Tu+oEDqpX0BVP3BJ4OuUM1kylEKyaiX2fCAK3Cw==" }, "Microsoft.IdentityModel.JsonWebTokens": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "3Izi75UCUssvo8LPx3OVnEeZay58qaFicrtSnbtUt7q8qQi0gy46gh4V8VUTkMVMKXV6VMyjBVmeNNgeCUJuIw==", + "resolved": "8.19.2", + "contentHash": "ui3fuBT4fs8kdKfBthI4NzLYIBIneEVS8UrL1JVBzAn80UiKmngBBi0BEByE7n/9c+EElcfFlCMFFTqpkBSLNA==", "dependencies": { - "Microsoft.IdentityModel.Tokens": "7.7.1" + "Microsoft.IdentityModel.Tokens": "8.19.2" } }, "Microsoft.IdentityModel.Logging": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "BZNgSq/o8gsKExdYoBKPR65fdsxW0cTF8PsdqB8y011AGUJJW300S/ZIsEUD0+sOmGc003Gwv3FYbjrVjvsLNQ==", + "resolved": "8.19.2", + "contentHash": "r5YLDIxGOnkVJHrqXv/iD1FM1CgGrQOdriXuvuWvTPmKbnGANhEysq9XKmN6IHjf2a+9bAGEpnoRBsAQlvJU5w==", "dependencies": { - "Microsoft.IdentityModel.Abstractions": "7.7.1" + "Microsoft.IdentityModel.Abstractions": "8.19.2" } }, "Microsoft.IdentityModel.Protocols": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "h+fHHBGokepmCX+QZXJk4Ij8OApCb2n2ktoDkNX5CXteXsOxTHMNgjPGpAwdJMFvAL7TtGarUnk3o97NmBq2QQ==", + "resolved": "8.19.2", + "contentHash": "sGxSsSrZXNmca6D+jHH2rVRyo2nNRd/g4H9CFbPmLLq0xgoH1U0orLWE5minfijw7+zq49tBs7txenbfAErRoQ==", "dependencies": { - "Microsoft.IdentityModel.Tokens": "7.7.1" + "Microsoft.IdentityModel.Tokens": "8.19.2" } }, "Microsoft.IdentityModel.Protocols.OpenIdConnect": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "yT2Hdj8LpPbcT9C9KlLVxXl09C8zjFaVSaApdOwuecMuoV4s6Sof/mnTDz/+F/lILPIBvrWugR9CC7iRVZgbfQ==", + "resolved": "8.16.0", + "contentHash": "h4yVXyJsEBBX5lg2G5ftMsi5JzcNEGAzrNphA6DQ6eOd8P0s+cDCOyPwVTYLePZvJL5unbPvYIvzrbTXzFjXnQ==", "dependencies": { - "Microsoft.IdentityModel.Protocols": "7.7.1", - "System.IdentityModel.Tokens.Jwt": "7.7.1" + "Microsoft.IdentityModel.Protocols": "8.16.0", + "System.IdentityModel.Tokens.Jwt": "8.16.0" } }, "Microsoft.IdentityModel.Tokens": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "fQ0VVCba75lknUHGldi3iTKAYUQqbzp1Un8+d9cm9nON0Gs8NAkXddNg8iaUB0qi/ybtAmNWizTR4avdkCJ9pQ==", + "resolved": "8.19.2", + "contentHash": "GtPC1S02uH1gOO4fQ+zRysIicKmEXaYFP8PIkdJYXqMyruYhopre4ozVHp0XiDSA0+GJvOZH9prxCPvgBMg4Ww==", "dependencies": { - "Microsoft.IdentityModel.Logging": "7.7.1" + "Microsoft.Bcl.Cryptography": "10.0.2", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.IdentityModel.Logging": "8.19.2" } }, + "Microsoft.OpenApi": { + "type": "Transitive", + "resolved": "2.7.5", + "contentHash": "0FA67RSnRM4tcBKqiqVu/HPdZ9+QOKbmeRjxRUGTCjPU4C0bmUhd97Dso7Yild5P7nOV6GxJ2xrK0Kv/O9xp0w==" + }, "Microsoft.SqlServer.Server": { "type": "Transitive", "resolved": "1.0.0", @@ -589,11 +741,278 @@ "Microsoft.Extensions.Logging.Abstractions": "10.0.0" } }, + "OpenIddict": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "Dih/QGs3ptgvsioSOdvn/6KMy3el5ImMimp/9SV9VX/FqTT6CxBOGoxaukfJeVqgcxQrgge1vQvFp3kWtgOKGg==", + "dependencies": { + "OpenIddict.Abstractions": "7.6.0", + "OpenIddict.Client": "7.6.0", + "OpenIddict.Client.SystemIntegration": "7.6.0", + "OpenIddict.Client.SystemNetHttp": "7.6.0", + "OpenIddict.Client.WebIntegration": "7.6.0", + "OpenIddict.Core": "7.6.0", + "OpenIddict.Server": "7.6.0", + "OpenIddict.Validation": "7.6.0", + "OpenIddict.Validation.ServerIntegration": "7.6.0", + "OpenIddict.Validation.SystemNetHttp": "7.6.0" + } + }, + "OpenIddict.Abstractions": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "Fp2MUvm6wwsqk6+ieUM/3MTMlbCL1zwSXixM0xC22FgKcl5EQB7E0vV38IRI/rSF8UGgvC/AOjMOF6FoFyks8g==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", + "Microsoft.Extensions.Primitives": "10.0.10", + "Microsoft.IdentityModel.Tokens": "8.19.2" + } + }, + "OpenIddict.Client": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "X+Sg1wRKeVOeayJuZ4/0M74zXRENvXOAl2JRPF4MaEOoS9Pj6WCWMLriWS0wwEC1ODxQmLaG3tYZfcdC9hU40g==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.IdentityModel.JsonWebTokens": "8.19.2", + "Microsoft.IdentityModel.Protocols": "8.19.2", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.Client.AspNetCore": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "XjEj75mTkvMn1sj4jONWLTRK6KzeY/Hou8218nwLnJnqYmKJ1th7UDfadNTb530KSC+WPLxfvi7grzIv0xzebw==", + "dependencies": { + "OpenIddict.Client": "7.6.0" + } + }, + "OpenIddict.Client.DataProtection": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ZVhuFSzPbAaZkiRRrr77oyJnciWhytPnTZ1ByaCGfDx1b977crbcJww2asfkMpgNzcbWWAR6SgcS05hklsQflw==", + "dependencies": { + "Microsoft.AspNetCore.DataProtection": "10.0.10", + "OpenIddict.Client": "7.6.0", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "OpenIddict.Client.SystemIntegration": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "yqnyQH6CG46+y2Rp4UcIOXNcWgDvITW43PULI9sr6xYCS34J/kO6GU6fhwOGUfUJjRdOis3Xj00WwUZxZUQ5ZQ==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", + "OpenIddict.Client": "7.6.0" + } + }, + "OpenIddict.Client.SystemNetHttp": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "HsiL7rCRCFd7D1uvi6+HLmlkw9ykbLsEJ1GJMttuLB3/C8/LcqX+wHxr1W/GXl2YXhleNMW21I5AeVtGnfd9tg==", + "dependencies": { + "Microsoft.Extensions.Http.Polly": "10.0.10", + "Microsoft.Extensions.Http.Resilience": "10.8.0", + "OpenIddict.Client": "7.6.0" + } + }, + "OpenIddict.Client.WebIntegration": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "vJzIkHZwjB8vp6Hhxa8s9ruh/L+ZgpJUszGVP+kQQoqDQ8yZygbl0xWKuAHQ4OCIk3FTeSib9xH8uetm47YPgg==", + "dependencies": { + "OpenIddict.Client": "7.6.0", + "OpenIddict.Client.SystemNetHttp": "7.6.0" + } + }, + "OpenIddict.EntityFrameworkCore.Models": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "DrWB0dLfsg3mZhWABAlqSZKXin4Q4Pn8V4S7/1JxP5T/7Ncl0y45rM9L2EWv/zdydaiTOFKi4jRDBZAgBxUjaQ==" + }, + "OpenIddict.Server": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "0c7wlRYcP2Smgjp3PWyyojZ972H26otp6irW/WAFEbg4ZylcUvtlw0lkrCr/K8s5lAnYZwrpyzguwrJhXGKPVg==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.IdentityModel.JsonWebTokens": "8.19.2", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.Server.AspNetCore": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "m2Hk2R4gaTlEYBvNHz2fvIr38p1agiR2nW2gi5WMgSByFHxeEK5uhxqVGdSB2kEHRtp9kza/zBWBgIM4TdcVqw==", + "dependencies": { + "OpenIddict.Server": "7.6.0" + } + }, + "OpenIddict.Server.DataProtection": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ScGEt6uNuk2MZ/6DzVAMi/QegZulkvYKPRMrRu5/8/uI8P5o5XbEhEvancFx9YmBHL1uGE8SIByfTfxJx8kefA==", + "dependencies": { + "Microsoft.AspNetCore.DataProtection": "10.0.10", + "OpenIddict.Server": "7.6.0", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "OpenIddict.Validation": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ovzLQJ31uWZpgLdRVuD9Gmu8wxvhvbXW32MFTglFblhfqRwj/hMcEGOo8hdl+ir3QpDr9NUDAORA+v3S7xc6IA==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.IdentityModel.JsonWebTokens": "8.19.2", + "Microsoft.IdentityModel.Protocols": "8.19.2", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.Validation.AspNetCore": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "oby5/Ymdxd+g1TGtyTGrcK5J3/NSI80aw2CJgULwwIxraiCjiIfexrBjCxkPchWqPNFe6aAdGJ/Jz6amHNfrzg==", + "dependencies": { + "OpenIddict.Validation": "7.6.0" + } + }, + "OpenIddict.Validation.DataProtection": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ckC2xcPeJ/kLSyJXNOmpmFLnA1qM6zC8RR5d2pUtoToA6caMikebkL3NmRjBgxBRVvFmi7x9lMJ7+YmrI+uAlg==", + "dependencies": { + "Microsoft.AspNetCore.DataProtection": "10.0.10", + "OpenIddict.Validation": "7.6.0", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "OpenIddict.Validation.ServerIntegration": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "0bHhKsMV45UMPM5Phh51+g/tMUJNRzOWe6p/5opKeMQV8XoO3y3J9o/ZbfZ0j4qTTbQ7pqzEKSZaS4cGs0B3nQ==", + "dependencies": { + "OpenIddict.Server": "7.6.0", + "OpenIddict.Validation": "7.6.0" + } + }, + "OpenIddict.Validation.SystemNetHttp": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "N3MHlVaik22apnhxCTsqP6TjwRB/h874+5ks/m1+wKmOWqMyJ5UjIaZCvUOrDSMtDiEVted8qkjEJRzjAe0rGQ==", + "dependencies": { + "Microsoft.Extensions.Http.Polly": "10.0.10", + "Microsoft.Extensions.Http.Resilience": "10.8.0", + "OpenIddict.Validation": "7.6.0" + } + }, + "OpenTelemetry": { + "type": "Transitive", + "resolved": "1.18.0", + "contentHash": "13AKxycK+olOLe061MjliPTNBR/DUkjyRr0b9zwUhKyMjFS8lXS7G31R85rkbM55up2YFmdykWdAw2giBDJpiQ==", + "dependencies": { + "Microsoft.Extensions.Configuration.EnvironmentVariables": "10.0.0", + "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Configuration": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "1.18.0" + } + }, + "OpenTelemetry.Api.ProviderBuilderExtensions": { + "type": "Transitive", + "resolved": "1.18.0", + "contentHash": "io6A6PJFp3vIObRGf6oPjdHsdglkinXt/0SpTDJHrVnsLxUtOzwh/QwTsnhBJ43wJ6QcGMkyNzsSSY8XEB1Q5Q==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "OpenTelemetry.Api": "1.18.0" + } + }, "Polly.Core": { "type": "Transitive", "resolved": "8.7.0", "contentHash": "BS2t+nsBer16PIebCEPNBK5fgMisADQyRCd7K+BgkMWpFmSaiYE+rVVNpFhGRqUkJmNSLmw0uCNzHHWfgml28Q==" }, + "Polly.Extensions": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "GZ9vRVmR0jV2JtZavt+pGUsQ1O1cuRKG7R7VOZI6ZDy9y6RNPvRvXK1tuS4ffUrv8L0FTea59oEuQzgS0R7zSA==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "Polly.Core": "8.4.2" + } + }, + "Polly.Extensions.Http": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "drrG+hB3pYFY7w1c3BD+lSGYvH2oIclH8GRSehgfyP5kjnFnHKQuuBhuHLv+PWyFuaTDyk/vfRpnxOzd11+J8g==", + "dependencies": { + "Polly": "7.1.0" + } + }, + "Polly.RateLimiting": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "ehTImQ/eUyO07VYW2WvwSmU9rRH200SKJ/3jku9rOkyWE0A2JxNFmAVms8dSn49QLSjmjFRRSgfNyOgr/2PSmA==", + "dependencies": { + "Polly.Core": "8.4.2", + "System.Threading.RateLimiting": "8.0.0" + } + }, + "runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "A8v6PGmk+UGbfWo5Ixup0lPM4swuSwOiayJExZwKIOjTlFFQIsu3QnDXECosBEyrWSPryxBVrdqtJyhK3BaupQ==", + "dependencies": { + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": "4.4.0" + } + }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, + "Serilog.Extensions.Logging": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "vx0kABKl2dWbBhhqAfTOk53/i8aV/5VaT3a6il9gn72Wqs2pM7EK2OB6No6xdqK2IaY6Zf9gdjLuK9BVa2rT+Q==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.0", + "Serilog": "4.2.0" + } + }, + "Swashbuckle.AspNetCore.Swagger": { + "type": "Transitive", + "resolved": "10.2.3", + "contentHash": "1jUUs3WQnrS0FUtaZPLSy1yYMEwS1zlvDmvQ2/eldPHUANX0LJSLVZecCMgSMdeGiRqeaRrIXLtSz++TCiTMww==", + "dependencies": { + "Microsoft.OpenApi": "2.7.5" + } + }, + "Swashbuckle.AspNetCore.SwaggerGen": { + "type": "Transitive", + "resolved": "10.2.3", + "contentHash": "y7t4coDRAeFYChmvlMRiH2OjbiRrm9AVIDgt17fQfs3x9PVAI5PiwWYOhg+4F13R4Q36WDc9lqfoOnNa3tNbGg==", + "dependencies": { + "Swashbuckle.AspNetCore.Swagger": "10.2.3" + } + }, + "Swashbuckle.AspNetCore.SwaggerUI": { + "type": "Transitive", + "resolved": "10.2.3", + "contentHash": "nthWONRs/FJ4yyG206g1cC52WEG8EqrjuMWjGdR+5XG7lbjFto6NqcI9EMICgVFom/UivIjUVwI76ZHbHwTPfQ==" + }, "System.ClientModel": { "type": "Transitive", "resolved": "1.14.0", @@ -612,11 +1031,11 @@ }, "System.Configuration.ConfigurationManager": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "vPinosRgEk1CGjohbv0pDuz6gPprkWo5xvBTjOJjks5JOgOEWvPndq5NngGxiTcBcy1+k9GwzZ1c3Bp2fU5ezw==", + "resolved": "9.0.13", + "contentHash": "GbBrJq9S/gYpHzm7Pxx6Y5tDyfSfyxW6tlP5oiKJV38uf19Wp+GIIAnWfyL1zmNiz1+EjwVapw2WkBFvvqKQzg==", "dependencies": { - "System.Diagnostics.EventLog": "9.0.11", - "System.Security.Cryptography.ProtectedData": "9.0.11" + "System.Diagnostics.EventLog": "9.0.13", + "System.Security.Cryptography.ProtectedData": "9.0.13" } }, "System.Diagnostics.EventLog": { @@ -626,11 +1045,11 @@ }, "System.IdentityModel.Tokens.Jwt": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "rQkO1YbAjLwnDJSMpRhRtrc6XwIcEOcUvoEcge+evurpzSZM3UNK+MZfD3sKyTlYsvknZ6eJjSBfnmXqwOsT9Q==", + "resolved": "8.16.0", + "contentHash": "rrs2u7DRMXQG2yh0oVyF/vLwosfRv20Ld2iEpYcKwQWXHjfV+gFXNQsQ9p008kR9Ou4pxBs68Q6/9zC8Gi1wjg==", "dependencies": { - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Tokens": "7.7.1" + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Tokens": "8.16.0" } }, "System.IO.Hashing": { @@ -653,19 +1072,54 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "System.Security.Cryptography.ProtectedData": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "s8yUYuYYu+PAwvBdhLG1KyrGrk9gkYeuPxfAsXsTqqWyepwSyEw8hAaflW4nO98NG52YpYI1am2+9o+79h2RtQ==" + "resolved": "9.0.13", + "contentHash": "t8S9IDpjJKsLpLkeBdW8cWtcPyYqrGu93Dej1RO6WwuL/lkFSqWlan3rMJfortqz1mRIh+sys2AFsSA6jWJ3Jg==" + }, + "System.Security.Cryptography.Xml": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "Mz6Y+s+uMQKj1H2BUF0OhlmaOQkLgSG34/IrUaBDirYBQ6bgwcFvO/XtXWcoDlBLFoFB0uKqDNhybHOd+fQK1A==", + "dependencies": { + "System.Security.Cryptography.Pkcs": "10.0.10" + } }, "System.Threading.RateLimiting": { "type": "Transitive", "resolved": "8.0.0", "contentHash": "7mu9v0QDv66ar3DpGSZHg9NuNcxDaaAcnMULuZlaTpP9+hwXhrxNGsF5GmLkSHxFdb5bBc1TzeujsRgTrPWi+Q==" }, + "Backbone.BuildingBlocks.API": { + "type": "Project", + "dependencies": { + "Asp.Versioning.Mvc": "[10.0.1, 10.0.1]", + "Asp.Versioning.Mvc.ApiExplorer": "[10.0.1, 10.0.1]", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Module": "[1.0.0, )", + "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", + "Backbone.Tooling": "[1.0.0, )", + "DotNetDiag.HealthChecks.NpgSql": "[10.0.10, 10.0.10]", + "DotNetDiag.HealthChecks.SqlServer": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.Relational": "[10.0.10, 10.0.10]", + "OpenTelemetry.Exporter.OpenTelemetryProtocol": "[1.18.0, )", + "OpenTelemetry.Extensions.Hosting": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.AspNetCore": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.EntityFrameworkCore": "[1.18.0-beta.1, )", + "OpenTelemetry.Instrumentation.Http": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.Runtime": "[1.18.0, 1.18.0]", + "Polly": "[8.7.0, 8.7.0]", + "Serilog.Enrichers.Sensitive": "[2.1.0, 2.1.0]", + "Serilog.Extensions.Hosting": "[10.0.0, 10.0.0]", + "Swashbuckle.AspNetCore": "[10.2.3, 10.2.3]", + "System.Data.SqlClient": "[4.9.1, 4.9.1]" + } + }, "Backbone.BuildingBlocks.Application": { "type": "Project", "dependencies": { @@ -742,6 +1196,13 @@ "Polly": "[8.7.0, 8.7.0]" } }, + "Backbone.Crypto": { + "type": "Project", + "dependencies": { + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", + "NSec.Cryptography": "[26.4.0, 26.4.0]" + } + }, "Backbone.DevelopmentKit.Identity": { "type": "Project", "dependencies": { @@ -749,11 +1210,79 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Tags.Application": { + "Backbone.Modules.Announcements.Contracts": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )" + } + }, + "Backbone.Modules.Devices.Application": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.Crypto": "[1.0.0, )", + "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", + "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", + "FluentValidation": "[12.1.1, 12.1.1]", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "OpenIddict.Core": "[7.6.0, 7.6.0]", + "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", + "Polly": "[8.7.0, 8.7.0]" + } + }, + "Backbone.Modules.Devices.Contracts": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )" + } + }, + "Backbone.Modules.Devices.Domain": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )", + "Backbone.DevelopmentKit.Identity": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Tooling": "[1.0.0, )", + "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]" + } + }, + "Backbone.Modules.Devices.Infrastructure": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", + "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "FirebaseAdmin": "[3.6.0, 3.6.0]", + "JWT": "[11.1.0, 11.1.0]", + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.Relational": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.DependencyInjection": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Identity.Core": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Identity.Stores": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Logging": "[10.0.10, 10.0.10]", + "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, 10.0.3]", + "OpenIddict.AspNetCore": "[7.6.0, 7.6.0]", + "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", + "Polly": "[8.7.0, 8.7.0]" + } + }, + "Backbone.Modules.Synchronization.Contracts": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )" + } + }, + "Backbone.Modules.Tags.Abstractions": { + "type": "Project", + "dependencies": { "Backbone.Modules.Tags.Domain": "[1.0.0, )" } }, @@ -763,8 +1292,16 @@ "Backbone.Modules.Tags.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.Modules.Tags.Application": "[1.0.0, )", - "Backbone.Modules.Tags.Domain": "[1.0.0, )" + "Backbone.Modules.Tags.Abstractions": "[1.0.0, )", + "Backbone.Modules.Tags.Domain": "[1.0.0, )", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Options": "[10.0.10, 10.0.10]" + } + }, + "Backbone.Modules.Tokens.Contracts": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )" } }, "Backbone.Tooling": { @@ -774,6 +1311,24 @@ "Microsoft.Extensions.Options": "[10.0.10, 10.0.10]" } }, + "Asp.Versioning.Mvc": { + "type": "CentralTransitive", + "requested": "[10.0.1, 10.0.1]", + "resolved": "10.0.1", + "contentHash": "OqoFPKKxXkNmw62H3CgXkPrf1L4PPwwyYr9QMP6itt/khKTIayqaHhK6F2e3jt6KHc4s23cWAUbu+Z5GPEeMaw==", + "dependencies": { + "Asp.Versioning.Http": "10.0.1" + } + }, + "Asp.Versioning.Mvc.ApiExplorer": { + "type": "CentralTransitive", + "requested": "[10.0.1, 10.0.1]", + "resolved": "10.0.1", + "contentHash": "ylPZe+LheFp0pt2tSMq2pPeGAkMLqWVOn5+1/xOB/eUj889n9b35Sny08bSQ0ziAGIFjp3BBTXaYsWJjRoFV4A==", + "dependencies": { + "Asp.Versioning.Mvc": "10.0.1" + } + }, "Autofac": { "type": "CentralTransitive", "requested": "[9.3.2, 9.3.2]", @@ -810,12 +1365,44 @@ "Azure.Storage.Common": "12.28.0" } }, + "BouncyCastle.Cryptography": { + "type": "CentralTransitive", + "requested": "[2.7.0, 2.7.0]", + "resolved": "2.7.0", + "contentHash": "U+12df8UEWHgBi04YVf/Lgi2dy3SItlIYvHjjEVa/BngCQIzDCDRBk50DDByCfDvSbe5pRNFr3b7UrVK2kMcLw==" + }, + "CSharpFunctionalExtensions": { + "type": "CentralTransitive", + "requested": "[3.7.0, 3.7.0]", + "resolved": "3.7.0", + "contentHash": "eMZp8tc88O96eEFutiIskF3LE8lFY3fjbNRGfNa1ca0CD9sB8A00r5ltyYDih/7UFdJdVbhVq7tGeHI8xj6DlQ==" + }, "Dapper": { "type": "CentralTransitive", "requested": "[2.1.79, 2.1.79]", "resolved": "2.1.79", "contentHash": "8YijbzgTfmqmQOnVNorYM6K++pxqnW3nJ4aC1sRHzxUA2CcuoJ9gsTem3kgBnPRMc38zZHl4Esb6hAezXIEEuw==" }, + "DotNetDiag.HealthChecks.NpgSql": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "lxb6wQ1YC/TpvZMVgbyeLP5dYOg/RJWLg1xlR+I0FeyfyMmukppKdwzBOrKRtZ8FHG3nV9xrVTaPdwRw0yL4Vw==", + "dependencies": { + "Microsoft.Extensions.Diagnostics.HealthChecks": "10.0.9", + "Npgsql": "10.0.3" + } + }, + "DotNetDiag.HealthChecks.SqlServer": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "6t2HP5VQR0GZDJiw8iZvzOTRC+84irUeaUuWvcqcnc4K5Mzrn/A9V0ucoyjySXOF1vGkdTHjlJMknJVYC9c2Hg==", + "dependencies": { + "Microsoft.Data.SqlClient": "7.0.2", + "Microsoft.Extensions.Diagnostics.HealthChecks": "10.0.9" + } + }, "EFCore.BulkExtensions.Core": { "type": "CentralTransitive", "requested": "[10.0.1, 10.0.1]", @@ -849,12 +1436,32 @@ "NetTopologySuite.IO.SqlServerBytes": "2.1.0" } }, + "FirebaseAdmin": { + "type": "CentralTransitive", + "requested": "[3.6.0, 3.6.0]", + "resolved": "3.6.0", + "contentHash": "aP8UWyQYACDOZqnHN9WB77TS0DlB8kVj8/HB7evUaAhAgPJQ9y4NmISJ3kkYkWBG5va3PHvYN5H+ZDBhABSEFQ==", + "dependencies": { + "Google.Api.Gax.Rest": "4.13.1", + "Google.Apis.Auth": "1.73.0" + } + }, "FluentValidation": { "type": "CentralTransitive", "requested": "[12.1.1, 12.1.1]", "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, + "FluentValidation.DependencyInjectionExtensions": { + "type": "CentralTransitive", + "requested": "[12.1.1, 12.1.1]", + "resolved": "12.1.1", + "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", + "dependencies": { + "FluentValidation": "12.1.1", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" + } + }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", @@ -875,6 +1482,15 @@ "Google.Apis.Storage.v1": "[1.74.0.4115, 2.0.0)" } }, + "JWT": { + "type": "CentralTransitive", + "requested": "[11.1.0, 11.1.0]", + "resolved": "11.1.0", + "contentHash": "GbmNr2WUyY3Ma0rwuvmTDnE5tIV8gFNDWeua9Fn54HwrpvGfwQzi7HtEAnMgI4quf4MuJr0iwPkt9sKrNCq1Tg==", + "dependencies": { + "Newtonsoft.Json": "13.0.4" + } + }, "MediatR": { "type": "CentralTransitive", "requested": "[12.5.0, 12.5.0]", @@ -891,6 +1507,16 @@ "resolved": "2.0.1", "contentHash": "FYv95bNT4UwcNA+G/J1oX5OpRiSUxteXaUt2BJbRSdRNiIUNbggJF69wy6mnk2wYToaanpdXZdCwVylt96MpwQ==" }, + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "/ZV8RMWbWob1ZGsF5f1wVJNNlFLPKCf2ba834PpQiNhirVQ/ksup5SujtuUsvByHEZgv+9dmjC/4Xdi75axmXQ==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "10.0.10", + "Microsoft.Extensions.Identity.Stores": "10.0.10" + } + }, "Microsoft.EntityFrameworkCore": { "type": "CentralTransitive", "requested": "[10.0.10, 10.0.10]", @@ -1082,6 +1708,17 @@ "Microsoft.Extensions.Options": "10.0.10" } }, + "Microsoft.Extensions.Identity.Stores": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "WMG/9wPJPnwU2w1R/WPLO/RL2UpGpBhw9z6odAAUkFdZypzzXl620FJWEoPpuBUq6Q4GYgMg0FQVRCO6gO4MQQ==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "10.0.10", + "Microsoft.Extensions.Identity.Core": "10.0.10", + "Microsoft.Extensions.Logging": "10.0.10" + } + }, "Microsoft.Extensions.Logging": { "type": "CentralTransitive", "requested": "[10.0.10, 10.0.10]", @@ -1123,12 +1760,118 @@ "Npgsql": "10.0.3" } }, + "NSec.Cryptography": { + "type": "CentralTransitive", + "requested": "[26.4.0, 26.4.0]", + "resolved": "26.4.0", + "contentHash": "0vsCtY5f+YgQROiWNqzgWp+l2pddfk9FkWoGV/bEo0MuEYPKlJWuoA8aOfO6qp3f+EnObKE3zSJhn1PspJeJVg==", + "dependencies": { + "libsodium": "[1.0.22, 1.0.23)" + } + }, + "OpenIddict.AspNetCore": { + "type": "CentralTransitive", + "requested": "[7.6.0, 7.6.0]", + "resolved": "7.6.0", + "contentHash": "FblhXU1SzSjL1nPsK5kqi+uMofNYLg1gwBU/qqc8diOafTv/6jLOhpCzzk+wISR8OnkS7H3oFMcTjy8aaTm8ww==", + "dependencies": { + "OpenIddict": "7.6.0", + "OpenIddict.Client.AspNetCore": "7.6.0", + "OpenIddict.Client.DataProtection": "7.6.0", + "OpenIddict.Server.AspNetCore": "7.6.0", + "OpenIddict.Server.DataProtection": "7.6.0", + "OpenIddict.Validation.AspNetCore": "7.6.0", + "OpenIddict.Validation.DataProtection": "7.6.0" + } + }, + "OpenIddict.Core": { + "type": "CentralTransitive", + "requested": "[7.6.0, 7.6.0]", + "resolved": "7.6.0", + "contentHash": "LJQ+GsSY6Nfw5FZ4NzCvL2kwYU1GNz6ygiUNGvqcKP0qXwstU59RDAjNKTCGkPPq4TQGnETqr4UsJgyK+AFxeA==", + "dependencies": { + "Microsoft.Extensions.Caching.Memory": "10.0.10", + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.Extensions.Options": "10.0.10", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[7.6.0, 7.6.0]", + "resolved": "7.6.0", + "contentHash": "BWbgvgKbDcg3EuNJvmXtUzeLxg9c4bU+PfDnZetCjGwcnlCsWcASkjVexKKevtUgWxRWJTQFRchMA09OKmOF/w==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "10.0.10", + "OpenIddict.Core": "7.6.0", + "OpenIddict.EntityFrameworkCore.Models": "7.6.0" + } + }, "OpenTelemetry.Api": { "type": "CentralTransitive", "requested": "[1.18.0, )", "resolved": "1.18.0", "contentHash": "Dhzm5oughIY9EWckt2J1yXcEbXpki5WCL2q7prJoYxzH6C7jdkfGtPMTkUVZZ4AhjJKzQnlC+kLSIlmIVwC4Vw==" }, + "OpenTelemetry.Exporter.OpenTelemetryProtocol": { + "type": "CentralTransitive", + "requested": "[1.18.0, )", + "resolved": "1.18.0", + "contentHash": "Et3WAviooKGObZjUZN8d6eTsdJs1YM3ZoN+KlWSAHksTmHG1nyGi9XGo2wb0fkFMWK0g80FOPdR1njg52Dm+aw==", + "dependencies": { + "OpenTelemetry": "1.18.0" + } + }, + "OpenTelemetry.Extensions.Hosting": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "u+JMA82H65MKwMvd2qUpL8C2qE4Jux2nvX9hmy036UK/Apv2YyIRYCttF/vlX6nMPcAKI8BXkscmL4QG3C69fw==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", + "OpenTelemetry": "1.18.0" + } + }, + "OpenTelemetry.Instrumentation.AspNetCore": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "hBiMXE/CGIAHUOpi0gScNkjHB0L9XbCin5lZObL+dMBl4OmpndnHgxP3JZDnnGtU6qOzdeh8TYUV9f6Jgmmhlw==", + "dependencies": { + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[1.18.0-beta.1, )", + "resolved": "1.18.0-beta.1", + "contentHash": "n15cNXxkSl9G6KD41wZYmujjERYOBiIgn2VeesTFhLtHZ+QQQE3baLrCk7UyzidEw/uGObRcW3SKhqpyMpGe1w==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Http": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "/X57peOOa4a+9V4DSVXbuIWdsAxmU5gsxw8lu+gJU0zuewsYhC9f6qdm8GEW0VvqG9e+gxn0HdVR5G3YHcWDTw==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Runtime": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "McuXGjBJDL/Cown2PxfUQysK98MZG7ZDjO/IKUtaAx8t1m0PB0d+QtJC79RFTVipMhRIwjJiULNOp0OGfZbvwg==", + "dependencies": { + "OpenTelemetry.Api": "[1.18.0, 2.0.0)" + } + }, "Polly": { "type": "CentralTransitive", "requested": "[8.7.0, 8.7.0]", @@ -1153,30 +1896,74 @@ "resolved": "4.4.0", "contentHash": "ZC6Le3rr4TVJJjS4KsQAesxeF1EhW9qcZmmG7eP5Y2G3+gTGkJEUXkq4+tZNPtyp05I0wWOxnIjwtxFweJsObw==" }, + "Serilog.Enrichers.Sensitive": { + "type": "CentralTransitive", + "requested": "[2.1.0, 2.1.0]", + "resolved": "2.1.0", + "contentHash": "nlaEYMoHjJqncjQgc0Nv4LOIkAwUt4Nvmx3EMNjY4MKC7QqZs9zB0v/NwFnaWzLF7qztc7mna1bjn20Auohu0g==" + }, + "Serilog.Extensions.Hosting": { + "type": "CentralTransitive", + "requested": "[10.0.0, 10.0.0]", + "resolved": "10.0.0", + "contentHash": "E7juuIc+gzoGxgzFooFgAV8g9BfiSXNKsUok9NmEpyAXg2odkcPsMa/Yo4axkJRlh0se7mkYQ1GXDaBemR+b6w==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Serilog": "4.3.0", + "Serilog.Extensions.Logging": "10.0.0" + } + }, "SimpleBase": { "type": "CentralTransitive", "requested": "[5.6.3, 5.6.3]", "resolved": "5.6.3", "contentHash": "ayL730f1gdQVYmFFLKSX83QcoltyKSMBsV94qfCBpZHMaJz/e3ALuXKZDD8SkseWbNHxBe0HxLRBe5OOpQ9HpA==" + }, + "Swashbuckle.AspNetCore": { + "type": "CentralTransitive", + "requested": "[10.2.3, 10.2.3]", + "resolved": "10.2.3", + "contentHash": "8KNh1RWvofdU6DVLyBs4Z/OpUMnmf8oNvJQc0QxpwySRbi42bwLfdVMMrXZWANg5U5KQGQq1xW6r/hlcqw99tQ==", + "dependencies": { + "Microsoft.Extensions.ApiDescription.Server": "10.0.0", + "Swashbuckle.AspNetCore.Swagger": "10.2.3", + "Swashbuckle.AspNetCore.SwaggerGen": "10.2.3", + "Swashbuckle.AspNetCore.SwaggerUI": "10.2.3" + } + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/linux-arm64": { + "libsodium": { + "type": "Transitive", + "resolved": "1.0.22", + "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" + }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1192,6 +1979,21 @@ "Microsoft.SqlServer.Server": "1.0.0" } }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1207,27 +2009,40 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/linux-x64": { + "libsodium": { + "type": "Transitive", + "resolved": "1.0.22", + "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" + }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1243,6 +2058,21 @@ "Microsoft.SqlServer.Server": "1.0.0" } }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1258,27 +2088,40 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/osx-arm64": { + "libsodium": { + "type": "Transitive", + "resolved": "1.0.22", + "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" + }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1294,6 +2137,21 @@ "Microsoft.SqlServer.Server": "1.0.0" } }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1309,27 +2167,40 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/win-x64": { + "libsodium": { + "type": "Transitive", + "resolved": "1.0.22", + "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" + }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1345,6 +2216,21 @@ "Microsoft.SqlServer.Server": "1.0.0" } }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1360,8 +2246,17 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } } } From fa4515538b4e0e2646d23ddc1b387cc4468289a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20H=C3=BCgel?= Date: Thu, 1 Oct 2026 13:07:33 +0200 Subject: [PATCH 10/25] refactor: migrate Challenges module --- .../AdminApi/src/AdminApi/AdminApi.csproj | 1 - .../Controllers/ChallengesController.cs | 4 +- Applications/AdminApi/src/AdminApi/Dockerfile | 2 +- Applications/AdminApi/src/AdminApi/Program.cs | 4 +- .../AdminApi/src/AdminApi/packages.lock.json | 12 +- .../packages.lock.json | 13 +- .../Challenges/ChallengesController.cs | 42 - Applications/ConsumerApi/src/Program.cs | 3 +- .../ConsumerApi/src/packages.lock.json | 12 +- .../packages.lock.json | 12 +- .../src/DatabaseMigrator/Dockerfile | 2 +- .../src/DatabaseMigrator/packages.lock.json | 9 +- .../DatabaseMigrator.Tests/packages.lock.json | 9 +- .../src/EventHandlerService/Dockerfile | 2 +- .../src/EventHandlerService/Program.cs | 2 +- .../EventHandlerService/packages.lock.json | 12 +- .../packages.lock.json | 12 +- .../Housekeeper/src/Housekeeper/Dockerfile | 2 +- .../Housekeeper/src/Housekeeper/Executor.cs | 2 +- .../Housekeeper/src/Housekeeper/Program.cs | 4 +- .../src/Housekeeper/packages.lock.json | 12 +- .../src/Job.IdentityDeletion/Dockerfile | 2 +- .../Job.IdentityDeletion.csproj | 1 - .../src/Job.IdentityDeletion/Program.cs | 2 +- .../ServicesExtensions.cs | 2 +- .../Job.IdentityDeletion/packages.lock.json | 12 +- .../packages.lock.json | 13 +- .../packages.lock.json | 13 +- .../Backbone.Tests.ArchUnit.csproj | 3 +- .../VerticalSliceArchitecture.cs | 5 +- Backbone.Tests.ArchUnit/packages.lock.json | 35 +- Backbone.slnx | 4 +- .../Challenges.Abstractions.csproj | 5 + .../IChallengesRepository.cs | 2 +- .../packages.lock.json | 74 + .../ApplicationConfiguration.cs | 3 - .../Challenges.Application.csproj | 12 - .../CreateChallenge/CreateChallengeCommand.cs | 6 - .../ExecuteHousekeepingCommand.cs | 5 - .../GetChallengeById/GetChallengeByIdQuery.cs | 9 - .../ApplicationServiceCollectionExtensions.cs | 52 - .../Challenges.Application/packages.lock.json | 1358 ----------------- .../packages.lock.json | 252 +-- .../packages.lock.json | 252 +-- .../Challenges.Infrastructure.csproj | 2 +- .../IServiceCollectionExtensions.cs | 2 +- .../ChallengeQueryableExtensions.cs | 2 +- .../Repository/ChallengesRepository.cs | 3 +- .../packages.lock.json | 250 +-- .../ApplicationConfiguration.cs | 3 + .../ApplicationServiceCollectionExtensions.cs | 20 + .../Challenges.Module.csproj | 3 +- .../ChallengesEndpointExtensions.cs | 18 + .../src/Challenges.Module/ChallengesModule.cs | 2 - .../Challenges/CreateChallenge/Command.cs | 6 + .../Challenges/CreateChallenge/Endpoint.cs | 28 + .../Challenges}/CreateChallenge/Handler.cs | 6 +- .../Challenges/CreateChallenge/Validator.cs} | 2 +- .../DeleteChallengesOfIdentity/Command.cs} | 4 +- .../DeleteChallengesOfIdentity/Handler.cs | 4 +- .../DeleteChallengesOfIdentity/Validator.cs | 4 +- .../Challenges/ExecuteHousekeeping/Command.cs | 5 + .../ExecuteHousekeeping/Handler.cs | 6 +- .../Challenges/GetChallengeById/Endpoint.cs | 32 + .../Challenges}/GetChallengeById/Handler.cs | 6 +- .../Challenges/GetChallengeById/Query.cs | 9 + .../Challenges}/GetChallengeById/Validator.cs | 4 +- .../Challenges/Shared}/ChallengeDTO.cs | 2 +- .../DeleteIdentity}/IdentityDeleter.cs | 6 +- .../src/Challenges.Module/packages.lock.json | 29 +- .../Challenges.Module.Tests.csproj} | 2 +- .../ValidatorTests.cs | 4 +- .../GetChallengeById/ValidatorTests.cs | 6 +- .../Tests/Identities/IdentityDeleterTests.cs | 8 +- .../packages.lock.json | 1155 ++++++++++++-- 75 files changed, 1423 insertions(+), 2505 deletions(-) delete mode 100644 Applications/ConsumerApi/src/Controllers/Challenges/ChallengesController.cs create mode 100644 Modules/Challenges/src/Challenges.Abstractions/Challenges.Abstractions.csproj rename Modules/Challenges/src/{Challenges.Application/Infrastructure/Persistence/Repository => Challenges.Abstractions}/IChallengesRepository.cs (82%) create mode 100644 Modules/Challenges/src/Challenges.Abstractions/packages.lock.json delete mode 100644 Modules/Challenges/src/Challenges.Application/ApplicationConfiguration.cs delete mode 100644 Modules/Challenges/src/Challenges.Application/Challenges.Application.csproj delete mode 100644 Modules/Challenges/src/Challenges.Application/Challenges/Commands/CreateChallenge/CreateChallengeCommand.cs delete mode 100644 Modules/Challenges/src/Challenges.Application/Challenges/Commands/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs delete mode 100644 Modules/Challenges/src/Challenges.Application/Challenges/Queries/GetChallengeById/GetChallengeByIdQuery.cs delete mode 100644 Modules/Challenges/src/Challenges.Application/Extensions/ApplicationServiceCollectionExtensions.cs delete mode 100644 Modules/Challenges/src/Challenges.Application/packages.lock.json rename Modules/Challenges/src/{Challenges.Application/Extensions => Challenges.Infrastructure/Persistence/Repository}/ChallengeQueryableExtensions.cs (88%) create mode 100644 Modules/Challenges/src/Challenges.Module/ApplicationConfiguration.cs create mode 100644 Modules/Challenges/src/Challenges.Module/ApplicationServiceCollectionExtensions.cs create mode 100644 Modules/Challenges/src/Challenges.Module/ChallengesEndpointExtensions.cs create mode 100644 Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Command.cs create mode 100644 Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Endpoint.cs rename Modules/Challenges/src/{Challenges.Application/Challenges/Commands => Challenges.Module/Features/Challenges}/CreateChallenge/Handler.cs (79%) rename Modules/Challenges/src/{Challenges.Application/Challenges/Commands/CreateChallenge/Validators.cs => Challenges.Module/Features/Challenges/CreateChallenge/Validator.cs} (57%) rename Modules/Challenges/src/{Challenges.Application/Challenges/Commands/DeleteChallengesOfIdentity/DeleteChallengesOfIdentityCommand.cs => Challenges.Module/Features/Challenges/DeleteChallengesOfIdentity/Command.cs} (51%) rename Modules/Challenges/src/{Challenges.Application/Challenges/Commands => Challenges.Module/Features/Challenges}/DeleteChallengesOfIdentity/Handler.cs (75%) rename Modules/Challenges/src/{Challenges.Application/Challenges/Commands => Challenges.Module/Features/Challenges}/DeleteChallengesOfIdentity/Validator.cs (65%) create mode 100644 Modules/Challenges/src/Challenges.Module/Features/Challenges/ExecuteHousekeeping/Command.cs rename Modules/Challenges/src/{Challenges.Application/Challenges/Commands => Challenges.Module/Features/Challenges}/ExecuteHousekeeping/Handler.cs (76%) create mode 100644 Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Endpoint.cs rename Modules/Challenges/src/{Challenges.Application/Challenges/Queries => Challenges.Module/Features/Challenges}/GetChallengeById/Handler.cs (77%) create mode 100644 Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Query.cs rename Modules/Challenges/src/{Challenges.Application/Challenges/Queries => Challenges.Module/Features/Challenges}/GetChallengeById/Validator.cs (63%) rename Modules/Challenges/src/{Challenges.Application/Challenges/DTOs => Challenges.Module/Features/Challenges/Shared}/ChallengeDTO.cs (87%) rename Modules/Challenges/src/{Challenges.Application/Identities => Challenges.Module/Features/Identities/DeleteIdentity}/IdentityDeleter.cs (75%) rename Modules/Challenges/test/{Challenges.Application.Tests/Challenges.Application.Tests.csproj => Challenges.Module.Tests/Challenges.Module.Tests.csproj} (88%) rename Modules/Challenges/test/{Challenges.Application.Tests => Challenges.Module.Tests}/Tests/Challenges/Commands/DeleteChallengesOfIdentity/ValidatorTests.cs (81%) rename Modules/Challenges/test/{Challenges.Application.Tests => Challenges.Module.Tests}/Tests/Challenges/Queries/GetChallengeById/ValidatorTests.cs (75%) rename Modules/Challenges/test/{Challenges.Application.Tests => Challenges.Module.Tests}/Tests/Identities/IdentityDeleterTests.cs (82%) rename Modules/Challenges/test/{Challenges.Application.Tests => Challenges.Module.Tests}/packages.lock.json (58%) diff --git a/Applications/AdminApi/src/AdminApi/AdminApi.csproj b/Applications/AdminApi/src/AdminApi/AdminApi.csproj index 4db1962032..dbcf1962cf 100644 --- a/Applications/AdminApi/src/AdminApi/AdminApi.csproj +++ b/Applications/AdminApi/src/AdminApi/AdminApi.csproj @@ -27,7 +27,6 @@ - diff --git a/Applications/AdminApi/src/AdminApi/Controllers/ChallengesController.cs b/Applications/AdminApi/src/AdminApi/Controllers/ChallengesController.cs index 2924cb961a..909a69de6f 100644 --- a/Applications/AdminApi/src/AdminApi/Controllers/ChallengesController.cs +++ b/Applications/AdminApi/src/AdminApi/Controllers/ChallengesController.cs @@ -2,8 +2,8 @@ using Backbone.BuildingBlocks.API; using Backbone.BuildingBlocks.API.Mvc; using Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; -using Backbone.Modules.Challenges.Application.Challenges.Commands.CreateChallenge; -using Backbone.Modules.Challenges.Application.Challenges.DTOs; +using Backbone.Modules.Challenges.Module.Features.Challenges.CreateChallenge; +using Backbone.Modules.Challenges.Module.Features.Challenges.Shared; using MediatR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; diff --git a/Applications/AdminApi/src/AdminApi/Dockerfile b/Applications/AdminApi/src/AdminApi/Dockerfile index 2cd5407fef..6ca800b46f 100644 --- a/Applications/AdminApi/src/AdminApi/Dockerfile +++ b/Applications/AdminApi/src/AdminApi/Dockerfile @@ -42,7 +42,7 @@ COPY ["Modules/Announcements/src/Announcements.Module/Announcements.Module.cspro COPY ["Modules/Announcements/src/Announcements.Infrastructure.Database.Postgres/Announcements.Infrastructure.Database.Postgres.csproj", "Modules/Announcements/src/Announcements.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Announcements/src/Announcements.Infrastructure.Database.Postgres/"] COPY ["Modules/Announcements/src/Announcements.Infrastructure.Database.SqlServer/Announcements.Infrastructure.Database.SqlServer.csproj", "Modules/Announcements/src/Announcements.Infrastructure.Database.SqlServer/packages.lock.json*", "Modules/Announcements/src/Announcements.Infrastructure.Database.SqlServer/"] -COPY ["Modules/Challenges/src/Challenges.Application/Challenges.Application.csproj", "Modules/Challenges/src/Challenges.Application/packages.lock.json*", "Modules/Challenges/src/Challenges.Application/"] +COPY ["Modules/Challenges/src/Challenges.Abstractions/Challenges.Abstractions.csproj", "Modules/Challenges/src/Challenges.Abstractions/packages.lock.json*", "Modules/Challenges/src/Challenges.Abstractions/"] COPY ["Modules/Challenges/src/Challenges.Domain/Challenges.Domain.csproj", "Modules/Challenges/src/Challenges.Domain/packages.lock.json*", "Modules/Challenges/src/Challenges.Domain/"] COPY ["Modules/Challenges/src/Challenges.Infrastructure/Challenges.Infrastructure.csproj", "Modules/Challenges/src/Challenges.Infrastructure/packages.lock.json*", "Modules/Challenges/src/Challenges.Infrastructure/"] COPY ["Modules/Challenges/src/Challenges.Module/Challenges.Module.csproj", "Modules/Challenges/src/Challenges.Module/packages.lock.json*", "Modules/Challenges/src/Challenges.Module/"] diff --git a/Applications/AdminApi/src/AdminApi/Program.cs b/Applications/AdminApi/src/AdminApi/Program.cs index c8d2267e97..67412e4ca9 100644 --- a/Applications/AdminApi/src/AdminApi/Program.cs +++ b/Applications/AdminApi/src/AdminApi/Program.cs @@ -112,10 +112,10 @@ static void ConfigureServices(IServiceCollection services, IConfiguration config services .AddModule(configuration) - .AddModule(configuration) + .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) - .AddModule(configuration); + .AddModule(configuration); services .AddOpenIddict() diff --git a/Applications/AdminApi/src/AdminApi/packages.lock.json b/Applications/AdminApi/src/AdminApi/packages.lock.json index 5719b37107..dad53612f4 100644 --- a/Applications/AdminApi/src/AdminApi/packages.lock.json +++ b/Applications/AdminApi/src/AdminApi/packages.lock.json @@ -1150,13 +1150,10 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Challenges.Application": { + "Backbone.Modules.Challenges.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Challenges.Domain": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Challenges.Domain": "[1.0.0, )" } }, "Backbone.Modules.Challenges.Domain": { @@ -1171,7 +1168,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Challenges.Application": "[1.0.0, )", + "Backbone.Modules.Challenges.Abstractions": "[1.0.0, )", "Backbone.Modules.Challenges.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1195,11 +1192,12 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Challenges.Application": "[1.0.0, )", + "Backbone.Modules.Challenges.Abstractions": "[1.0.0, )", "Backbone.Modules.Challenges.Domain": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/AdminApi/test/AdminApi.Tests.Integration/packages.lock.json b/Applications/AdminApi/test/AdminApi.Tests.Integration/packages.lock.json index f7e4fbe874..372ae3bbb9 100644 --- a/Applications/AdminApi/test/AdminApi.Tests.Integration/packages.lock.json +++ b/Applications/AdminApi/test/AdminApi.Tests.Integration/packages.lock.json @@ -1556,7 +1556,6 @@ "Backbone.Modules.Announcements.Application": "[1.0.0, )", "Backbone.Modules.Announcements.Infrastructure": "[1.0.0, )", "Backbone.Modules.Announcements.Module": "[1.0.0, )", - "Backbone.Modules.Challenges.Application": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure": "[1.0.0, )", "Backbone.Modules.Challenges.Module": "[1.0.0, )", "Backbone.Modules.Devices.Application": "[1.0.0, )", @@ -1792,13 +1791,10 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Challenges.Application": { + "Backbone.Modules.Challenges.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Challenges.Domain": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Challenges.Domain": "[1.0.0, )" } }, "Backbone.Modules.Challenges.Domain": { @@ -1813,7 +1809,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Challenges.Application": "[1.0.0, )", + "Backbone.Modules.Challenges.Abstractions": "[1.0.0, )", "Backbone.Modules.Challenges.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1837,11 +1833,12 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Challenges.Application": "[1.0.0, )", + "Backbone.Modules.Challenges.Abstractions": "[1.0.0, )", "Backbone.Modules.Challenges.Domain": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/ConsumerApi/src/Controllers/Challenges/ChallengesController.cs b/Applications/ConsumerApi/src/Controllers/Challenges/ChallengesController.cs deleted file mode 100644 index fa8fe0a025..0000000000 --- a/Applications/ConsumerApi/src/Controllers/Challenges/ChallengesController.cs +++ /dev/null @@ -1,42 +0,0 @@ -using Backbone.BuildingBlocks.API; -using Backbone.BuildingBlocks.API.Mvc; -using Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; -using Backbone.ConsumerApi.Versions; -using Backbone.Modules.Challenges.Application.Challenges.Commands.CreateChallenge; -using Backbone.Modules.Challenges.Application.Challenges.DTOs; -using Backbone.Modules.Challenges.Application.Challenges.Queries.GetChallengeById; -using MediatR; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; - -namespace Backbone.ConsumerApi.Controllers.Challenges; - -[V2] -[Route("api/v{v:apiVersion}/[controller]")] -[Authorize("OpenIddict.Validation.AspNetCore")] -public class ChallengesController : ApiControllerBase -{ - public ChallengesController(IMediator mediator) : base(mediator) - { - } - - [HttpPost] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status201Created)] - [ProducesError(StatusCodes.Status400BadRequest)] - [AllowAnonymous] - public async Task Create(CancellationToken cancellationToken) - { - var response = await _mediator.Send(new CreateChallengeCommand(), cancellationToken); - return CreatedAtAction(nameof(GetById), new { id = response.Id }, response); - } - - [HttpGet("{id}")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status404NotFound)] - public async Task GetById([FromRoute] string id, CancellationToken cancellationToken) - { - var @event = await _mediator.Send(new GetChallengeByIdQuery { Id = id }, cancellationToken); - return Ok(@event); - } -} diff --git a/Applications/ConsumerApi/src/Program.cs b/Applications/ConsumerApi/src/Program.cs index 299e9857be..1e0f9cb237 100644 --- a/Applications/ConsumerApi/src/Program.cs +++ b/Applications/ConsumerApi/src/Program.cs @@ -135,7 +135,7 @@ static void ConfigureServices(IServiceCollection services, IConfiguration config services .AddModule(configuration) - .AddModule(configuration) + .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) @@ -216,6 +216,7 @@ static void Configure(WebApplication app, ConsumerApiConfiguration configuration app.MapMessagesEndpoints(); app.MapTagsEndpoints(); + app.MapChallengesEndpoints(); app.MapControllers(); app.MapHealthChecks("/health", new HealthCheckOptions { diff --git a/Applications/ConsumerApi/src/packages.lock.json b/Applications/ConsumerApi/src/packages.lock.json index 5641182cd5..8539676eae 100644 --- a/Applications/ConsumerApi/src/packages.lock.json +++ b/Applications/ConsumerApi/src/packages.lock.json @@ -1103,13 +1103,10 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Challenges.Application": { + "Backbone.Modules.Challenges.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Challenges.Domain": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Challenges.Domain": "[1.0.0, )" } }, "Backbone.Modules.Challenges.Domain": { @@ -1124,7 +1121,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Challenges.Application": "[1.0.0, )", + "Backbone.Modules.Challenges.Abstractions": "[1.0.0, )", "Backbone.Modules.Challenges.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1148,11 +1145,12 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Challenges.Application": "[1.0.0, )", + "Backbone.Modules.Challenges.Abstractions": "[1.0.0, )", "Backbone.Modules.Challenges.Domain": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/packages.lock.json b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/packages.lock.json index 736a0b1251..7b15b47bbf 100644 --- a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/packages.lock.json +++ b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/packages.lock.json @@ -1731,13 +1731,10 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Challenges.Application": { + "Backbone.Modules.Challenges.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Challenges.Domain": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Challenges.Domain": "[1.0.0, )" } }, "Backbone.Modules.Challenges.Domain": { @@ -1752,7 +1749,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Challenges.Application": "[1.0.0, )", + "Backbone.Modules.Challenges.Abstractions": "[1.0.0, )", "Backbone.Modules.Challenges.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1776,11 +1773,12 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Challenges.Application": "[1.0.0, )", + "Backbone.Modules.Challenges.Abstractions": "[1.0.0, )", "Backbone.Modules.Challenges.Domain": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/DatabaseMigrator/src/DatabaseMigrator/Dockerfile b/Applications/DatabaseMigrator/src/DatabaseMigrator/Dockerfile index 2546196eed..705f98c0df 100644 --- a/Applications/DatabaseMigrator/src/DatabaseMigrator/Dockerfile +++ b/Applications/DatabaseMigrator/src/DatabaseMigrator/Dockerfile @@ -44,7 +44,7 @@ COPY ["Modules/Announcements/src/Announcements.Infrastructure.Database.SqlServer COPY ["Modules/Announcements/src/Announcements.Infrastructure.Database.Postgres/Announcements.Infrastructure.Database.Postgres.csproj", "Modules/Announcements/src/Announcements.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Announcements/src/Announcements.Infrastructure.Database.Postgres/"] COPY ["Modules/Challenges/src/Challenges.Infrastructure/Challenges.Infrastructure.csproj", "Modules/Challenges/src/Challenges.Infrastructure/packages.lock.json*", "Modules/Challenges/src/Challenges.Infrastructure/"] -COPY ["Modules/Challenges/src/Challenges.Application/Challenges.Application.csproj", "Modules/Challenges/src/Challenges.Application/packages.lock.json*", "Modules/Challenges/src/Challenges.Application/"] +COPY ["Modules/Challenges/src/Challenges.Abstractions/Challenges.Abstractions.csproj", "Modules/Challenges/src/Challenges.Abstractions/packages.lock.json*", "Modules/Challenges/src/Challenges.Abstractions/"] COPY ["Modules/Challenges/src/Challenges.Domain/Challenges.Domain.csproj", "Modules/Challenges/src/Challenges.Domain/packages.lock.json*", "Modules/Challenges/src/Challenges.Domain/"] COPY ["Modules/Challenges/src/Challenges.Infrastructure.Database.SqlServer/Challenges.Infrastructure.Database.SqlServer.csproj", "Modules/Challenges/src/Challenges.Infrastructure.Database.SqlServer/packages.lock.json*", "Modules/Challenges/src/Challenges.Infrastructure.Database.SqlServer/"] COPY ["Modules/Challenges/src/Challenges.Infrastructure.Database.Postgres/Challenges.Infrastructure.Database.Postgres.csproj", "Modules/Challenges/src/Challenges.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Challenges/src/Challenges.Infrastructure.Database.Postgres/"] diff --git a/Applications/DatabaseMigrator/src/DatabaseMigrator/packages.lock.json b/Applications/DatabaseMigrator/src/DatabaseMigrator/packages.lock.json index 3dafe81f9c..364501bc89 100644 --- a/Applications/DatabaseMigrator/src/DatabaseMigrator/packages.lock.json +++ b/Applications/DatabaseMigrator/src/DatabaseMigrator/packages.lock.json @@ -1604,13 +1604,10 @@ "Backbone.Modules.Announcements.Infrastructure": "[1.0.0, )" } }, - "Backbone.Modules.Challenges.Application": { + "Backbone.Modules.Challenges.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Challenges.Domain": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Challenges.Domain": "[1.0.0, )" } }, "Backbone.Modules.Challenges.Domain": { @@ -1625,7 +1622,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Challenges.Application": "[1.0.0, )", + "Backbone.Modules.Challenges.Abstractions": "[1.0.0, )", "Backbone.Modules.Challenges.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", diff --git a/Applications/DatabaseMigrator/test/DatabaseMigrator.Tests/packages.lock.json b/Applications/DatabaseMigrator/test/DatabaseMigrator.Tests/packages.lock.json index fc3940ab83..31431883ee 100644 --- a/Applications/DatabaseMigrator/test/DatabaseMigrator.Tests/packages.lock.json +++ b/Applications/DatabaseMigrator/test/DatabaseMigrator.Tests/packages.lock.json @@ -1611,13 +1611,10 @@ "Backbone.Modules.Announcements.Infrastructure": "[1.0.0, )" } }, - "Backbone.Modules.Challenges.Application": { + "Backbone.Modules.Challenges.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Challenges.Domain": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Challenges.Domain": "[1.0.0, )" } }, "Backbone.Modules.Challenges.Domain": { @@ -1632,7 +1629,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Challenges.Application": "[1.0.0, )", + "Backbone.Modules.Challenges.Abstractions": "[1.0.0, )", "Backbone.Modules.Challenges.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", diff --git a/Applications/EventHandlerService/src/EventHandlerService/Dockerfile b/Applications/EventHandlerService/src/EventHandlerService/Dockerfile index 8e46a678e3..e816a9db18 100644 --- a/Applications/EventHandlerService/src/EventHandlerService/Dockerfile +++ b/Applications/EventHandlerService/src/EventHandlerService/Dockerfile @@ -32,7 +32,7 @@ COPY ["Modules/Relationships/src/Relationships.Contracts/Relationships.Contracts COPY ["Modules/Synchronization/src/Synchronization.Contracts/Synchronization.Contracts.csproj", "Modules/Synchronization/src/Synchronization.Contracts/packages.lock.json*", "Modules/Synchronization/src/Synchronization.Contracts/"] COPY ["Modules/Tokens/src/Tokens.Contracts/Tokens.Contracts.csproj", "Modules/Tokens/src/Tokens.Contracts/packages.lock.json*", "Modules/Tokens/src/Tokens.Contracts/"] COPY ["BuildingBlocks/src/Crypto/Crypto.csproj", "BuildingBlocks/src/Crypto/packages.lock.json*", "BuildingBlocks/src/Crypto/"] -COPY ["Modules/Challenges/src/Challenges.Application/Challenges.Application.csproj", "Modules/Challenges/src/Challenges.Application/packages.lock.json*", "Modules/Challenges/src/Challenges.Application/"] +COPY ["Modules/Challenges/src/Challenges.Abstractions/Challenges.Abstractions.csproj", "Modules/Challenges/src/Challenges.Abstractions/packages.lock.json*", "Modules/Challenges/src/Challenges.Abstractions/"] COPY ["Modules/Challenges/src/Challenges.Domain/Challenges.Domain.csproj", "Modules/Challenges/src/Challenges.Domain/packages.lock.json*", "Modules/Challenges/src/Challenges.Domain/"] COPY ["Modules/Challenges/src/Challenges.Infrastructure.Database.Postgres/Challenges.Infrastructure.Database.Postgres.csproj", "Modules/Challenges/src/Challenges.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Challenges/src/Challenges.Infrastructure.Database.Postgres/"] COPY ["Modules/Challenges/src/Challenges.Infrastructure/Challenges.Infrastructure.csproj", "Modules/Challenges/src/Challenges.Infrastructure/packages.lock.json*", "Modules/Challenges/src/Challenges.Infrastructure/"] diff --git a/Applications/EventHandlerService/src/EventHandlerService/Program.cs b/Applications/EventHandlerService/src/EventHandlerService/Program.cs index 24e2724573..3cfc272d2a 100644 --- a/Applications/EventHandlerService/src/EventHandlerService/Program.cs +++ b/Applications/EventHandlerService/src/EventHandlerService/Program.cs @@ -75,7 +75,7 @@ static IHostBuilder CreateHostBuilder(string[] args) services.AddTransient(); services - .AddModule(configuration) + .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) diff --git a/Applications/EventHandlerService/src/EventHandlerService/packages.lock.json b/Applications/EventHandlerService/src/EventHandlerService/packages.lock.json index 9bf4dc3a55..5749bb7654 100644 --- a/Applications/EventHandlerService/src/EventHandlerService/packages.lock.json +++ b/Applications/EventHandlerService/src/EventHandlerService/packages.lock.json @@ -1304,13 +1304,10 @@ "Backbone.BuildingBlocks.Domain": "[1.0.0, )" } }, - "Backbone.Modules.Challenges.Application": { + "Backbone.Modules.Challenges.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Challenges.Domain": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Challenges.Domain": "[1.0.0, )" } }, "Backbone.Modules.Challenges.Domain": { @@ -1325,7 +1322,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Challenges.Application": "[1.0.0, )", + "Backbone.Modules.Challenges.Abstractions": "[1.0.0, )", "Backbone.Modules.Challenges.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1349,11 +1346,12 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Challenges.Application": "[1.0.0, )", + "Backbone.Modules.Challenges.Abstractions": "[1.0.0, )", "Backbone.Modules.Challenges.Domain": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/EventHandlerService/test/EventHandlerService.Tests/packages.lock.json b/Applications/EventHandlerService/test/EventHandlerService.Tests/packages.lock.json index 306a953dc5..7b54a652b2 100644 --- a/Applications/EventHandlerService/test/EventHandlerService.Tests/packages.lock.json +++ b/Applications/EventHandlerService/test/EventHandlerService.Tests/packages.lock.json @@ -1447,13 +1447,10 @@ "Backbone.BuildingBlocks.Domain": "[1.0.0, )" } }, - "Backbone.Modules.Challenges.Application": { + "Backbone.Modules.Challenges.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Challenges.Domain": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Challenges.Domain": "[1.0.0, )" } }, "Backbone.Modules.Challenges.Domain": { @@ -1468,7 +1465,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Challenges.Application": "[1.0.0, )", + "Backbone.Modules.Challenges.Abstractions": "[1.0.0, )", "Backbone.Modules.Challenges.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1492,11 +1489,12 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Challenges.Application": "[1.0.0, )", + "Backbone.Modules.Challenges.Abstractions": "[1.0.0, )", "Backbone.Modules.Challenges.Domain": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/Housekeeper/src/Housekeeper/Dockerfile b/Applications/Housekeeper/src/Housekeeper/Dockerfile index 029480d03c..0acc9379e7 100644 --- a/Applications/Housekeeper/src/Housekeeper/Dockerfile +++ b/Applications/Housekeeper/src/Housekeeper/Dockerfile @@ -42,7 +42,7 @@ COPY ["Modules/Announcements/src/Announcements.Infrastructure.Database.SqlServer COPY ["Modules/Announcements/src/Announcements.Module/Announcements.Module.csproj", "Modules/Announcements/src/Announcements.Module/packages.lock.json*", "Modules/Announcements/src/Announcements.Module/"] COPY ["Modules/Challenges/src/Challenges.Infrastructure.Database.Postgres/Challenges.Infrastructure.Database.Postgres.csproj", "Modules/Challenges/src/Challenges.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Challenges/src/Challenges.Infrastructure.Database.Postgres/"] COPY ["Modules/Challenges/src/Challenges.Infrastructure/Challenges.Infrastructure.csproj", "Modules/Challenges/src/Challenges.Infrastructure/packages.lock.json*", "Modules/Challenges/src/Challenges.Infrastructure/"] -COPY ["Modules/Challenges/src/Challenges.Application/Challenges.Application.csproj", "Modules/Challenges/src/Challenges.Application/packages.lock.json*", "Modules/Challenges/src/Challenges.Application/"] +COPY ["Modules/Challenges/src/Challenges.Abstractions/Challenges.Abstractions.csproj", "Modules/Challenges/src/Challenges.Abstractions/packages.lock.json*", "Modules/Challenges/src/Challenges.Abstractions/"] COPY ["Modules/Challenges/src/Challenges.Domain/Challenges.Domain.csproj", "Modules/Challenges/src/Challenges.Domain/packages.lock.json*", "Modules/Challenges/src/Challenges.Domain/"] COPY ["Modules/Challenges/src/Challenges.Infrastructure.Database.SqlServer/Challenges.Infrastructure.Database.SqlServer.csproj", "Modules/Challenges/src/Challenges.Infrastructure.Database.SqlServer/packages.lock.json*", "Modules/Challenges/src/Challenges.Infrastructure.Database.SqlServer/"] COPY ["Modules/Challenges/src/Challenges.Module/Challenges.Module.csproj", "Modules/Challenges/src/Challenges.Module/packages.lock.json*", "Modules/Challenges/src/Challenges.Module/"] diff --git a/Applications/Housekeeper/src/Housekeeper/Executor.cs b/Applications/Housekeeper/src/Housekeeper/Executor.cs index 0fdfd7d6b2..62ab3ae633 100644 --- a/Applications/Housekeeper/src/Housekeeper/Executor.cs +++ b/Applications/Housekeeper/src/Housekeeper/Executor.cs @@ -2,7 +2,7 @@ using Backbone.BuildingBlocks.Application.Housekeeping; using MediatR; using ExecuteAnnouncementsModuleHousekeepingCommand = Backbone.Modules.Announcements.Application.Announcements.Commands.ExecuteHousekeeping.ExecuteHousekeepingCommand; -using ExecuteChallengesModuleHousekeepingCommand = Backbone.Modules.Challenges.Application.Challenges.Commands.ExecuteHousekeeping.ExecuteHousekeepingCommand; +using ExecuteChallengesModuleHousekeepingCommand = Backbone.Modules.Challenges.Module.Features.Challenges.ExecuteHousekeeping.ExecuteHousekeepingCommand; using ExecuteDevicesModuleHousekeepingCommand = Backbone.Modules.Devices.Application.Devices.Commands.ExecuteHousekeeping.ExecuteHousekeepingCommand; using ExecuteFilesModuleHousekeepingCommand = Backbone.Modules.Files.Application.Files.Commands.ExecuteHousekeeping.ExecuteHousekeepingCommand; using ExecuteRelationshipsModuleHousekeepingCommand = Backbone.Modules.Relationships.Application.Relationships.Commands.ExecuteHousekeeping.ExecuteHousekeepingCommand; diff --git a/Applications/Housekeeper/src/Housekeeper/Program.cs b/Applications/Housekeeper/src/Housekeeper/Program.cs index 08a5564238..3ed56f678a 100644 --- a/Applications/Housekeeper/src/Housekeeper/Program.cs +++ b/Applications/Housekeeper/src/Housekeeper/Program.cs @@ -70,14 +70,14 @@ static HostApplicationBuilder CreateHostBuilder(string[] args) services .AddModule(configuration) - .AddModule(configuration) + .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) - .AddModule(configuration); + .AddModule(configuration); var parsedConfiguration = services.BuildServiceProvider().GetRequiredService>().Value; diff --git a/Applications/Housekeeper/src/Housekeeper/packages.lock.json b/Applications/Housekeeper/src/Housekeeper/packages.lock.json index ce572ba992..b4e571086a 100644 --- a/Applications/Housekeeper/src/Housekeeper/packages.lock.json +++ b/Applications/Housekeeper/src/Housekeeper/packages.lock.json @@ -1615,13 +1615,10 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Challenges.Application": { + "Backbone.Modules.Challenges.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Challenges.Domain": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Challenges.Domain": "[1.0.0, )" } }, "Backbone.Modules.Challenges.Domain": { @@ -1636,7 +1633,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Challenges.Application": "[1.0.0, )", + "Backbone.Modules.Challenges.Abstractions": "[1.0.0, )", "Backbone.Modules.Challenges.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1660,11 +1657,12 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Challenges.Application": "[1.0.0, )", + "Backbone.Modules.Challenges.Abstractions": "[1.0.0, )", "Backbone.Modules.Challenges.Domain": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Dockerfile b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Dockerfile index 80a12efdeb..988e858a76 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Dockerfile +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Dockerfile @@ -34,7 +34,7 @@ COPY ["Modules/Announcements/src/Announcements.Module/Announcements.Module.cspro COPY ["Modules/Announcements/src/Announcements.Infrastructure.Database.Postgres/Announcements.Infrastructure.Database.Postgres.csproj", "Modules/Announcements/src/Announcements.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Announcements/src/Announcements.Infrastructure.Database.Postgres/"] COPY ["Modules/Announcements/src/Announcements.Infrastructure/Announcements.Infrastructure.csproj", "Modules/Announcements/src/Announcements.Infrastructure/packages.lock.json*", "Modules/Announcements/src/Announcements.Infrastructure/"] COPY ["Modules/Announcements/src/Announcements.Infrastructure.Database.SqlServer/Announcements.Infrastructure.Database.SqlServer.csproj", "Modules/Announcements/src/Announcements.Infrastructure.Database.SqlServer/packages.lock.json*", "Modules/Announcements/src/Announcements.Infrastructure.Database.SqlServer/"] -COPY ["Modules/Challenges/src/Challenges.Application/Challenges.Application.csproj", "Modules/Challenges/src/Challenges.Application/packages.lock.json*", "Modules/Challenges/src/Challenges.Application/"] +COPY ["Modules/Challenges/src/Challenges.Abstractions/Challenges.Abstractions.csproj", "Modules/Challenges/src/Challenges.Abstractions/packages.lock.json*", "Modules/Challenges/src/Challenges.Abstractions/"] COPY ["Modules/Challenges/src/Challenges.Domain/Challenges.Domain.csproj", "Modules/Challenges/src/Challenges.Domain/packages.lock.json*", "Modules/Challenges/src/Challenges.Domain/"] COPY ["Modules/Challenges/src/Challenges.Module/Challenges.Module.csproj", "Modules/Challenges/src/Challenges.Module/packages.lock.json*", "Modules/Challenges/src/Challenges.Module/"] COPY ["Modules/Challenges/src/Challenges.Infrastructure.Database.Postgres/Challenges.Infrastructure.Database.Postgres.csproj", "Modules/Challenges/src/Challenges.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Challenges/src/Challenges.Infrastructure.Database.Postgres/"] diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Job.IdentityDeletion.csproj b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Job.IdentityDeletion.csproj index 392d422cbd..56135ee763 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Job.IdentityDeletion.csproj +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Job.IdentityDeletion.csproj @@ -22,7 +22,6 @@ - diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Program.cs b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Program.cs index c3afa8c210..3390f414fe 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Program.cs +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Program.cs @@ -85,7 +85,7 @@ public static IHostBuilder CreateHostBuilder(string[] args) services .AddModule(configuration) - .AddModule(configuration) + .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/ServicesExtensions.cs b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/ServicesExtensions.cs index eb83ee4f5a..f592473195 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/ServicesExtensions.cs +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/ServicesExtensions.cs @@ -7,7 +7,7 @@ public static class ServicesExtensions public static IServiceCollection RegisterIdentityDeleters(this IServiceCollection services) { services.AddTransient(); - services.AddTransient(); + services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/packages.lock.json b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/packages.lock.json index 7710d8a922..b468c316a3 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/packages.lock.json +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/packages.lock.json @@ -1342,13 +1342,10 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Challenges.Application": { + "Backbone.Modules.Challenges.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Challenges.Domain": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Challenges.Domain": "[1.0.0, )" } }, "Backbone.Modules.Challenges.Domain": { @@ -1363,7 +1360,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Challenges.Application": "[1.0.0, )", + "Backbone.Modules.Challenges.Abstractions": "[1.0.0, )", "Backbone.Modules.Challenges.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1387,11 +1384,12 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Challenges.Application": "[1.0.0, )", + "Backbone.Modules.Challenges.Abstractions": "[1.0.0, )", "Backbone.Modules.Challenges.Domain": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests.Integration/packages.lock.json b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests.Integration/packages.lock.json index 2526ac88a3..30f40620d6 100644 --- a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests.Integration/packages.lock.json +++ b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests.Integration/packages.lock.json @@ -1420,7 +1420,6 @@ "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", "Backbone.Modules.Announcements.Application": "[1.0.0, )", "Backbone.Modules.Announcements.Module": "[1.0.0, )", - "Backbone.Modules.Challenges.Application": "[1.0.0, )", "Backbone.Modules.Challenges.Module": "[1.0.0, )", "Backbone.Modules.Devices.Application": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", @@ -1503,13 +1502,10 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Challenges.Application": { + "Backbone.Modules.Challenges.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Challenges.Domain": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Challenges.Domain": "[1.0.0, )" } }, "Backbone.Modules.Challenges.Domain": { @@ -1524,7 +1520,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Challenges.Application": "[1.0.0, )", + "Backbone.Modules.Challenges.Abstractions": "[1.0.0, )", "Backbone.Modules.Challenges.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1548,11 +1544,12 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Challenges.Application": "[1.0.0, )", + "Backbone.Modules.Challenges.Abstractions": "[1.0.0, )", "Backbone.Modules.Challenges.Domain": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/packages.lock.json b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/packages.lock.json index 2526ac88a3..30f40620d6 100644 --- a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/packages.lock.json +++ b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/packages.lock.json @@ -1420,7 +1420,6 @@ "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", "Backbone.Modules.Announcements.Application": "[1.0.0, )", "Backbone.Modules.Announcements.Module": "[1.0.0, )", - "Backbone.Modules.Challenges.Application": "[1.0.0, )", "Backbone.Modules.Challenges.Module": "[1.0.0, )", "Backbone.Modules.Devices.Application": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", @@ -1503,13 +1502,10 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Challenges.Application": { + "Backbone.Modules.Challenges.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Challenges.Domain": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Challenges.Domain": "[1.0.0, )" } }, "Backbone.Modules.Challenges.Domain": { @@ -1524,7 +1520,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Challenges.Application": "[1.0.0, )", + "Backbone.Modules.Challenges.Abstractions": "[1.0.0, )", "Backbone.Modules.Challenges.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1548,11 +1544,12 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Challenges.Application": "[1.0.0, )", + "Backbone.Modules.Challenges.Abstractions": "[1.0.0, )", "Backbone.Modules.Challenges.Domain": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Backbone.Tests.ArchUnit/Backbone.Tests.ArchUnit.csproj b/Backbone.Tests.ArchUnit/Backbone.Tests.ArchUnit.csproj index aa0a161243..3791d49ed4 100644 --- a/Backbone.Tests.ArchUnit/Backbone.Tests.ArchUnit.csproj +++ b/Backbone.Tests.ArchUnit/Backbone.Tests.ArchUnit.csproj @@ -26,7 +26,8 @@ - + + diff --git a/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs b/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs index 2e4606179b..e8b41bf5b0 100644 --- a/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs +++ b/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs @@ -9,7 +9,7 @@ namespace Backbone.Backbone.Tests.ArchUnit; public class VerticalSliceArchitecture { - private static readonly string[] MIGRATED_MODULES = ["Messages", "Tags"]; + private static readonly string[] MIGRATED_MODULES = ["Messages", "Tags", "Challenges"]; [Fact] public void DomainsShouldNotDependOnOuterLayers() @@ -38,6 +38,7 @@ public void InfrastructureShouldNotDependOnModulesOrApis() [Theory] [InlineData("Messages")] [InlineData("Tags")] + [InlineData("Challenges")] public void UseCasesShouldResideInTheirModule(string module) { Classes().That().ResideInAssemblyMatching($@"^Backbone\.Modules\.{module}\.(?!.*Tests).*$") @@ -49,6 +50,7 @@ public void UseCasesShouldResideInTheirModule(string module) [Theory] [InlineData("Messages")] [InlineData("Tags")] + [InlineData("Challenges")] public void UseCasesShouldNotDependOnAdapters(string module) { Classes().That().Are(UseCases(module)).Should().NotDependOnAnyTypesThat() @@ -61,6 +63,7 @@ public void UseCasesShouldNotDependOnAdapters(string module) [Theory] [InlineData("Messages")] [InlineData("Tags")] + [InlineData("Challenges")] public void ModulesShouldOnlyReferenceTheirOwnImplementationAndOtherContracts(string module) { foreach (var assembly in SolutionAssemblies().Where(assembly => assembly.GetName().Name == $"Backbone.Modules.{module}.Module")) diff --git a/Backbone.Tests.ArchUnit/packages.lock.json b/Backbone.Tests.ArchUnit/packages.lock.json index 2f293a122b..39e4a018d2 100644 --- a/Backbone.Tests.ArchUnit/packages.lock.json +++ b/Backbone.Tests.ArchUnit/packages.lock.json @@ -1721,7 +1721,6 @@ "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", "Backbone.Modules.Announcements.Application": "[1.0.0, )", "Backbone.Modules.Announcements.Module": "[1.0.0, )", - "Backbone.Modules.Challenges.Application": "[1.0.0, )", "Backbone.Modules.Challenges.Module": "[1.0.0, )", "Backbone.Modules.Devices.Application": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", @@ -1833,24 +1832,10 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Challenges.Application": { + "Backbone.Modules.Challenges.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Challenges.Domain": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" - } - }, - "Backbone.Modules.Challenges.Application.Tests": { - "type": "Project", - "dependencies": { - "Backbone.Modules.Challenges.Application": "[1.0.0, )", - "Backbone.Modules.Challenges.Infrastructure": "[1.0.0, )", - "Backbone.UnitTestTools": "[1.0.0, )", - "FakeItEasy": "[9.0.1, 9.0.1]", - "GitHubActionsTestLogger": "[3.0.5, 3.0.5]", - "Microsoft.NET.Test.Sdk": "[18.8.1, 18.8.1]" + "Backbone.Modules.Challenges.Domain": "[1.0.0, )" } }, "Backbone.Modules.Challenges.Domain": { @@ -1865,7 +1850,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Challenges.Application": "[1.0.0, )", + "Backbone.Modules.Challenges.Abstractions": "[1.0.0, )", "Backbone.Modules.Challenges.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1889,14 +1874,26 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Challenges.Application": "[1.0.0, )", + "Backbone.Modules.Challenges.Abstractions": "[1.0.0, )", "Backbone.Modules.Challenges.Domain": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, + "Backbone.Modules.Challenges.Module.Tests": { + "type": "Project", + "dependencies": { + "Backbone.Modules.Challenges.Infrastructure": "[1.0.0, )", + "Backbone.Modules.Challenges.Module": "[1.0.0, )", + "Backbone.UnitTestTools": "[1.0.0, )", + "FakeItEasy": "[9.0.1, 9.0.1]", + "GitHubActionsTestLogger": "[3.0.5, 3.0.5]", + "Microsoft.NET.Test.Sdk": "[18.8.1, 18.8.1]" + } + }, "Backbone.Modules.Devices.Application": { "type": "Project", "dependencies": { diff --git a/Backbone.slnx b/Backbone.slnx index 220622d960..bce7b95191 100644 --- a/Backbone.slnx +++ b/Backbone.slnx @@ -114,7 +114,7 @@ - + @@ -122,7 +122,7 @@ - + diff --git a/Modules/Challenges/src/Challenges.Abstractions/Challenges.Abstractions.csproj b/Modules/Challenges/src/Challenges.Abstractions/Challenges.Abstractions.csproj new file mode 100644 index 0000000000..bc28faf01d --- /dev/null +++ b/Modules/Challenges/src/Challenges.Abstractions/Challenges.Abstractions.csproj @@ -0,0 +1,5 @@ + + + + + diff --git a/Modules/Challenges/src/Challenges.Application/Infrastructure/Persistence/Repository/IChallengesRepository.cs b/Modules/Challenges/src/Challenges.Abstractions/IChallengesRepository.cs similarity index 82% rename from Modules/Challenges/src/Challenges.Application/Infrastructure/Persistence/Repository/IChallengesRepository.cs rename to Modules/Challenges/src/Challenges.Abstractions/IChallengesRepository.cs index fcef292c60..414ff6e8ca 100644 --- a/Modules/Challenges/src/Challenges.Application/Infrastructure/Persistence/Repository/IChallengesRepository.cs +++ b/Modules/Challenges/src/Challenges.Abstractions/IChallengesRepository.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Challenges.Domain.Entities; using Backbone.Modules.Challenges.Domain.Ids; -namespace Backbone.Modules.Challenges.Application.Infrastructure.Persistence.Repository; +namespace Backbone.Modules.Challenges.Abstractions; public interface IChallengesRepository { diff --git a/Modules/Challenges/src/Challenges.Abstractions/packages.lock.json b/Modules/Challenges/src/Challenges.Abstractions/packages.lock.json new file mode 100644 index 0000000000..68850a821d --- /dev/null +++ b/Modules/Challenges/src/Challenges.Abstractions/packages.lock.json @@ -0,0 +1,74 @@ +{ + "version": 2, + "dependencies": { + "net10.0": { + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "5wu/GrYVd8mG2DVUw3vFJzF+O336TyTGg/Kmcgw9bfwYhCoFiV5lR5QeEmKecJyrW4W54nMfD3p3589E8a7czQ==" + }, + "Backbone.BuildingBlocks.Domain": { + "type": "Project", + "dependencies": { + "Backbone.Tooling": "[1.0.0, )" + } + }, + "Backbone.DevelopmentKit.Identity": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )", + "SimpleBase": "[5.6.3, 5.6.3]" + } + }, + "Backbone.Modules.Challenges.Domain": { + "type": "Project", + "dependencies": { + "Backbone.DevelopmentKit.Identity": "[1.0.0, )", + "Backbone.Tooling": "[1.0.0, )" + } + }, + "Backbone.Tooling": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Options": "[10.0.10, 10.0.10]" + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "z/2xXlFw2aLGjHyEm6E0tQ+In6VfzQzTrtArbQ2c0TQE16ZbyDCMGPvaUT9I0s8rgy9sRWlU2P9waW37qV04qA==" + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "zkFxGYUvdxAvIKTyXHrmW+Sux53D4SezD9dMyZ6hrwwzPQJNuwCRy1f5W7AvYTqacEGhWF2XderRQG1OvbV8og==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10" + } + }, + "Microsoft.Extensions.Options": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "srnhnk7nE8krBiIXp71LvBmKBtraBONWSRzdjJgRv1Ko9Mp8IVNqv4vIS9hGeVteBig8aQkva9ZG+sC+o5sVcA==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", + "Microsoft.Extensions.Primitives": "10.0.10" + } + }, + "SimpleBase": { + "type": "CentralTransitive", + "requested": "[5.6.3, 5.6.3]", + "resolved": "5.6.3", + "contentHash": "ayL730f1gdQVYmFFLKSX83QcoltyKSMBsV94qfCBpZHMaJz/e3ALuXKZDD8SkseWbNHxBe0HxLRBe5OOpQ9HpA==" + } + }, + "net10.0/linux-arm64": {}, + "net10.0/linux-x64": {}, + "net10.0/osx-arm64": {}, + "net10.0/win-x64": {} + } +} \ No newline at end of file diff --git a/Modules/Challenges/src/Challenges.Application/ApplicationConfiguration.cs b/Modules/Challenges/src/Challenges.Application/ApplicationConfiguration.cs deleted file mode 100644 index 8d97f5fede..0000000000 --- a/Modules/Challenges/src/Challenges.Application/ApplicationConfiguration.cs +++ /dev/null @@ -1,3 +0,0 @@ -namespace Backbone.Modules.Challenges.Application; - -public class ApplicationConfiguration; diff --git a/Modules/Challenges/src/Challenges.Application/Challenges.Application.csproj b/Modules/Challenges/src/Challenges.Application/Challenges.Application.csproj deleted file mode 100644 index eb578fa493..0000000000 --- a/Modules/Challenges/src/Challenges.Application/Challenges.Application.csproj +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/Modules/Challenges/src/Challenges.Application/Challenges/Commands/CreateChallenge/CreateChallengeCommand.cs b/Modules/Challenges/src/Challenges.Application/Challenges/Commands/CreateChallenge/CreateChallengeCommand.cs deleted file mode 100644 index cc99a330b0..0000000000 --- a/Modules/Challenges/src/Challenges.Application/Challenges/Commands/CreateChallenge/CreateChallengeCommand.cs +++ /dev/null @@ -1,6 +0,0 @@ -using Backbone.Modules.Challenges.Application.Challenges.DTOs; -using MediatR; - -namespace Backbone.Modules.Challenges.Application.Challenges.Commands.CreateChallenge; - -public class CreateChallengeCommand : IRequest; diff --git a/Modules/Challenges/src/Challenges.Application/Challenges/Commands/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs b/Modules/Challenges/src/Challenges.Application/Challenges/Commands/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs deleted file mode 100644 index 1a63fec5e1..0000000000 --- a/Modules/Challenges/src/Challenges.Application/Challenges/Commands/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs +++ /dev/null @@ -1,5 +0,0 @@ -using MediatR; - -namespace Backbone.Modules.Challenges.Application.Challenges.Commands.ExecuteHousekeeping; - -public class ExecuteHousekeepingCommand : IRequest; diff --git a/Modules/Challenges/src/Challenges.Application/Challenges/Queries/GetChallengeById/GetChallengeByIdQuery.cs b/Modules/Challenges/src/Challenges.Application/Challenges/Queries/GetChallengeById/GetChallengeByIdQuery.cs deleted file mode 100644 index ea5deaddf5..0000000000 --- a/Modules/Challenges/src/Challenges.Application/Challenges/Queries/GetChallengeById/GetChallengeByIdQuery.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Backbone.Modules.Challenges.Application.Challenges.DTOs; -using MediatR; - -namespace Backbone.Modules.Challenges.Application.Challenges.Queries.GetChallengeById; - -public class GetChallengeByIdQuery : IRequest -{ - public required string Id { get; init; } -} diff --git a/Modules/Challenges/src/Challenges.Application/Extensions/ApplicationServiceCollectionExtensions.cs b/Modules/Challenges/src/Challenges.Application/Extensions/ApplicationServiceCollectionExtensions.cs deleted file mode 100644 index 4cb54e100e..0000000000 --- a/Modules/Challenges/src/Challenges.Application/Extensions/ApplicationServiceCollectionExtensions.cs +++ /dev/null @@ -1,52 +0,0 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.BuildingBlocks.Application.MediatR; -using Backbone.Modules.Challenges.Application.Challenges.Commands.CreateChallenge; -using FluentValidation; -using MediatR; -using Microsoft.Extensions.DependencyInjection; -using ValidationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ValidationException; - -namespace Backbone.Modules.Challenges.Application.Extensions; - -public static class ApplicationServiceCollectionExtensions -{ - public static void AddApplication(this IServiceCollection services) - { - services.AddMediatR(c => c - .RegisterServicesFromAssemblyContaining() - .AddOpenBehavior(typeof(LoggingBehavior<,>)) - .AddOpenBehavior(typeof(RequestValidationBehavior<,>)) - .AddOpenBehavior(typeof(QuotaEnforcerBehavior<,>)) - ); - services.AddValidatorsFromAssembly(typeof(CreateChallengeCommandValidator).Assembly); - } -} - -public class RequestValidationBehavior : IPipelineBehavior - where TRequest : IRequest -{ - private readonly IEnumerable> _validators; - - public RequestValidationBehavior(IEnumerable> validators) - { - _validators = validators; - } - - public Task Handle(TRequest request, RequestHandlerDelegate next, - CancellationToken cancellationToken) - { - var context = new ValidationContext(request); - - var failures = _validators - .Select(v => v.Validate(context)) - .SelectMany(result => result.Errors) - .Where(f => f != null) - .ToList(); - - if (failures.Count != 0) - throw new ValidationException(new ApplicationError(failures.First().ErrorCode, - failures.First().ErrorMessage)); - - return next(cancellationToken); - } -} diff --git a/Modules/Challenges/src/Challenges.Application/packages.lock.json b/Modules/Challenges/src/Challenges.Application/packages.lock.json deleted file mode 100644 index bf0ff0ca82..0000000000 --- a/Modules/Challenges/src/Challenges.Application/packages.lock.json +++ /dev/null @@ -1,1358 +0,0 @@ -{ - "version": 2, - "dependencies": { - "net10.0": { - "FluentValidation": { - "type": "Direct", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" - }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "Direct", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, - "AWSSDK.Core": { - "type": "Transitive", - "resolved": "4.0.100.9", - "contentHash": "OPYy41jZjXwxxcYRotaq24HDrwUnVtBB/mvg1IwB9D1ICXAtHqMa1sp2hpmlVJCZwjlcrPcTCJIejInvV1vp5g==" - }, - "Azure.Core": { - "type": "Transitive", - "resolved": "1.60.0", - "contentHash": "qCa5DLAq0w14aTl9/bvMZNA/QxPzYj1a4zakrpeudxWd4D4YliRHRfccD3yFECeHkMkvQjMmyWLggb8bzhDVKA==", - "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "10.0.9", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.9", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.9", - "Microsoft.Identity.Client": "4.84.2", - "Microsoft.Identity.Client.Extensions.Msal": "4.84.2", - "System.ClientModel": "1.14.0", - "System.Memory.Data": "10.0.9" - } - }, - "Azure.Core.Amqp": { - "type": "Transitive", - "resolved": "1.3.1", - "contentHash": "AY1ZM4WwLBb9L2WwQoWs7wS2XKYg83tp3yVVdgySdebGN0FuIszuEqCy3Nhv6qHpbkjx/NGuOTsUbF/oNGBgwA==", - "dependencies": { - "Microsoft.Azure.Amqp": "2.6.7", - "System.Memory.Data": "1.0.2" - } - }, - "Azure.Identity": { - "type": "Transitive", - "resolved": "1.17.1", - "contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Microsoft.Identity.Client": "4.78.0", - "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" - } - }, - "Azure.Storage.Common": { - "type": "Transitive", - "resolved": "12.28.0", - "contentHash": "5l8YhNrks38zKLGFW2BBFLwieyamH/xauABSASsdpZv79G0f+n2n22IjkRmUqCmALSupkwRHh2LOhbW3yj5Qgw==", - "dependencies": { - "Azure.Core": "1.55.0", - "System.IO.Hashing": "10.0.3" - } - }, - "Castle.Core": { - "type": "Transitive", - "resolved": "5.2.1", - "contentHash": "wHARzQA695jwwKreOzNsq54KiGqKP38tv8hi8e2FXDEC/sA6BtrX90tVPDkOfVu13PbEzr00TCV8coikl+D1Iw==", - "dependencies": { - "System.Diagnostics.EventLog": "6.0.0" - } - }, - "Google.Api.CommonProtos": { - "type": "Transitive", - "resolved": "2.17.0", - "contentHash": "elfQPknFr495hm7vdy6ZlgyQh6yzZq9TU7sS35L/Fj/fqjM/mUGau9gVJLhvQEtUlPjtR80hpn/m9HvBMyCXIw==", - "dependencies": { - "Google.Protobuf": "[3.31.1, 4.0.0]" - } - }, - "Google.Api.Gax": { - "type": "Transitive", - "resolved": "4.13.1", - "contentHash": "ujDpZk7O2VqAEIqcSlhH0FKzVpGZWly/qcNjHxpNUrL445Tei9PHnu4V1pwW2WDiMDvo3TpL1Bi4DeU525Afrg==", - "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "6.0.0", - "Newtonsoft.Json": "13.0.4" - } - }, - "Google.Api.Gax.Grpc": { - "type": "Transitive", - "resolved": "4.13.1", - "contentHash": "QgYF0bd8z6xWSVLGkGAMPB70seJSa9J02lFn8LT0Rb7PjSxZYpX+wU6LbVmghxDi6Wd64taulpX37pFq20J61g==", - "dependencies": { - "Google.Api.CommonProtos": "2.17.0", - "Google.Api.Gax": "4.13.1", - "Google.Apis.Auth": "1.73.0", - "Grpc.Auth": "[2.71.0, 3.0.0)", - "Grpc.Core.Api": "[2.71.0, 3.0.0)", - "Grpc.Net.Client": "[2.71.0, 3.0.0)", - "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0" - } - }, - "Google.Api.Gax.Rest": { - "type": "Transitive", - "resolved": "4.13.1", - "contentHash": "wDfFZXKoHC6sy+Yfub/4cLQOb5ozBVPqDOrxCUAeTfku4d96ILqgzulJSdkPHbiT3oWB3hlYTdJgUwNSJjyo+A==", - "dependencies": { - "Google.Api.Gax": "4.13.1", - "Google.Apis.Auth": "1.73.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0" - } - }, - "Google.Apis": { - "type": "Transitive", - "resolved": "1.74.0", - "contentHash": "Z6hSkmRD6V8/raSBqn/EsPpNop6suaLaGE9DbSY3yRE5G47l4zYqrJgapcLARk2Z3TsQUDmWz+w/tob3wuVt3g==", - "dependencies": { - "Google.Apis.Core": "1.74.0" - } - }, - "Google.Apis.Auth": { - "type": "Transitive", - "resolved": "1.74.0", - "contentHash": "43H4foh3zfWgboK8QnJjIfPQuBiS794TxqQLDfeE3erQSluKmEN0qeDuwxLTpSr9Mtwj76S4LWxPneuSbC6fNg==", - "dependencies": { - "Google.Apis": "1.74.0", - "Google.Apis.Core": "1.74.0", - "System.Management": "7.0.2" - } - }, - "Google.Apis.Core": { - "type": "Transitive", - "resolved": "1.74.0", - "contentHash": "gWOIiks6yo2TRliIyy10V18BJOO2BfUSPJFiTW6Tfap4tm3hFj7nvYU3XIfwzAxwoIy6nsBoqVDt9iBDSXrvYQ==", - "dependencies": { - "Newtonsoft.Json": "13.0.4" - } - }, - "Google.Apis.Storage.v1": { - "type": "Transitive", - "resolved": "1.74.0.4115", - "contentHash": "9J3YPPSG53xwQLzdQ304dI+DMtVxJDpEazA2QQ2LA8IJoM4VUu4DpIxyhTGxpnAK4Db7s4LwzeNi6NkPKM3HzQ==", - "dependencies": { - "Google.Apis": "1.74.0", - "Google.Apis.Auth": "1.74.0" - } - }, - "Google.Cloud.Iam.V1": { - "type": "Transitive", - "resolved": "3.5.0", - "contentHash": "CTLBAQ7WxsLoA4lovpvhF4MRUJH64smrIjuD/0jDrLs6zpbpf+f8Ur8ekRKv67kwlpN6Ug0q7EuT2csWDEczlQ==", - "dependencies": { - "Google.Api.Gax.Grpc": "[4.12.1, 5.0.0)" - } - }, - "Google.Protobuf": { - "type": "Transitive", - "resolved": "3.31.1", - "contentHash": "gSnJbUmGiOTdWddPhqzrEscHq9Ls6sqRDPB9WptckyjTUyx70JOOAaDLkFff8gManZNN3hllQ4aQInnQyq/Z/A==" - }, - "Grpc.Auth": { - "type": "Transitive", - "resolved": "2.71.0", - "contentHash": "t2aGh/pMgqmc3GimtYfC7VcgVY/VSbk6SLH+61wewsgK45tzxxD9nYYItT5bpLn7fbebirmHXfgJcVKIArd0cg==", - "dependencies": { - "Google.Apis.Auth": "1.69.0", - "Grpc.Core.Api": "2.71.0" - } - }, - "Grpc.Core.Api": { - "type": "Transitive", - "resolved": "2.71.0", - "contentHash": "QquqUC37yxsDzd1QaDRsH2+uuznWPTS8CVE2Yzwl3CvU4geTNkolQXoVN812M2IwT6zpv3jsZRc9ExJFNFslTg==" - }, - "Grpc.Net.Client": { - "type": "Transitive", - "resolved": "2.71.0", - "contentHash": "U1vr20r5ngoT9nlb7wejF28EKN+taMhJsV9XtK9MkiepTZwnKxxiarriiMfCHuDAfPUm9XUjFMn/RIuJ4YY61w==", - "dependencies": { - "Grpc.Net.Common": "2.71.0", - "Microsoft.Extensions.Logging.Abstractions": "6.0.0" - } - }, - "Grpc.Net.Common": { - "type": "Transitive", - "resolved": "2.71.0", - "contentHash": "v0c8R97TwRYwNXlC8GyRXwYTCNufpDfUtj9la+wUrZFzVWkFJuNAltU+c0yI3zu0jl54k7en6u2WKgZgd57r2Q==", - "dependencies": { - "Grpc.Core.Api": "2.71.0" - } - }, - "MedallionTopologicalSort": { - "type": "Transitive", - "resolved": "1.0.0", - "contentHash": "dcAqM8TcyZQ/T466CvqNMUUn/G0FQE+4R7l62ngXH7hLFP9yA7yoP/ySsLgiXx3pGUQC3J+cUvXmJOOR/eC+oQ==" - }, - "Microsoft.AspNetCore.Cryptography.Internal": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "T/kOT3kAVZU1B0QlpRxASpdbAJ/o5DLFW7bWS6vyE44uMqPmojEcaFENt6ww1xaLH++ZNwsEJ1YUOwPK050lNQ==" - }, - "Microsoft.AspNetCore.Cryptography.KeyDerivation": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "w6P461MvhJrttEcyGfN00tf8rdwQJFK+s0pebR44jiTzAa+PUZ804xzbGZQpR6klSFd212M4DIIROSaW0Acifg==", - "dependencies": { - "Microsoft.AspNetCore.Cryptography.Internal": "10.0.10" - } - }, - "Microsoft.Azure.Amqp": { - "type": "Transitive", - "resolved": "2.7.0", - "contentHash": "gm/AEakujttMzrDhZ5QpRz3fICVkYDn/oDG9SmxDP+J7R8JDBXYU9WWG7hr6wQy40mY+wjUF0yUGXDPRDRNJwQ==" - }, - "Microsoft.Bcl.AsyncInterfaces": { - "type": "Transitive", - "resolved": "10.0.9", - "contentHash": "Aq7M8lG6BrHeatqKqncVm9m55ec34k6nnfPRLe/PvGg+b/pAsRM2ejofeKmCLjTXMa+5NGXm382f8CG/D5WDow==" - }, - "Microsoft.Data.SqlClient": { - "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" - } - }, - "Microsoft.Data.SqlClient.SNI.runtime": { - "type": "Transitive", - "resolved": "6.0.2", - "contentHash": "f+pRODTWX7Y67jXO3T5S2dIPZ9qMJNySjlZT/TKmWVNWe19N8jcWmHaqHnnchaq3gxEKv1SWVY5EFzOD06l41w==" - }, - "Microsoft.EntityFrameworkCore.Analyzers": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "2gLDordUCGf3aNOOuqtTbP5mxhiP9nk6TnvGiE3RnqT891O+Zf/qKu1PIREubs1M16A0SImr4vULBfU5BTDs1Q==" - }, - "Microsoft.EntityFrameworkCore.SqlServer.Abstractions": { - "type": "Transitive", - "resolved": "10.0.3", - "contentHash": "K73jOafOjF8oMLrPhXz3er6csmXCOGBQbeXsFPXrtz7/4QJJYalcOHQzoppEhl1gwLEZNnJMUDlOWcQ1FeW27Q==", - "dependencies": { - "Microsoft.SqlServer.Types": "160.1000.6" - } - }, - "Microsoft.EntityFrameworkCore.SqlServer.HierarchyId": { - "type": "Transitive", - "resolved": "10.0.3", - "contentHash": "tkiCR+rJMb9pib0jlJH1nItw36SlFj0l8sD/PQSd7sj1cvKhW1qmA7hahrp3WOvp7ZsIIXgMDUltryzinNOMTw==", - "dependencies": { - "Microsoft.Data.SqlClient": "6.1.1", - "Microsoft.EntityFrameworkCore.SqlServer": "10.0.3", - "Microsoft.EntityFrameworkCore.SqlServer.Abstractions": "10.0.3", - "Microsoft.Extensions.Caching.Memory": "10.0.3", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.3", - "Microsoft.Extensions.Logging": "10.0.3", - "Microsoft.SqlServer.Types": "160.1000.6" - } - }, - "Microsoft.Extensions.Caching.Abstractions": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "4ZFBNE+jzR+CrWWlhOesnmywCW7pYKT0dxyAQRdL11yJwxe4jvcAu31eorFtEkoFeCDcUTeNssgPv2yaRRptaQ==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.Caching.Memory": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "N1w5H7uK6gCTnCBZAWzE0/EQYSPysij/uYwDqntqBVvBa6bjMmBKitsnEFd6yh/SX3wLm67nO6+OnZ84K+gZWg==", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "10.0.10", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.Compliance.Abstractions": { - "type": "Transitive", - "resolved": "10.8.0", - "contentHash": "7I0DXMTCqpXpXg+SLLDlfedtv6DN5Lgiv+PR3MclzqKPOHNB17YP42KMNI61ckSrffh0xsuIqQyCIjvWc6vUuw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.ObjectPool": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.CommandLine": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "33cBeR2HRbzHUTtmcmLdNOApneNGcymwwL4arHuotgVK9Frba8kcDTrvVTj7cSCmF1R9OiSbZH0KxNOwab3HUg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.EnvironmentVariables": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "KRfFSSCV58vEdU7mPED/YMzeovIWF5P0g8s9K8n9HEfy0/WzMq37SrPdXdFN5/dFT/rPMHpF7AvpoXHckbcBFg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.FileExtensions": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "ZOhZYwvbXGTgGVRwswIirofEMVHuWdxjdh0JeUZXwaF9cgcjXdz/t0ELtgaevw7ezTyv47yPNCgGreWtLkn3IQ==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Physical": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.UserSecrets": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "1s1sKFTk/Foam64JY6+m/diH8drL3Wx6V3gtSd5v1IEZtszZYyc1pW8uRnMblzpNiR0l0t8gGk7tXj3xHzFgdg==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.Json": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Physical": "10.0.10" - } - }, - "Microsoft.Extensions.Diagnostics": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "Kr/e7lUf4+N8tacbqJ2Ctwe/HarKdAc9ZkgKVVqvtJDBKbez+T/KnUwu82KSlnBp/SrpBcxc7u7xkE2oUZT/5Q==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.10", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10" - } - }, - "Microsoft.Extensions.Diagnostics.Abstractions": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "9uWiKpeOVac355STyChWR/pliFX/5CeLqChW9kKsaxyDH4EUTZxMkT4Jwp/J/peLm0GBFmSX5c0WCse3yCnq1Q==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Extensions.Diagnostics.HealthChecks": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "R0O5oG+zAJeBSM8nNTa+Ycj2Zobyr/v6Ilo7Dha0sNB2Vq/XXoLdoecj9DAWGbN8YrPaW6u8+osTQ5Ypj7ZF0w==", - "dependencies": { - "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": "10.0.10", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "6euxgVR7NS83y0a2wLRAxfYXusLQJ2e1ah0MpQgYTYMs5lYrmdNP79C6T8uvRZdP87n5mcCcp6+w0EyWAidKZw==" - }, - "Microsoft.Extensions.FileProviders.Abstractions": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "c5zqFCY9DiIpMovLd7/d/CTiEtrMOuQ639dhv3PABtKQIKNQikSHwQt8+N679uii9q+B55lgK28Uv64FOwEu8w==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.FileProviders.Physical": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "jhJAyo38kSrH3ARvWUk0h8itogVnQu2DCZuPo+s0Z+tXes0ugTxMPaHYzap85785eHQmPFqD9TYERqBbtGxn/w==", - "dependencies": { - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.FileSystemGlobbing": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.FileSystemGlobbing": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "jSOCVxEwCd4Aq925kJVz1kSO1EpX2OHYKL04qVREXkDU7Ce3pVDdHPYm+fEy8y/th2kJf/DAstRHpJAqoNWP8w==" - }, - "Microsoft.Extensions.Logging.Configuration": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "cLrqxkuEfcilZ8SjK+9KAnpLk9lOoMPaOokF+wRUYie+iUEcdX4/p/+gJkt0BYgWLthjpBUCkVTBI6Kxg0nsOw==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.Binder": "10.0.10", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.Console": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "VIlNzPwPS0GeQVSmCqqo36ugryX3LpE9ul6gEkks5VLET3weH/XMLeWmclwfoGn4Nxi2mwVibB+OZBVJ9tDqvg==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging.Configuration": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.Debug": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "8+TZBnV5fgBXoVNJ5ROSErUwYogk4hOgV7c2HWK1u5cqKGmiUTUn7+KqZ35iQu8e/B7Ykccyz5OTjdXcidNZ9g==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.EventLog": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "0RE4951AzQ+YD4gVrvbq0BhdsiBgSDo44yM7+QBZ2mrmMJeNjY+teCIYfUjqDPVYnKs0HR6SkkhgrX1YgXZq3Q==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "System.Diagnostics.EventLog": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.EventSource": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "85SAPwXhJtdBInzN2k7SChiFiBGh3KOWay5AfoY+GREF6P7oZA98+ST2p7Z9384iLKYjkZSKIZ/FqIO5aojtNw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.ObjectPool": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "Tx0R6PY9MNSh0mDKSxbpHLuuec93IxF1cel+1ithQnMNr/vbfLSSHOQHGHIppAJCGfPcEo/wO1Ylj+QpXtzo3A==" - }, - "Microsoft.Extensions.Options.ConfigurationExtensions": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "tnBmu/LwF25ZQK+HBNCu2xrwnkKoB/XEbJyooGGoYxHrhvxbSKi7eOFiJ4AXBy/QU4vtCvCJfoi8k9Ej72qzOQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.Binder": "10.0.10", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.Primitives": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "5wu/GrYVd8mG2DVUw3vFJzF+O336TyTGg/Kmcgw9bfwYhCoFiV5lR5QeEmKecJyrW4W54nMfD3p3589E8a7czQ==" - }, - "Microsoft.Extensions.Telemetry.Abstractions": { - "type": "Transitive", - "resolved": "10.8.0", - "contentHash": "XHlOerNKjVrPJqbuFi196tyFhS7eNMoPUC800xJmCGsSiruE/goGoKyBKzS1HeelAGnoFPFrS+LgNitXNeEYRQ==", - "dependencies": { - "Microsoft.Extensions.Compliance.Abstractions": "10.8.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.ObjectPool": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Identity.Client": { - "type": "Transitive", - "resolved": "4.84.2", - "contentHash": "Va9FjmABSgj/lcUfHH0pBNQkmS7SNyepz2ERV7Yynp6QgEYpFdSqR6Vzy1WWipN8GS5pBHuXoZbqaDWuARCrHQ==", - "dependencies": { - "Microsoft.IdentityModel.Abstractions": "8.14.0" - } - }, - "Microsoft.Identity.Client.Extensions.Msal": { - "type": "Transitive", - "resolved": "4.84.2", - "contentHash": "+D98LaU3dOu/Nzs6kgbBJapMvH7iwYcAeC99XwSkpmEadsPv6rozecOl9P6m4A3RfpOuPt9e6J6TwwUUp3+M4w==", - "dependencies": { - "Microsoft.Identity.Client": "4.84.2", - "System.Security.Cryptography.ProtectedData": "4.5.0" - } - }, - "Microsoft.IdentityModel.Abstractions": { - "type": "Transitive", - "resolved": "8.14.0", - "contentHash": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==" - }, - "Microsoft.IdentityModel.JsonWebTokens": { - "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "3Izi75UCUssvo8LPx3OVnEeZay58qaFicrtSnbtUt7q8qQi0gy46gh4V8VUTkMVMKXV6VMyjBVmeNNgeCUJuIw==", - "dependencies": { - "Microsoft.IdentityModel.Tokens": "7.7.1" - } - }, - "Microsoft.IdentityModel.Logging": { - "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "BZNgSq/o8gsKExdYoBKPR65fdsxW0cTF8PsdqB8y011AGUJJW300S/ZIsEUD0+sOmGc003Gwv3FYbjrVjvsLNQ==", - "dependencies": { - "Microsoft.IdentityModel.Abstractions": "7.7.1" - } - }, - "Microsoft.IdentityModel.Protocols": { - "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "h+fHHBGokepmCX+QZXJk4Ij8OApCb2n2ktoDkNX5CXteXsOxTHMNgjPGpAwdJMFvAL7TtGarUnk3o97NmBq2QQ==", - "dependencies": { - "Microsoft.IdentityModel.Tokens": "7.7.1" - } - }, - "Microsoft.IdentityModel.Protocols.OpenIdConnect": { - "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "yT2Hdj8LpPbcT9C9KlLVxXl09C8zjFaVSaApdOwuecMuoV4s6Sof/mnTDz/+F/lILPIBvrWugR9CC7iRVZgbfQ==", - "dependencies": { - "Microsoft.IdentityModel.Protocols": "7.7.1", - "System.IdentityModel.Tokens.Jwt": "7.7.1" - } - }, - "Microsoft.IdentityModel.Tokens": { - "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "fQ0VVCba75lknUHGldi3iTKAYUQqbzp1Un8+d9cm9nON0Gs8NAkXddNg8iaUB0qi/ybtAmNWizTR4avdkCJ9pQ==", - "dependencies": { - "Microsoft.IdentityModel.Logging": "7.7.1" - } - }, - "Microsoft.SqlServer.Server": { - "type": "Transitive", - "resolved": "1.0.0", - "contentHash": "N4KeF3cpcm1PUHym1RmakkzfkEv3GRMyofVv40uXsQhCQeglr2OHNcUk2WOG51AKpGO8ynGpo9M/kFXSzghwug==" - }, - "Microsoft.SqlServer.Types": { - "type": "Transitive", - "resolved": "160.1000.6", - "contentHash": "4kk+rz5vnIPr9ENzm8KttUbhBKftv0uHSSFDVjc5OuKPtRP5q0lDbYUy5ZsoYCAG3RrZdJoxPnWN2JNozZAiGA==", - "dependencies": { - "Microsoft.SqlServer.Server": "1.0.0" - } - }, - "NetTopologySuite": { - "type": "Transitive", - "resolved": "2.6.0", - "contentHash": "1B1OTacTd4QtFyBeuIOcThwSSLUdRZU3bSFIwM8vk36XiZlBMi3K36u74e4OqwwHRHUuJC1PhbDx4hyI266X1Q==" - }, - "NetTopologySuite.IO.SqlServerBytes": { - "type": "Transitive", - "resolved": "2.1.0", - "contentHash": "R4BcV19f2l6EjHSjh/EHwLhYQHrOov9vig1EW5oBm0iqlZOgaIJm5tBnlbFnYlvdYOPuf5p0Qtf8PCVwH77Wbg==", - "dependencies": { - "NetTopologySuite": "[2.0.0, 3.0.0-A)" - } - }, - "Newtonsoft.Json": { - "type": "Transitive", - "resolved": "13.0.4", - "contentHash": "pdgNNMai3zv51W5aq268sujXUyx7SNdE2bj1wZcWjAQrKMFZV260lbqYop1d2GM67JI1huLRwxo9ZqnfF/lC6A==" - }, - "Npgsql": { - "type": "Transitive", - "resolved": "10.0.3", - "contentHash": "7nb5YzXuvWWJxB0J8DiyL3we+X4FOctZrt0fIBnucOIaIevFEEwGQVZKtiu9olXdlNAK1eNgqSral6r/jlhI4w==", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "10.0.0" - } - }, - "Polly.Core": { - "type": "Transitive", - "resolved": "8.7.0", - "contentHash": "BS2t+nsBer16PIebCEPNBK5fgMisADQyRCd7K+BgkMWpFmSaiYE+rVVNpFhGRqUkJmNSLmw0uCNzHHWfgml28Q==" - }, - "System.ClientModel": { - "type": "Transitive", - "resolved": "1.14.0", - "contentHash": "yhIJHDW3Hh5kcvhHv3ww1T8qvya06Nlwo/SR/rke4/fHXtyKiqQV/9b/VDhnVI7QUcMnpfvh4pIEFhNsTDLeKQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.3", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.3", - "Microsoft.Extensions.Logging.Abstractions": "10.0.3", - "System.Memory.Data": "10.0.3" - } - }, - "System.CodeDom": { - "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "GLltyqEsE5/3IE+zYRP5sNa1l44qKl9v+bfdMcwg+M9qnQf47wK3H0SUR/T+3N4JEQXF3vV4CSuuo0rsg+nq2A==" - }, - "System.Configuration.ConfigurationManager": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "vPinosRgEk1CGjohbv0pDuz6gPprkWo5xvBTjOJjks5JOgOEWvPndq5NngGxiTcBcy1+k9GwzZ1c3Bp2fU5ezw==", - "dependencies": { - "System.Diagnostics.EventLog": "9.0.11", - "System.Security.Cryptography.ProtectedData": "9.0.11" - } - }, - "System.Diagnostics.EventLog": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" - }, - "System.IdentityModel.Tokens.Jwt": { - "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "rQkO1YbAjLwnDJSMpRhRtrc6XwIcEOcUvoEcge+evurpzSZM3UNK+MZfD3sKyTlYsvknZ6eJjSBfnmXqwOsT9Q==", - "dependencies": { - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Tokens": "7.7.1" - } - }, - "System.IO.Hashing": { - "type": "Transitive", - "resolved": "10.0.3", - "contentHash": "La6ICwsdTKhVX+LKN+pvFjQRR3LhLwq3uKdi2knjLzRyPYBSydF4cjXidYxIiTcDD6XVYdsBWQEI8ZxiZ/OdIg==" - }, - "System.Management": { - "type": "Transitive", - "resolved": "7.0.2", - "contentHash": "/qEUN91mP/MUQmJnM5y5BdT7ZoPuVrtxnFlbJ8a3kBJGhe2wCzBfnPFtK2wTtEEcf3DMGR9J00GZZfg6HRI6yA==", - "dependencies": { - "System.CodeDom": "7.0.0" - } - }, - "System.Memory.Data": { - "type": "Transitive", - "resolved": "10.0.9", - "contentHash": "YweovHiLUoEdbr2Xv8eRqCSkTu1vMms4a6xBHaQiMSFVy32PL+hXv6Vhol2NWOmLHjaVgTyhJ3R52U6JxS6w3Q==" - }, - "System.Security.Cryptography.Pkcs": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" - }, - "System.Security.Cryptography.ProtectedData": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "s8yUYuYYu+PAwvBdhLG1KyrGrk9gkYeuPxfAsXsTqqWyepwSyEw8hAaflW4nO98NG52YpYI1am2+9o+79h2RtQ==" - }, - "System.Threading.RateLimiting": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "7mu9v0QDv66ar3DpGSZHg9NuNcxDaaAcnMULuZlaTpP9+hwXhrxNGsF5GmLkSHxFdb5bBc1TzeujsRgTrPWi+Q==" - }, - "Backbone.BuildingBlocks.Application": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Common.Infrastructure": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "MediatR": "[12.5.0, 12.5.0]", - "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", - "Polly": "[8.7.0, 8.7.0]", - "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" - } - }, - "Backbone.BuildingBlocks.Application.Abstractions": { - "type": "Project", - "dependencies": { - "Backbone.DevelopmentKit.Identity": "[1.0.0, )", - "Backbone.Tooling": "[1.0.0, )", - "MediatR.Contracts": "[2.0.1, 2.0.1]", - "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]" - } - }, - "Backbone.BuildingBlocks.Domain": { - "type": "Project", - "dependencies": { - "Backbone.Tooling": "[1.0.0, )" - } - }, - "Backbone.BuildingBlocks.Infrastructure": { - "type": "Project", - "dependencies": { - "AWSSDK.S3": "[4.0.101.6, 4.0.101.6]", - "Autofac": "[9.3.2, 9.3.2]", - "Azure.Messaging.ServiceBus": "[7.20.2, 7.20.2]", - "Azure.Storage.Blobs": "[12.29.1, 12.29.1]", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "EFCore.BulkExtensions.Core": "[10.0.1, 10.0.1]", - "EFCore.BulkExtensions.PostgreSql": "[10.0.1, 10.0.1]", - "EFCore.BulkExtensions.SqlServer": "[10.0.1, 10.0.1]", - "Google.Cloud.PubSub.V1": "[3.36.0, 3.36.0]", - "Google.Cloud.Storage.V1": "[4.15.0, 4.15.0]", - "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", - "Microsoft.EntityFrameworkCore.Abstractions": "[10.0.10, 10.0.10]", - "Microsoft.EntityFrameworkCore.Proxies": "[10.0.10, 10.0.10]", - "Microsoft.EntityFrameworkCore.Relational": "[10.0.10, 10.0.10]", - "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", - "Microsoft.Extensions.Azure": "[1.14.0, 1.14.0]", - "Microsoft.Extensions.DependencyInjection": "[10.0.10, 10.0.10]", - "Microsoft.Extensions.Diagnostics.HealthChecks.Common": "[10.8.0, 10.8.0]", - "Microsoft.Extensions.Identity.Core": "[10.0.10, 10.0.10]", - "Microsoft.Extensions.Logging": "[10.0.10, 10.0.10]", - "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, 10.0.3]", - "OpenTelemetry.Api": "[1.18.0, )", - "Polly": "[8.7.0, 8.7.0]", - "RabbitMQ.Client": "[7.2.1, 7.2.1]", - "Serilog": "[4.4.0, 4.4.0]" - } - }, - "Backbone.Common.Infrastructure": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.DevelopmentKit.Identity": "[1.0.0, )", - "Dapper": "[2.1.79, 2.1.79]", - "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", - "Polly": "[8.7.0, 8.7.0]" - } - }, - "Backbone.DevelopmentKit.Identity": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )", - "SimpleBase": "[5.6.3, 5.6.3]" - } - }, - "Backbone.Modules.Challenges.Domain": { - "type": "Project", - "dependencies": { - "Backbone.DevelopmentKit.Identity": "[1.0.0, )", - "Backbone.Tooling": "[1.0.0, )" - } - }, - "Backbone.Tooling": { - "type": "Project", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "[10.0.10, 10.0.10]", - "Microsoft.Extensions.Options": "[10.0.10, 10.0.10]" - } - }, - "Autofac": { - "type": "CentralTransitive", - "requested": "[9.3.2, 9.3.2]", - "resolved": "9.3.2", - "contentHash": "an3dLpmXWvb2aBP5qyA7GVEcXhoG+W/EtFRa3sBYzJdXSNDnB0aoeo4MgOQru0G5sjNDGYM3D3CnBzNFXEVOOA==" - }, - "AWSSDK.S3": { - "type": "CentralTransitive", - "requested": "[4.0.101.6, 4.0.101.6]", - "resolved": "4.0.101.6", - "contentHash": "LsVXGc3lyJuUJe+EbGubkFeR0cVmtmj4YdMChqsqSIsjZtCMzPg2BXR7cJqcrIBGoHab3q3RS6K8T9QD2tbhhQ==", - "dependencies": { - "AWSSDK.Core": "[4.0.100.9, 5.0.0)" - } - }, - "Azure.Messaging.ServiceBus": { - "type": "CentralTransitive", - "requested": "[7.20.2, 7.20.2]", - "resolved": "7.20.2", - "contentHash": "mwr5c3Qs7FWUtwzlLOtVixYDpUuA+Ln7sNirljTHZR8kDhzdr2grlqx0RRBvGV+IDCRHt1jIRb+hi0MUzjeVmw==", - "dependencies": { - "Azure.Core": "1.60.0", - "Azure.Core.Amqp": "1.3.1", - "Microsoft.Azure.Amqp": "2.7.0" - } - }, - "Azure.Storage.Blobs": { - "type": "CentralTransitive", - "requested": "[12.29.1, 12.29.1]", - "resolved": "12.29.1", - "contentHash": "pWh7xZBto8YcwiO853AB3uijTfVqs9PDte0Bu9/Zd8O9nwKiitWm0Jej1vsNkmYUzeG1552f8vJPjmtW30pBUQ==", - "dependencies": { - "Azure.Core": "1.55.0", - "Azure.Storage.Common": "12.28.0" - } - }, - "Dapper": { - "type": "CentralTransitive", - "requested": "[2.1.79, 2.1.79]", - "resolved": "2.1.79", - "contentHash": "8YijbzgTfmqmQOnVNorYM6K++pxqnW3nJ4aC1sRHzxUA2CcuoJ9gsTem3kgBnPRMc38zZHl4Esb6hAezXIEEuw==" - }, - "EFCore.BulkExtensions.Core": { - "type": "CentralTransitive", - "requested": "[10.0.1, 10.0.1]", - "resolved": "10.0.1", - "contentHash": "D++Wd1Qy6RM+yMy4nQ3r0nc/cSA0T+AdlFBEuKDhwl6r5bwuBQpluP5h2rvQ3i+CetUGppef6JNH9grg8lo+Bw==", - "dependencies": { - "MedallionTopologicalSort": "1.0.0", - "Microsoft.EntityFrameworkCore.Relational": "10.0.3", - "NetTopologySuite": "2.6.0" - } - }, - "EFCore.BulkExtensions.PostgreSql": { - "type": "CentralTransitive", - "requested": "[10.0.1, 10.0.1]", - "resolved": "10.0.1", - "contentHash": "iZCay5ghyULm4kA0ET6BOrL9J7AhVlgBqILpy4TUBm6yaGALIwcGc/qe6EO/VS+k9/RwJdO4qsRqWiTNrxF1Aw==", - "dependencies": { - "EFCore.BulkExtensions.Core": "10.0.1", - "Npgsql.EntityFrameworkCore.PostgreSQL": "10.0.0" - } - }, - "EFCore.BulkExtensions.SqlServer": { - "type": "CentralTransitive", - "requested": "[10.0.1, 10.0.1]", - "resolved": "10.0.1", - "contentHash": "Eg5nL1rjTvrCIjJD7ABjAH3waENRZ5mt/OZkhJe9FXgOIbovS8hzaDzy5Pqi+gwaPJLrdCeQWHfJgNjyULOVUw==", - "dependencies": { - "EFCore.BulkExtensions.Core": "10.0.1", - "Microsoft.Data.SqlClient": "6.1.4", - "Microsoft.EntityFrameworkCore.SqlServer.HierarchyId": "10.0.3", - "NetTopologySuite.IO.SqlServerBytes": "2.1.0" - } - }, - "Google.Cloud.PubSub.V1": { - "type": "CentralTransitive", - "requested": "[3.36.0, 3.36.0]", - "resolved": "3.36.0", - "contentHash": "69Tc+bHPvQQPXYs5cnLPhCsEMBYH5CABu/N+yccH+xS2Eforkt3r8DIhy6MUTA+O2NQYKYQSbmU/gIVXYpOBQA==", - "dependencies": { - "Google.Api.Gax.Grpc": "[4.13.1, 5.0.0)", - "Google.Cloud.Iam.V1": "[3.5.0, 4.0.0)" - } - }, - "Google.Cloud.Storage.V1": { - "type": "CentralTransitive", - "requested": "[4.15.0, 4.15.0]", - "resolved": "4.15.0", - "contentHash": "TVlJsaIkMDwHbZPCcLFFKduFcFD0yJL1jsZmV/V/FMjv5iok/eoC0oy8/VHjxfmWmNGkJLPLMAe5MrFLtY7hzg==", - "dependencies": { - "Google.Api.Gax.Rest": "[4.13.1, 5.0.0)", - "Google.Apis.Storage.v1": "[1.74.0.4115, 2.0.0)" - } - }, - "MediatR": { - "type": "CentralTransitive", - "requested": "[12.5.0, 12.5.0]", - "resolved": "12.5.0", - "contentHash": "vqm2H8/nqL5NAJHPhsG1JOPwfkmbVrPyh4svdoRzu+uZh6Ex7PRoHBGsLYC0/RWCEJFqD1ohHNpteQvql9OktA==", - "dependencies": { - "MediatR.Contracts": "[2.0.1, 3.0.0)", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" - } - }, - "MediatR.Contracts": { - "type": "CentralTransitive", - "requested": "[2.0.1, 2.0.1]", - "resolved": "2.0.1", - "contentHash": "FYv95bNT4UwcNA+G/J1oX5OpRiSUxteXaUt2BJbRSdRNiIUNbggJF69wy6mnk2wYToaanpdXZdCwVylt96MpwQ==" - }, - "Microsoft.EntityFrameworkCore": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "a0V7zj/VbYP6dTdWpUgE/r2PuLKtUGe2aJ0lVKkn/wP9ZhaxUz2kQydVfvOjCv2SKxlrqdBfHhPD4Cvlf+4ffA==", - "dependencies": { - "Microsoft.EntityFrameworkCore.Abstractions": "10.0.10", - "Microsoft.EntityFrameworkCore.Analyzers": "10.0.10", - "Microsoft.Extensions.Caching.Memory": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10" - } - }, - "Microsoft.EntityFrameworkCore.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "bOzrFCl6uZCjaSh2bG1ToRQRdx+iXvxosCg9hFyG9OWeAzOFI4xev9OqKeWfKf/kAHyox2JnbcvLVf2ceA7sqA==" - }, - "Microsoft.EntityFrameworkCore.Proxies": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "H/Fu7n1eZb8mLc6Nfj9Hr9IE3DRNhwPhflQnlMB33y+07Bc9C1B+paRWyg0DhX5PUFDdVKlXbBnNNzRMp/UEnA==", - "dependencies": { - "Castle.Core": "5.2.1", - "Microsoft.EntityFrameworkCore": "10.0.10", - "Microsoft.Extensions.Caching.Memory": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10" - } - }, - "Microsoft.EntityFrameworkCore.Relational": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "wNonj40aZxia+GtuBiiD6ZqVh4h6y5Nje1bGdmzZ8/ui0QRsAN+S0SIrLHFCEGbG9cDbeaE40sh+Lr7o9rRs6g==", - "dependencies": { - "Microsoft.EntityFrameworkCore": "10.0.10", - "Microsoft.Extensions.Caching.Memory": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10" - } - }, - "Microsoft.EntityFrameworkCore.SqlServer": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "xwAOvQ1WCfWyA4sRkoYVHyTm8UJ7NDYpRo++2oWuXGQ9g60Z1yepaQBmoPDT2nX24q4ISWnktAW9zARFTiSVvg==", - "dependencies": { - "Microsoft.Data.SqlClient": "6.1.1", - "Microsoft.EntityFrameworkCore.Relational": "10.0.10", - "Microsoft.Extensions.Caching.Memory": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10" - } - }, - "Microsoft.Extensions.Azure": { - "type": "CentralTransitive", - "requested": "[1.14.0, 1.14.0]", - "resolved": "1.14.0", - "contentHash": "g4d2TLfbAiZeXBcGkJdgIl2ZzqMcepMUbECENgg4XXqDU8uGAUwBxJb6x2DBpF6BY09vrHO0Ug3xZcH+cVbMrQ==", - "dependencies": { - "Azure.Core": "1.53.0", - "Microsoft.Extensions.Configuration.Binder": "10.0.3", - "Microsoft.Extensions.Logging": "10.0.3" - } - }, - "Microsoft.Extensions.Configuration": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "plJWK2zpWuuyxI8F8s2scx6Je7N1Ajjs6HvYUGKwRnDMWIVIz9FHwAkiT7ASgrvAOd10T0FPVlh9BzAJJME+jg==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "5Vnd2I75DmZCVEjSynIdJ/0EGafgnLQwgR3t2C2/fkjx/nRG+cLwxLLdInoHeCEpkD5K4Ov/g9ZCRYrl4TRsaA==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.Binder": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "GqmN2o1CkJvk7uWp+p4CwBYW0w/zfoEbvsiFDbO2G8l1Uz+mrDAbAcZiXhU2lufKPby1cjAUdd5GTWpebYOkOA==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.Json": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "uvJ6sHwjgrkMEJOgiC76G0mcZGXerwyyWkwX34EOjCbxKG6TCtfAoqDKAMsCvEBf9HxjlGQEgqsSMOGCmGBf+A==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.FileExtensions": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.DependencyInjection": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "ANyvsgkNBRvcJh2XLgn8veGmajf+8m0AbKK+HPWdRL1yraSNVVSmQhFntLtdz/C795jxqqup+k05cs/3jZQPOA==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "z/2xXlFw2aLGjHyEm6E0tQ+In6VfzQzTrtArbQ2c0TQE16ZbyDCMGPvaUT9I0s8rgy9sRWlU2P9waW37qV04qA==" - }, - "Microsoft.Extensions.Diagnostics.HealthChecks.Common": { - "type": "CentralTransitive", - "requested": "[10.8.0, 10.8.0]", - "resolved": "10.8.0", - "contentHash": "nyB5D+P7R2LOIrAiZyCgcUsQZcKa/n4PIGkE8eXGknlhPTfd5bivi2u4vhFVvjZYkObw/bpWRSwBllyx1ZuWGw==", - "dependencies": { - "Microsoft.Extensions.Configuration.Binder": "10.0.10", - "Microsoft.Extensions.Diagnostics": "10.0.10", - "Microsoft.Extensions.Diagnostics.HealthChecks": "10.0.10", - "Microsoft.Extensions.ObjectPool": "10.0.10", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10", - "Microsoft.Extensions.Telemetry.Abstractions": "10.8.0" - } - }, - "Microsoft.Extensions.Hosting": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "tL9FkfV64GPUDSPvwrgyw42LVzsnVAnyrqJEuZVJbODgrQ3eL63zmzEcVWoCHzfgqUhWggzbgAyUCnz/zfI3Pg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.Binder": "10.0.10", - "Microsoft.Extensions.Configuration.CommandLine": "10.0.10", - "Microsoft.Extensions.Configuration.EnvironmentVariables": "10.0.10", - "Microsoft.Extensions.Configuration.FileExtensions": "10.0.10", - "Microsoft.Extensions.Configuration.Json": "10.0.10", - "Microsoft.Extensions.Configuration.UserSecrets": "10.0.10", - "Microsoft.Extensions.DependencyInjection": "10.0.10", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Diagnostics": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Physical": "10.0.10", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging.Configuration": "10.0.10", - "Microsoft.Extensions.Logging.Console": "10.0.10", - "Microsoft.Extensions.Logging.Debug": "10.0.10", - "Microsoft.Extensions.Logging.EventLog": "10.0.10", - "Microsoft.Extensions.Logging.EventSource": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Extensions.Hosting.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "5LugpYGHk+mkn0a8IZgcyfBca8PCTAU9RQFoMrTdtOOidq88M2SI5f3px6ugnzgxC+eTkvYYJi8pzlUnG5xdAQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Identity.Core": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "ZA+9MX1D7+jm/1RF3iOOBThCps55MT1jAwLne1dryMj9cuAeOVtGS3pBegqk1Mwza+0tuVAklob+Q/EA9bHnQw==", - "dependencies": { - "Microsoft.AspNetCore.Cryptography.KeyDerivation": "10.0.10", - "Microsoft.Extensions.Diagnostics": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Extensions.Logging": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "Tf6z5HsL0VDYRTfvsoNrTGHGheCwkTsZBA2FFh5ATJUbkAwug+FFNISJK2gjpUNemlAOoWllAK52HOWCjto3EQ==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "zkFxGYUvdxAvIKTyXHrmW+Sux53D4SezD9dMyZ6hrwwzPQJNuwCRy1f5W7AvYTqacEGhWF2XderRQG1OvbV8og==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Options": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "srnhnk7nE8krBiIXp71LvBmKBtraBONWSRzdjJgRv1Ko9Mp8IVNqv4vIS9hGeVteBig8aQkva9ZG+sC+o5sVcA==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Npgsql.EntityFrameworkCore.PostgreSQL": { - "type": "CentralTransitive", - "requested": "[10.0.3, 10.0.3]", - "resolved": "10.0.3", - "contentHash": "IPGrrZnRkuW7OlHDhUESZz4G5DLkW7Nej/O3Cx+0iTsgyU5XJxBgpsvTHLloo3WWuAKKbDHXBvWPVkX1deRh1Q==", - "dependencies": { - "Microsoft.EntityFrameworkCore": "[10.0.4, 11.0.0)", - "Microsoft.EntityFrameworkCore.Relational": "[10.0.4, 11.0.0)", - "Npgsql": "10.0.3" - } - }, - "OpenTelemetry.Api": { - "type": "CentralTransitive", - "requested": "[1.18.0, )", - "resolved": "1.18.0", - "contentHash": "Dhzm5oughIY9EWckt2J1yXcEbXpki5WCL2q7prJoYxzH6C7jdkfGtPMTkUVZZ4AhjJKzQnlC+kLSIlmIVwC4Vw==" - }, - "Polly": { - "type": "CentralTransitive", - "requested": "[8.7.0, 8.7.0]", - "resolved": "8.7.0", - "contentHash": "0qR4f0OR8FeCAfLWcfwzAM7w6EmpUgwa22PgxKjcL25dEAto7sKpQQXbtxp38vVvK+V3RFkh/TeI7g/iUdoYIQ==", - "dependencies": { - "Polly.Core": "8.7.0" - } - }, - "RabbitMQ.Client": { - "type": "CentralTransitive", - "requested": "[7.2.1, 7.2.1]", - "resolved": "7.2.1", - "contentHash": "YKXEfg9fVQiTKgZlvIhAfPSFaamEgi8DsQmisCH0IAsU4FYLrtoguDrDj6JtJVGUt40QPnBLRH6fTQcAC4qsOg==", - "dependencies": { - "System.Threading.RateLimiting": "8.0.0" - } - }, - "ReHackt.Extensions.Options.Validation": { - "type": "CentralTransitive", - "requested": "[10.0.1, 10.0.1]", - "resolved": "10.0.1", - "contentHash": "/mjsZpv8DLDeHns99iDROqFa0eJ/5NU4X2kMMt3VTfVf3xYWQNLPoTs//x+wKXWYSo+pdXkA+ASvaJT/pifB2Q==", - "dependencies": { - "Microsoft.Extensions.Hosting": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Serilog": { - "type": "CentralTransitive", - "requested": "[4.4.0, 4.4.0]", - "resolved": "4.4.0", - "contentHash": "ZC6Le3rr4TVJJjS4KsQAesxeF1EhW9qcZmmG7eP5Y2G3+gTGkJEUXkq4+tZNPtyp05I0wWOxnIjwtxFweJsObw==" - }, - "SimpleBase": { - "type": "CentralTransitive", - "requested": "[5.6.3, 5.6.3]", - "resolved": "5.6.3", - "contentHash": "ayL730f1gdQVYmFFLKSX83QcoltyKSMBsV94qfCBpZHMaJz/e3ALuXKZDD8SkseWbNHxBe0HxLRBe5OOpQ9HpA==" - } - }, - "net10.0/linux-arm64": { - "Microsoft.Data.SqlClient": { - "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" - } - }, - "Microsoft.Data.SqlClient.SNI.runtime": { - "type": "Transitive", - "resolved": "6.0.2", - "contentHash": "f+pRODTWX7Y67jXO3T5S2dIPZ9qMJNySjlZT/TKmWVNWe19N8jcWmHaqHnnchaq3gxEKv1SWVY5EFzOD06l41w==" - }, - "Microsoft.SqlServer.Types": { - "type": "Transitive", - "resolved": "160.1000.6", - "contentHash": "4kk+rz5vnIPr9ENzm8KttUbhBKftv0uHSSFDVjc5OuKPtRP5q0lDbYUy5ZsoYCAG3RrZdJoxPnWN2JNozZAiGA==", - "dependencies": { - "Microsoft.SqlServer.Server": "1.0.0" - } - }, - "System.Diagnostics.EventLog": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" - }, - "System.Management": { - "type": "Transitive", - "resolved": "7.0.2", - "contentHash": "/qEUN91mP/MUQmJnM5y5BdT7ZoPuVrtxnFlbJ8a3kBJGhe2wCzBfnPFtK2wTtEEcf3DMGR9J00GZZfg6HRI6yA==", - "dependencies": { - "System.CodeDom": "7.0.0" - } - }, - "System.Security.Cryptography.Pkcs": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" - } - }, - "net10.0/linux-x64": { - "Microsoft.Data.SqlClient": { - "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" - } - }, - "Microsoft.Data.SqlClient.SNI.runtime": { - "type": "Transitive", - "resolved": "6.0.2", - "contentHash": "f+pRODTWX7Y67jXO3T5S2dIPZ9qMJNySjlZT/TKmWVNWe19N8jcWmHaqHnnchaq3gxEKv1SWVY5EFzOD06l41w==" - }, - "Microsoft.SqlServer.Types": { - "type": "Transitive", - "resolved": "160.1000.6", - "contentHash": "4kk+rz5vnIPr9ENzm8KttUbhBKftv0uHSSFDVjc5OuKPtRP5q0lDbYUy5ZsoYCAG3RrZdJoxPnWN2JNozZAiGA==", - "dependencies": { - "Microsoft.SqlServer.Server": "1.0.0" - } - }, - "System.Diagnostics.EventLog": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" - }, - "System.Management": { - "type": "Transitive", - "resolved": "7.0.2", - "contentHash": "/qEUN91mP/MUQmJnM5y5BdT7ZoPuVrtxnFlbJ8a3kBJGhe2wCzBfnPFtK2wTtEEcf3DMGR9J00GZZfg6HRI6yA==", - "dependencies": { - "System.CodeDom": "7.0.0" - } - }, - "System.Security.Cryptography.Pkcs": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" - } - }, - "net10.0/osx-arm64": { - "Microsoft.Data.SqlClient": { - "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" - } - }, - "Microsoft.Data.SqlClient.SNI.runtime": { - "type": "Transitive", - "resolved": "6.0.2", - "contentHash": "f+pRODTWX7Y67jXO3T5S2dIPZ9qMJNySjlZT/TKmWVNWe19N8jcWmHaqHnnchaq3gxEKv1SWVY5EFzOD06l41w==" - }, - "Microsoft.SqlServer.Types": { - "type": "Transitive", - "resolved": "160.1000.6", - "contentHash": "4kk+rz5vnIPr9ENzm8KttUbhBKftv0uHSSFDVjc5OuKPtRP5q0lDbYUy5ZsoYCAG3RrZdJoxPnWN2JNozZAiGA==", - "dependencies": { - "Microsoft.SqlServer.Server": "1.0.0" - } - }, - "System.Diagnostics.EventLog": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" - }, - "System.Management": { - "type": "Transitive", - "resolved": "7.0.2", - "contentHash": "/qEUN91mP/MUQmJnM5y5BdT7ZoPuVrtxnFlbJ8a3kBJGhe2wCzBfnPFtK2wTtEEcf3DMGR9J00GZZfg6HRI6yA==", - "dependencies": { - "System.CodeDom": "7.0.0" - } - }, - "System.Security.Cryptography.Pkcs": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" - } - }, - "net10.0/win-x64": { - "Microsoft.Data.SqlClient": { - "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" - } - }, - "Microsoft.Data.SqlClient.SNI.runtime": { - "type": "Transitive", - "resolved": "6.0.2", - "contentHash": "f+pRODTWX7Y67jXO3T5S2dIPZ9qMJNySjlZT/TKmWVNWe19N8jcWmHaqHnnchaq3gxEKv1SWVY5EFzOD06l41w==" - }, - "Microsoft.SqlServer.Types": { - "type": "Transitive", - "resolved": "160.1000.6", - "contentHash": "4kk+rz5vnIPr9ENzm8KttUbhBKftv0uHSSFDVjc5OuKPtRP5q0lDbYUy5ZsoYCAG3RrZdJoxPnWN2JNozZAiGA==", - "dependencies": { - "Microsoft.SqlServer.Server": "1.0.0" - } - }, - "System.Diagnostics.EventLog": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" - }, - "System.Management": { - "type": "Transitive", - "resolved": "7.0.2", - "contentHash": "/qEUN91mP/MUQmJnM5y5BdT7ZoPuVrtxnFlbJ8a3kBJGhe2wCzBfnPFtK2wTtEEcf3DMGR9J00GZZfg6HRI6yA==", - "dependencies": { - "System.CodeDom": "7.0.0" - } - }, - "System.Security.Cryptography.Pkcs": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" - } - } - } -} \ No newline at end of file diff --git a/Modules/Challenges/src/Challenges.Infrastructure.Database.Postgres/packages.lock.json b/Modules/Challenges/src/Challenges.Infrastructure.Database.Postgres/packages.lock.json index b956ed2c6a..5f0c5c6e79 100644 --- a/Modules/Challenges/src/Challenges.Infrastructure.Database.Postgres/packages.lock.json +++ b/Modules/Challenges/src/Challenges.Infrastructure.Database.Postgres/packages.lock.json @@ -284,47 +284,6 @@ "Microsoft.Extensions.ObjectPool": "10.0.10" } }, - "Microsoft.Extensions.Configuration.CommandLine": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "33cBeR2HRbzHUTtmcmLdNOApneNGcymwwL4arHuotgVK9Frba8kcDTrvVTj7cSCmF1R9OiSbZH0KxNOwab3HUg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.EnvironmentVariables": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "KRfFSSCV58vEdU7mPED/YMzeovIWF5P0g8s9K8n9HEfy0/WzMq37SrPdXdFN5/dFT/rPMHpF7AvpoXHckbcBFg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.FileExtensions": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "ZOhZYwvbXGTgGVRwswIirofEMVHuWdxjdh0JeUZXwaF9cgcjXdz/t0ELtgaevw7ezTyv47yPNCgGreWtLkn3IQ==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Physical": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.UserSecrets": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "1s1sKFTk/Foam64JY6+m/diH8drL3Wx6V3gtSd5v1IEZtszZYyc1pW8uRnMblzpNiR0l0t8gGk7tXj3xHzFgdg==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.Json": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Physical": "10.0.10" - } - }, "Microsoft.Extensions.Diagnostics": { "type": "Transitive", "resolved": "10.0.10", @@ -368,82 +327,6 @@ "Microsoft.Extensions.Primitives": "10.0.10" } }, - "Microsoft.Extensions.FileProviders.Physical": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "jhJAyo38kSrH3ARvWUk0h8itogVnQu2DCZuPo+s0Z+tXes0ugTxMPaHYzap85785eHQmPFqD9TYERqBbtGxn/w==", - "dependencies": { - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.FileSystemGlobbing": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.FileSystemGlobbing": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "jSOCVxEwCd4Aq925kJVz1kSO1EpX2OHYKL04qVREXkDU7Ce3pVDdHPYm+fEy8y/th2kJf/DAstRHpJAqoNWP8w==" - }, - "Microsoft.Extensions.Logging.Configuration": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "cLrqxkuEfcilZ8SjK+9KAnpLk9lOoMPaOokF+wRUYie+iUEcdX4/p/+gJkt0BYgWLthjpBUCkVTBI6Kxg0nsOw==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.Binder": "10.0.10", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.Console": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "VIlNzPwPS0GeQVSmCqqo36ugryX3LpE9ul6gEkks5VLET3weH/XMLeWmclwfoGn4Nxi2mwVibB+OZBVJ9tDqvg==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging.Configuration": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.Debug": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "8+TZBnV5fgBXoVNJ5ROSErUwYogk4hOgV7c2HWK1u5cqKGmiUTUn7+KqZ35iQu8e/B7Ykccyz5OTjdXcidNZ9g==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.EventLog": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "0RE4951AzQ+YD4gVrvbq0BhdsiBgSDo44yM7+QBZ2mrmMJeNjY+teCIYfUjqDPVYnKs0HR6SkkhgrX1YgXZq3Q==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "System.Diagnostics.EventLog": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.EventSource": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "85SAPwXhJtdBInzN2k7SChiFiBGh3KOWay5AfoY+GREF6P7oZA98+ST2p7Z9384iLKYjkZSKIZ/FqIO5aojtNw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, "Microsoft.Extensions.ObjectPool": { "type": "Transitive", "resolved": "10.0.10", @@ -611,8 +494,8 @@ }, "System.Diagnostics.EventLog": { "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" + "resolved": "9.0.11", + "contentHash": "2Us/NchH6SM69NYWzf8NRyeftdv3ILso8LMiMdAjT7ECTiZKzddiXWhAyQj6ZzbddoAOHS9GdlPbAAkwCPID3Q==" }, "System.IdentityModel.Tokens.Jwt": { "type": "Transitive", @@ -656,18 +539,6 @@ "resolved": "8.0.0", "contentHash": "7mu9v0QDv66ar3DpGSZHg9NuNcxDaaAcnMULuZlaTpP9+hwXhrxNGsF5GmLkSHxFdb5bBc1TzeujsRgTrPWi+Q==" }, - "Backbone.BuildingBlocks.Application": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Common.Infrastructure": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "MediatR": "[12.5.0, 12.5.0]", - "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", - "Polly": "[8.7.0, 8.7.0]", - "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" - } - }, "Backbone.BuildingBlocks.Application.Abstractions": { "type": "Project", "dependencies": { @@ -713,16 +584,6 @@ "Serilog": "[4.4.0, 4.4.0]" } }, - "Backbone.Common.Infrastructure": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.DevelopmentKit.Identity": "[1.0.0, )", - "Dapper": "[2.1.79, 2.1.79]", - "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", - "Polly": "[8.7.0, 8.7.0]" - } - }, "Backbone.DevelopmentKit.Identity": { "type": "Project", "dependencies": { @@ -730,13 +591,10 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Challenges.Application": { + "Backbone.Modules.Challenges.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Challenges.Domain": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Challenges.Domain": "[1.0.0, )" } }, "Backbone.Modules.Challenges.Domain": { @@ -751,7 +609,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Challenges.Application": "[1.0.0, )", + "Backbone.Modules.Challenges.Abstractions": "[1.0.0, )", "Backbone.Modules.Challenges.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -801,12 +659,6 @@ "Azure.Storage.Common": "12.28.0" } }, - "Dapper": { - "type": "CentralTransitive", - "requested": "[2.1.79, 2.1.79]", - "resolved": "2.1.79", - "contentHash": "8YijbzgTfmqmQOnVNorYM6K++pxqnW3nJ4aC1sRHzxUA2CcuoJ9gsTem3kgBnPRMc38zZHl4Esb6hAezXIEEuw==" - }, "EFCore.BulkExtensions.Core": { "type": "CentralTransitive", "requested": "[10.0.1, 10.0.1]", @@ -840,22 +692,6 @@ "NetTopologySuite.IO.SqlServerBytes": "2.1.0" } }, - "FluentValidation": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" - }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", @@ -876,16 +712,6 @@ "Google.Apis.Storage.v1": "[1.74.0.4115, 2.0.0)" } }, - "MediatR": { - "type": "CentralTransitive", - "requested": "[12.5.0, 12.5.0]", - "resolved": "12.5.0", - "contentHash": "vqm2H8/nqL5NAJHPhsG1JOPwfkmbVrPyh4svdoRzu+uZh6Ex7PRoHBGsLYC0/RWCEJFqD1ohHNpteQvql9OktA==", - "dependencies": { - "MediatR.Contracts": "[2.0.1, 3.0.0)", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" - } - }, "MediatR.Contracts": { "type": "CentralTransitive", "requested": "[2.0.1, 2.0.1]", @@ -987,18 +813,6 @@ "Microsoft.Extensions.Configuration.Abstractions": "10.0.10" } }, - "Microsoft.Extensions.Configuration.Json": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "uvJ6sHwjgrkMEJOgiC76G0mcZGXerwyyWkwX34EOjCbxKG6TCtfAoqDKAMsCvEBf9HxjlGQEgqsSMOGCmGBf+A==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.FileExtensions": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10" - } - }, "Microsoft.Extensions.DependencyInjection": { "type": "CentralTransitive", "requested": "[10.0.10, 10.0.10]", @@ -1028,36 +842,6 @@ "Microsoft.Extensions.Telemetry.Abstractions": "10.8.0" } }, - "Microsoft.Extensions.Hosting": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "tL9FkfV64GPUDSPvwrgyw42LVzsnVAnyrqJEuZVJbODgrQ3eL63zmzEcVWoCHzfgqUhWggzbgAyUCnz/zfI3Pg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.Binder": "10.0.10", - "Microsoft.Extensions.Configuration.CommandLine": "10.0.10", - "Microsoft.Extensions.Configuration.EnvironmentVariables": "10.0.10", - "Microsoft.Extensions.Configuration.FileExtensions": "10.0.10", - "Microsoft.Extensions.Configuration.Json": "10.0.10", - "Microsoft.Extensions.Configuration.UserSecrets": "10.0.10", - "Microsoft.Extensions.DependencyInjection": "10.0.10", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Diagnostics": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Physical": "10.0.10", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging.Configuration": "10.0.10", - "Microsoft.Extensions.Logging.Console": "10.0.10", - "Microsoft.Extensions.Logging.Debug": "10.0.10", - "Microsoft.Extensions.Logging.EventLog": "10.0.10", - "Microsoft.Extensions.Logging.EventSource": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, "Microsoft.Extensions.Hosting.Abstractions": { "type": "CentralTransitive", "requested": "[10.0.10, 10.0.10]", @@ -1148,16 +932,6 @@ "System.Threading.RateLimiting": "8.0.0" } }, - "ReHackt.Extensions.Options.Validation": { - "type": "CentralTransitive", - "requested": "[10.0.1, 10.0.1]", - "resolved": "10.0.1", - "contentHash": "/mjsZpv8DLDeHns99iDROqFa0eJ/5NU4X2kMMt3VTfVf3xYWQNLPoTs//x+wKXWYSo+pdXkA+ASvaJT/pifB2Q==", - "dependencies": { - "Microsoft.Extensions.Hosting": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, "Serilog": { "type": "CentralTransitive", "requested": "[4.4.0, 4.4.0]", @@ -1205,8 +979,8 @@ }, "System.Diagnostics.EventLog": { "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" + "resolved": "9.0.11", + "contentHash": "2Us/NchH6SM69NYWzf8NRyeftdv3ILso8LMiMdAjT7ECTiZKzddiXWhAyQj6ZzbddoAOHS9GdlPbAAkwCPID3Q==" }, "System.Management": { "type": "Transitive", @@ -1256,8 +1030,8 @@ }, "System.Diagnostics.EventLog": { "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" + "resolved": "9.0.11", + "contentHash": "2Us/NchH6SM69NYWzf8NRyeftdv3ILso8LMiMdAjT7ECTiZKzddiXWhAyQj6ZzbddoAOHS9GdlPbAAkwCPID3Q==" }, "System.Management": { "type": "Transitive", @@ -1307,8 +1081,8 @@ }, "System.Diagnostics.EventLog": { "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" + "resolved": "9.0.11", + "contentHash": "2Us/NchH6SM69NYWzf8NRyeftdv3ILso8LMiMdAjT7ECTiZKzddiXWhAyQj6ZzbddoAOHS9GdlPbAAkwCPID3Q==" }, "System.Management": { "type": "Transitive", @@ -1358,8 +1132,8 @@ }, "System.Diagnostics.EventLog": { "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" + "resolved": "9.0.11", + "contentHash": "2Us/NchH6SM69NYWzf8NRyeftdv3ILso8LMiMdAjT7ECTiZKzddiXWhAyQj6ZzbddoAOHS9GdlPbAAkwCPID3Q==" }, "System.Management": { "type": "Transitive", diff --git a/Modules/Challenges/src/Challenges.Infrastructure.Database.SqlServer/packages.lock.json b/Modules/Challenges/src/Challenges.Infrastructure.Database.SqlServer/packages.lock.json index b956ed2c6a..5f0c5c6e79 100644 --- a/Modules/Challenges/src/Challenges.Infrastructure.Database.SqlServer/packages.lock.json +++ b/Modules/Challenges/src/Challenges.Infrastructure.Database.SqlServer/packages.lock.json @@ -284,47 +284,6 @@ "Microsoft.Extensions.ObjectPool": "10.0.10" } }, - "Microsoft.Extensions.Configuration.CommandLine": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "33cBeR2HRbzHUTtmcmLdNOApneNGcymwwL4arHuotgVK9Frba8kcDTrvVTj7cSCmF1R9OiSbZH0KxNOwab3HUg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.EnvironmentVariables": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "KRfFSSCV58vEdU7mPED/YMzeovIWF5P0g8s9K8n9HEfy0/WzMq37SrPdXdFN5/dFT/rPMHpF7AvpoXHckbcBFg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.FileExtensions": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "ZOhZYwvbXGTgGVRwswIirofEMVHuWdxjdh0JeUZXwaF9cgcjXdz/t0ELtgaevw7ezTyv47yPNCgGreWtLkn3IQ==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Physical": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.UserSecrets": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "1s1sKFTk/Foam64JY6+m/diH8drL3Wx6V3gtSd5v1IEZtszZYyc1pW8uRnMblzpNiR0l0t8gGk7tXj3xHzFgdg==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.Json": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Physical": "10.0.10" - } - }, "Microsoft.Extensions.Diagnostics": { "type": "Transitive", "resolved": "10.0.10", @@ -368,82 +327,6 @@ "Microsoft.Extensions.Primitives": "10.0.10" } }, - "Microsoft.Extensions.FileProviders.Physical": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "jhJAyo38kSrH3ARvWUk0h8itogVnQu2DCZuPo+s0Z+tXes0ugTxMPaHYzap85785eHQmPFqD9TYERqBbtGxn/w==", - "dependencies": { - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.FileSystemGlobbing": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.FileSystemGlobbing": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "jSOCVxEwCd4Aq925kJVz1kSO1EpX2OHYKL04qVREXkDU7Ce3pVDdHPYm+fEy8y/th2kJf/DAstRHpJAqoNWP8w==" - }, - "Microsoft.Extensions.Logging.Configuration": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "cLrqxkuEfcilZ8SjK+9KAnpLk9lOoMPaOokF+wRUYie+iUEcdX4/p/+gJkt0BYgWLthjpBUCkVTBI6Kxg0nsOw==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.Binder": "10.0.10", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.Console": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "VIlNzPwPS0GeQVSmCqqo36ugryX3LpE9ul6gEkks5VLET3weH/XMLeWmclwfoGn4Nxi2mwVibB+OZBVJ9tDqvg==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging.Configuration": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.Debug": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "8+TZBnV5fgBXoVNJ5ROSErUwYogk4hOgV7c2HWK1u5cqKGmiUTUn7+KqZ35iQu8e/B7Ykccyz5OTjdXcidNZ9g==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.EventLog": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "0RE4951AzQ+YD4gVrvbq0BhdsiBgSDo44yM7+QBZ2mrmMJeNjY+teCIYfUjqDPVYnKs0HR6SkkhgrX1YgXZq3Q==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "System.Diagnostics.EventLog": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.EventSource": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "85SAPwXhJtdBInzN2k7SChiFiBGh3KOWay5AfoY+GREF6P7oZA98+ST2p7Z9384iLKYjkZSKIZ/FqIO5aojtNw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, "Microsoft.Extensions.ObjectPool": { "type": "Transitive", "resolved": "10.0.10", @@ -611,8 +494,8 @@ }, "System.Diagnostics.EventLog": { "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" + "resolved": "9.0.11", + "contentHash": "2Us/NchH6SM69NYWzf8NRyeftdv3ILso8LMiMdAjT7ECTiZKzddiXWhAyQj6ZzbddoAOHS9GdlPbAAkwCPID3Q==" }, "System.IdentityModel.Tokens.Jwt": { "type": "Transitive", @@ -656,18 +539,6 @@ "resolved": "8.0.0", "contentHash": "7mu9v0QDv66ar3DpGSZHg9NuNcxDaaAcnMULuZlaTpP9+hwXhrxNGsF5GmLkSHxFdb5bBc1TzeujsRgTrPWi+Q==" }, - "Backbone.BuildingBlocks.Application": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Common.Infrastructure": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "MediatR": "[12.5.0, 12.5.0]", - "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", - "Polly": "[8.7.0, 8.7.0]", - "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" - } - }, "Backbone.BuildingBlocks.Application.Abstractions": { "type": "Project", "dependencies": { @@ -713,16 +584,6 @@ "Serilog": "[4.4.0, 4.4.0]" } }, - "Backbone.Common.Infrastructure": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.DevelopmentKit.Identity": "[1.0.0, )", - "Dapper": "[2.1.79, 2.1.79]", - "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", - "Polly": "[8.7.0, 8.7.0]" - } - }, "Backbone.DevelopmentKit.Identity": { "type": "Project", "dependencies": { @@ -730,13 +591,10 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Challenges.Application": { + "Backbone.Modules.Challenges.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Challenges.Domain": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Challenges.Domain": "[1.0.0, )" } }, "Backbone.Modules.Challenges.Domain": { @@ -751,7 +609,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Challenges.Application": "[1.0.0, )", + "Backbone.Modules.Challenges.Abstractions": "[1.0.0, )", "Backbone.Modules.Challenges.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -801,12 +659,6 @@ "Azure.Storage.Common": "12.28.0" } }, - "Dapper": { - "type": "CentralTransitive", - "requested": "[2.1.79, 2.1.79]", - "resolved": "2.1.79", - "contentHash": "8YijbzgTfmqmQOnVNorYM6K++pxqnW3nJ4aC1sRHzxUA2CcuoJ9gsTem3kgBnPRMc38zZHl4Esb6hAezXIEEuw==" - }, "EFCore.BulkExtensions.Core": { "type": "CentralTransitive", "requested": "[10.0.1, 10.0.1]", @@ -840,22 +692,6 @@ "NetTopologySuite.IO.SqlServerBytes": "2.1.0" } }, - "FluentValidation": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" - }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", @@ -876,16 +712,6 @@ "Google.Apis.Storage.v1": "[1.74.0.4115, 2.0.0)" } }, - "MediatR": { - "type": "CentralTransitive", - "requested": "[12.5.0, 12.5.0]", - "resolved": "12.5.0", - "contentHash": "vqm2H8/nqL5NAJHPhsG1JOPwfkmbVrPyh4svdoRzu+uZh6Ex7PRoHBGsLYC0/RWCEJFqD1ohHNpteQvql9OktA==", - "dependencies": { - "MediatR.Contracts": "[2.0.1, 3.0.0)", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" - } - }, "MediatR.Contracts": { "type": "CentralTransitive", "requested": "[2.0.1, 2.0.1]", @@ -987,18 +813,6 @@ "Microsoft.Extensions.Configuration.Abstractions": "10.0.10" } }, - "Microsoft.Extensions.Configuration.Json": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "uvJ6sHwjgrkMEJOgiC76G0mcZGXerwyyWkwX34EOjCbxKG6TCtfAoqDKAMsCvEBf9HxjlGQEgqsSMOGCmGBf+A==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.FileExtensions": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10" - } - }, "Microsoft.Extensions.DependencyInjection": { "type": "CentralTransitive", "requested": "[10.0.10, 10.0.10]", @@ -1028,36 +842,6 @@ "Microsoft.Extensions.Telemetry.Abstractions": "10.8.0" } }, - "Microsoft.Extensions.Hosting": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "tL9FkfV64GPUDSPvwrgyw42LVzsnVAnyrqJEuZVJbODgrQ3eL63zmzEcVWoCHzfgqUhWggzbgAyUCnz/zfI3Pg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.Binder": "10.0.10", - "Microsoft.Extensions.Configuration.CommandLine": "10.0.10", - "Microsoft.Extensions.Configuration.EnvironmentVariables": "10.0.10", - "Microsoft.Extensions.Configuration.FileExtensions": "10.0.10", - "Microsoft.Extensions.Configuration.Json": "10.0.10", - "Microsoft.Extensions.Configuration.UserSecrets": "10.0.10", - "Microsoft.Extensions.DependencyInjection": "10.0.10", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Diagnostics": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Physical": "10.0.10", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging.Configuration": "10.0.10", - "Microsoft.Extensions.Logging.Console": "10.0.10", - "Microsoft.Extensions.Logging.Debug": "10.0.10", - "Microsoft.Extensions.Logging.EventLog": "10.0.10", - "Microsoft.Extensions.Logging.EventSource": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, "Microsoft.Extensions.Hosting.Abstractions": { "type": "CentralTransitive", "requested": "[10.0.10, 10.0.10]", @@ -1148,16 +932,6 @@ "System.Threading.RateLimiting": "8.0.0" } }, - "ReHackt.Extensions.Options.Validation": { - "type": "CentralTransitive", - "requested": "[10.0.1, 10.0.1]", - "resolved": "10.0.1", - "contentHash": "/mjsZpv8DLDeHns99iDROqFa0eJ/5NU4X2kMMt3VTfVf3xYWQNLPoTs//x+wKXWYSo+pdXkA+ASvaJT/pifB2Q==", - "dependencies": { - "Microsoft.Extensions.Hosting": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, "Serilog": { "type": "CentralTransitive", "requested": "[4.4.0, 4.4.0]", @@ -1205,8 +979,8 @@ }, "System.Diagnostics.EventLog": { "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" + "resolved": "9.0.11", + "contentHash": "2Us/NchH6SM69NYWzf8NRyeftdv3ILso8LMiMdAjT7ECTiZKzddiXWhAyQj6ZzbddoAOHS9GdlPbAAkwCPID3Q==" }, "System.Management": { "type": "Transitive", @@ -1256,8 +1030,8 @@ }, "System.Diagnostics.EventLog": { "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" + "resolved": "9.0.11", + "contentHash": "2Us/NchH6SM69NYWzf8NRyeftdv3ILso8LMiMdAjT7ECTiZKzddiXWhAyQj6ZzbddoAOHS9GdlPbAAkwCPID3Q==" }, "System.Management": { "type": "Transitive", @@ -1307,8 +1081,8 @@ }, "System.Diagnostics.EventLog": { "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" + "resolved": "9.0.11", + "contentHash": "2Us/NchH6SM69NYWzf8NRyeftdv3ILso8LMiMdAjT7ECTiZKzddiXWhAyQj6ZzbddoAOHS9GdlPbAAkwCPID3Q==" }, "System.Management": { "type": "Transitive", @@ -1358,8 +1132,8 @@ }, "System.Diagnostics.EventLog": { "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" + "resolved": "9.0.11", + "contentHash": "2Us/NchH6SM69NYWzf8NRyeftdv3ILso8LMiMdAjT7ECTiZKzddiXWhAyQj6ZzbddoAOHS9GdlPbAAkwCPID3Q==" }, "System.Management": { "type": "Transitive", diff --git a/Modules/Challenges/src/Challenges.Infrastructure/Challenges.Infrastructure.csproj b/Modules/Challenges/src/Challenges.Infrastructure/Challenges.Infrastructure.csproj index d627103d54..56471b3b00 100644 --- a/Modules/Challenges/src/Challenges.Infrastructure/Challenges.Infrastructure.csproj +++ b/Modules/Challenges/src/Challenges.Infrastructure/Challenges.Infrastructure.csproj @@ -9,7 +9,7 @@ - + diff --git a/Modules/Challenges/src/Challenges.Infrastructure/Persistence/IServiceCollectionExtensions.cs b/Modules/Challenges/src/Challenges.Infrastructure/Persistence/IServiceCollectionExtensions.cs index ac20f04d52..0dd1dd261a 100644 --- a/Modules/Challenges/src/Challenges.Infrastructure/Persistence/IServiceCollectionExtensions.cs +++ b/Modules/Challenges/src/Challenges.Infrastructure/Persistence/IServiceCollectionExtensions.cs @@ -1,5 +1,5 @@ using Backbone.BuildingBlocks.Infrastructure.Persistence.Database; -using Backbone.Modules.Challenges.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Challenges.Abstractions; using Backbone.Modules.Challenges.Infrastructure.Persistence.Database; using Backbone.Modules.Challenges.Infrastructure.Persistence.Repository; using Microsoft.Extensions.DependencyInjection; diff --git a/Modules/Challenges/src/Challenges.Application/Extensions/ChallengeQueryableExtensions.cs b/Modules/Challenges/src/Challenges.Infrastructure/Persistence/Repository/ChallengeQueryableExtensions.cs similarity index 88% rename from Modules/Challenges/src/Challenges.Application/Extensions/ChallengeQueryableExtensions.cs rename to Modules/Challenges/src/Challenges.Infrastructure/Persistence/Repository/ChallengeQueryableExtensions.cs index 6f0cebf0bb..57095b0f21 100644 --- a/Modules/Challenges/src/Challenges.Application/Extensions/ChallengeQueryableExtensions.cs +++ b/Modules/Challenges/src/Challenges.Infrastructure/Persistence/Repository/ChallengeQueryableExtensions.cs @@ -3,7 +3,7 @@ using Backbone.Modules.Challenges.Domain.Ids; using Microsoft.EntityFrameworkCore; -namespace Backbone.Modules.Challenges.Application.Extensions; +namespace Backbone.Modules.Challenges.Infrastructure.Persistence.Repository; public static class ChallengeQueryableExtensions { diff --git a/Modules/Challenges/src/Challenges.Infrastructure/Persistence/Repository/ChallengesRepository.cs b/Modules/Challenges/src/Challenges.Infrastructure/Persistence/Repository/ChallengesRepository.cs index 6ab9b0da90..f242265ddb 100644 --- a/Modules/Challenges/src/Challenges.Infrastructure/Persistence/Repository/ChallengesRepository.cs +++ b/Modules/Challenges/src/Challenges.Infrastructure/Persistence/Repository/ChallengesRepository.cs @@ -1,6 +1,5 @@ using System.Linq.Expressions; -using Backbone.Modules.Challenges.Application.Extensions; -using Backbone.Modules.Challenges.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Challenges.Abstractions; using Backbone.Modules.Challenges.Domain.Entities; using Backbone.Modules.Challenges.Domain.Ids; using Backbone.Modules.Challenges.Infrastructure.Persistence.Database; diff --git a/Modules/Challenges/src/Challenges.Infrastructure/packages.lock.json b/Modules/Challenges/src/Challenges.Infrastructure/packages.lock.json index 8db986a0bc..8644fd5b80 100644 --- a/Modules/Challenges/src/Challenges.Infrastructure/packages.lock.json +++ b/Modules/Challenges/src/Challenges.Infrastructure/packages.lock.json @@ -320,47 +320,6 @@ "Microsoft.Extensions.ObjectPool": "10.0.10" } }, - "Microsoft.Extensions.Configuration.CommandLine": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "33cBeR2HRbzHUTtmcmLdNOApneNGcymwwL4arHuotgVK9Frba8kcDTrvVTj7cSCmF1R9OiSbZH0KxNOwab3HUg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.EnvironmentVariables": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "KRfFSSCV58vEdU7mPED/YMzeovIWF5P0g8s9K8n9HEfy0/WzMq37SrPdXdFN5/dFT/rPMHpF7AvpoXHckbcBFg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.FileExtensions": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "ZOhZYwvbXGTgGVRwswIirofEMVHuWdxjdh0JeUZXwaF9cgcjXdz/t0ELtgaevw7ezTyv47yPNCgGreWtLkn3IQ==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Physical": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.UserSecrets": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "1s1sKFTk/Foam64JY6+m/diH8drL3Wx6V3gtSd5v1IEZtszZYyc1pW8uRnMblzpNiR0l0t8gGk7tXj3xHzFgdg==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.Json": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Physical": "10.0.10" - } - }, "Microsoft.Extensions.Diagnostics": { "type": "Transitive", "resolved": "10.0.10", @@ -404,82 +363,6 @@ "Microsoft.Extensions.Primitives": "10.0.10" } }, - "Microsoft.Extensions.FileProviders.Physical": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "jhJAyo38kSrH3ARvWUk0h8itogVnQu2DCZuPo+s0Z+tXes0ugTxMPaHYzap85785eHQmPFqD9TYERqBbtGxn/w==", - "dependencies": { - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.FileSystemGlobbing": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.FileSystemGlobbing": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "jSOCVxEwCd4Aq925kJVz1kSO1EpX2OHYKL04qVREXkDU7Ce3pVDdHPYm+fEy8y/th2kJf/DAstRHpJAqoNWP8w==" - }, - "Microsoft.Extensions.Logging.Configuration": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "cLrqxkuEfcilZ8SjK+9KAnpLk9lOoMPaOokF+wRUYie+iUEcdX4/p/+gJkt0BYgWLthjpBUCkVTBI6Kxg0nsOw==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.Binder": "10.0.10", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.Console": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "VIlNzPwPS0GeQVSmCqqo36ugryX3LpE9ul6gEkks5VLET3weH/XMLeWmclwfoGn4Nxi2mwVibB+OZBVJ9tDqvg==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging.Configuration": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.Debug": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "8+TZBnV5fgBXoVNJ5ROSErUwYogk4hOgV7c2HWK1u5cqKGmiUTUn7+KqZ35iQu8e/B7Ykccyz5OTjdXcidNZ9g==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.EventLog": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "0RE4951AzQ+YD4gVrvbq0BhdsiBgSDo44yM7+QBZ2mrmMJeNjY+teCIYfUjqDPVYnKs0HR6SkkhgrX1YgXZq3Q==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "System.Diagnostics.EventLog": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.EventSource": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "85SAPwXhJtdBInzN2k7SChiFiBGh3KOWay5AfoY+GREF6P7oZA98+ST2p7Z9384iLKYjkZSKIZ/FqIO5aojtNw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, "Microsoft.Extensions.ObjectPool": { "type": "Transitive", "resolved": "10.0.10", @@ -647,8 +530,8 @@ }, "System.Diagnostics.EventLog": { "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" + "resolved": "9.0.11", + "contentHash": "2Us/NchH6SM69NYWzf8NRyeftdv3ILso8LMiMdAjT7ECTiZKzddiXWhAyQj6ZzbddoAOHS9GdlPbAAkwCPID3Q==" }, "System.IdentityModel.Tokens.Jwt": { "type": "Transitive", @@ -692,18 +575,6 @@ "resolved": "8.0.0", "contentHash": "7mu9v0QDv66ar3DpGSZHg9NuNcxDaaAcnMULuZlaTpP9+hwXhrxNGsF5GmLkSHxFdb5bBc1TzeujsRgTrPWi+Q==" }, - "Backbone.BuildingBlocks.Application": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Common.Infrastructure": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "MediatR": "[12.5.0, 12.5.0]", - "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", - "Polly": "[8.7.0, 8.7.0]", - "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" - } - }, "Backbone.BuildingBlocks.Application.Abstractions": { "type": "Project", "dependencies": { @@ -749,16 +620,6 @@ "Serilog": "[4.4.0, 4.4.0]" } }, - "Backbone.Common.Infrastructure": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.DevelopmentKit.Identity": "[1.0.0, )", - "Dapper": "[2.1.79, 2.1.79]", - "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", - "Polly": "[8.7.0, 8.7.0]" - } - }, "Backbone.DevelopmentKit.Identity": { "type": "Project", "dependencies": { @@ -766,13 +627,10 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Challenges.Application": { + "Backbone.Modules.Challenges.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Challenges.Domain": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Challenges.Domain": "[1.0.0, )" } }, "Backbone.Modules.Challenges.Domain": { @@ -825,12 +683,6 @@ "Azure.Storage.Common": "12.28.0" } }, - "Dapper": { - "type": "CentralTransitive", - "requested": "[2.1.79, 2.1.79]", - "resolved": "2.1.79", - "contentHash": "8YijbzgTfmqmQOnVNorYM6K++pxqnW3nJ4aC1sRHzxUA2CcuoJ9gsTem3kgBnPRMc38zZHl4Esb6hAezXIEEuw==" - }, "EFCore.BulkExtensions.Core": { "type": "CentralTransitive", "requested": "[10.0.1, 10.0.1]", @@ -864,22 +716,6 @@ "NetTopologySuite.IO.SqlServerBytes": "2.1.0" } }, - "FluentValidation": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" - }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", @@ -900,16 +736,6 @@ "Google.Apis.Storage.v1": "[1.74.0.4115, 2.0.0)" } }, - "MediatR": { - "type": "CentralTransitive", - "requested": "[12.5.0, 12.5.0]", - "resolved": "12.5.0", - "contentHash": "vqm2H8/nqL5NAJHPhsG1JOPwfkmbVrPyh4svdoRzu+uZh6Ex7PRoHBGsLYC0/RWCEJFqD1ohHNpteQvql9OktA==", - "dependencies": { - "MediatR.Contracts": "[2.0.1, 3.0.0)", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" - } - }, "MediatR.Contracts": { "type": "CentralTransitive", "requested": "[2.0.1, 2.0.1]", @@ -986,18 +812,6 @@ "Microsoft.Extensions.Configuration.Abstractions": "10.0.10" } }, - "Microsoft.Extensions.Configuration.Json": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "uvJ6sHwjgrkMEJOgiC76G0mcZGXerwyyWkwX34EOjCbxKG6TCtfAoqDKAMsCvEBf9HxjlGQEgqsSMOGCmGBf+A==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.FileExtensions": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10" - } - }, "Microsoft.Extensions.DependencyInjection": { "type": "CentralTransitive", "requested": "[10.0.10, 10.0.10]", @@ -1027,36 +841,6 @@ "Microsoft.Extensions.Telemetry.Abstractions": "10.8.0" } }, - "Microsoft.Extensions.Hosting": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "tL9FkfV64GPUDSPvwrgyw42LVzsnVAnyrqJEuZVJbODgrQ3eL63zmzEcVWoCHzfgqUhWggzbgAyUCnz/zfI3Pg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.Binder": "10.0.10", - "Microsoft.Extensions.Configuration.CommandLine": "10.0.10", - "Microsoft.Extensions.Configuration.EnvironmentVariables": "10.0.10", - "Microsoft.Extensions.Configuration.FileExtensions": "10.0.10", - "Microsoft.Extensions.Configuration.Json": "10.0.10", - "Microsoft.Extensions.Configuration.UserSecrets": "10.0.10", - "Microsoft.Extensions.DependencyInjection": "10.0.10", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Diagnostics": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Physical": "10.0.10", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging.Configuration": "10.0.10", - "Microsoft.Extensions.Logging.Console": "10.0.10", - "Microsoft.Extensions.Logging.Debug": "10.0.10", - "Microsoft.Extensions.Logging.EventLog": "10.0.10", - "Microsoft.Extensions.Logging.EventSource": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, "Microsoft.Extensions.Hosting.Abstractions": { "type": "CentralTransitive", "requested": "[10.0.10, 10.0.10]", @@ -1136,16 +920,6 @@ "System.Threading.RateLimiting": "8.0.0" } }, - "ReHackt.Extensions.Options.Validation": { - "type": "CentralTransitive", - "requested": "[10.0.1, 10.0.1]", - "resolved": "10.0.1", - "contentHash": "/mjsZpv8DLDeHns99iDROqFa0eJ/5NU4X2kMMt3VTfVf3xYWQNLPoTs//x+wKXWYSo+pdXkA+ASvaJT/pifB2Q==", - "dependencies": { - "Microsoft.Extensions.Hosting": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, "Serilog": { "type": "CentralTransitive", "requested": "[4.4.0, 4.4.0]", @@ -1193,8 +967,8 @@ }, "System.Diagnostics.EventLog": { "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" + "resolved": "9.0.11", + "contentHash": "2Us/NchH6SM69NYWzf8NRyeftdv3ILso8LMiMdAjT7ECTiZKzddiXWhAyQj6ZzbddoAOHS9GdlPbAAkwCPID3Q==" }, "System.Management": { "type": "Transitive", @@ -1244,8 +1018,8 @@ }, "System.Diagnostics.EventLog": { "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" + "resolved": "9.0.11", + "contentHash": "2Us/NchH6SM69NYWzf8NRyeftdv3ILso8LMiMdAjT7ECTiZKzddiXWhAyQj6ZzbddoAOHS9GdlPbAAkwCPID3Q==" }, "System.Management": { "type": "Transitive", @@ -1295,8 +1069,8 @@ }, "System.Diagnostics.EventLog": { "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" + "resolved": "9.0.11", + "contentHash": "2Us/NchH6SM69NYWzf8NRyeftdv3ILso8LMiMdAjT7ECTiZKzddiXWhAyQj6ZzbddoAOHS9GdlPbAAkwCPID3Q==" }, "System.Management": { "type": "Transitive", @@ -1346,8 +1120,8 @@ }, "System.Diagnostics.EventLog": { "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" + "resolved": "9.0.11", + "contentHash": "2Us/NchH6SM69NYWzf8NRyeftdv3ILso8LMiMdAjT7ECTiZKzddiXWhAyQj6ZzbddoAOHS9GdlPbAAkwCPID3Q==" }, "System.Management": { "type": "Transitive", diff --git a/Modules/Challenges/src/Challenges.Module/ApplicationConfiguration.cs b/Modules/Challenges/src/Challenges.Module/ApplicationConfiguration.cs new file mode 100644 index 0000000000..04896a7a40 --- /dev/null +++ b/Modules/Challenges/src/Challenges.Module/ApplicationConfiguration.cs @@ -0,0 +1,3 @@ +namespace Backbone.Modules.Challenges.Module; + +public class ApplicationConfiguration; diff --git a/Modules/Challenges/src/Challenges.Module/ApplicationServiceCollectionExtensions.cs b/Modules/Challenges/src/Challenges.Module/ApplicationServiceCollectionExtensions.cs new file mode 100644 index 0000000000..42fd556d36 --- /dev/null +++ b/Modules/Challenges/src/Challenges.Module/ApplicationServiceCollectionExtensions.cs @@ -0,0 +1,20 @@ +using Backbone.BuildingBlocks.Application.MediatR; +using Backbone.Modules.Challenges.Module.Features.Challenges.CreateChallenge; +using FluentValidation; +using Microsoft.Extensions.DependencyInjection; + +namespace Backbone.Modules.Challenges.Module; + +internal static class ApplicationServiceCollectionExtensions +{ + public static void AddApplication(this IServiceCollection services) + { + services.AddMediatR(c => c + .RegisterServicesFromAssemblyContaining() + .AddOpenBehavior(typeof(LoggingBehavior<,>)) + .AddOpenBehavior(typeof(RequestValidationBehavior<,>)) + .AddOpenBehavior(typeof(QuotaEnforcerBehavior<,>)) + ); + services.AddValidatorsFromAssembly(typeof(CreateChallengeCommandValidator).Assembly); + } +} diff --git a/Modules/Challenges/src/Challenges.Module/Challenges.Module.csproj b/Modules/Challenges/src/Challenges.Module/Challenges.Module.csproj index 4cd480d459..592ee51117 100644 --- a/Modules/Challenges/src/Challenges.Module/Challenges.Module.csproj +++ b/Modules/Challenges/src/Challenges.Module/Challenges.Module.csproj @@ -3,7 +3,7 @@ - + @@ -11,6 +11,7 @@ + diff --git a/Modules/Challenges/src/Challenges.Module/ChallengesEndpointExtensions.cs b/Modules/Challenges/src/Challenges.Module/ChallengesEndpointExtensions.cs new file mode 100644 index 0000000000..12bab4f170 --- /dev/null +++ b/Modules/Challenges/src/Challenges.Module/ChallengesEndpointExtensions.cs @@ -0,0 +1,18 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.Modules.Challenges.Module.Features.Challenges.CreateChallenge; +using Backbone.Modules.Challenges.Module.Features.Challenges.GetChallengeById; +using Microsoft.AspNetCore.Routing; +using OpenIddict.Validation.AspNetCore; + +namespace Backbone.Modules.Challenges.Module; + +public static class ChallengesEndpointExtensions +{ + public static IEndpointRouteBuilder MapChallengesEndpoints(this IEndpointRouteBuilder endpoints) + { + var group = endpoints.MapVersionedEndpointGroup("Challenges", "Challenges", 2, OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme); + group.MapCreateChallengeEndpoint(); + group.MapGetChallengeByIdEndpoint(); + return endpoints; + } +} diff --git a/Modules/Challenges/src/Challenges.Module/ChallengesModule.cs b/Modules/Challenges/src/Challenges.Module/ChallengesModule.cs index 0fd0584415..365e190182 100644 --- a/Modules/Challenges/src/Challenges.Module/ChallengesModule.cs +++ b/Modules/Challenges/src/Challenges.Module/ChallengesModule.cs @@ -1,8 +1,6 @@ using Backbone.BuildingBlocks.API.Extensions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Module; -using Backbone.Modules.Challenges.Application; -using Backbone.Modules.Challenges.Application.Extensions; using Backbone.Modules.Challenges.Infrastructure; using Backbone.Modules.Challenges.Infrastructure.Persistence; using Microsoft.Extensions.Configuration; diff --git a/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Command.cs b/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Command.cs new file mode 100644 index 0000000000..d07ce6dfeb --- /dev/null +++ b/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Command.cs @@ -0,0 +1,6 @@ +using Backbone.Modules.Challenges.Module.Features.Challenges.Shared; +using MediatR; + +namespace Backbone.Modules.Challenges.Module.Features.Challenges.CreateChallenge; + +public class CreateChallengeCommand : IRequest; diff --git a/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Endpoint.cs b/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Endpoint.cs new file mode 100644 index 0000000000..d8a8e43ccf --- /dev/null +++ b/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Endpoint.cs @@ -0,0 +1,28 @@ +using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.Modules.Challenges.Module.Features.Challenges.Shared; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Challenges.Module.Features.Challenges.CreateChallenge; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapCreateChallengeEndpoint(this RouteGroupBuilder group) + { + group.MapPost("", Handle) + .AllowAnonymous() + .Produces>(StatusCodes.Status201Created) + .Produces(StatusCodes.Status400BadRequest); + + return group; + } + + private static async Task Handle(HttpContext context, IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new CreateChallengeCommand(), cancellationToken); + return EnvelopeHttpResults.CreatedAtRoute(GetChallengeById.Endpoint.ROUTE_NAME, new { v = context.Request.RouteValues["v"], id = response.Id }, response); + } +} diff --git a/Modules/Challenges/src/Challenges.Application/Challenges/Commands/CreateChallenge/Handler.cs b/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Handler.cs similarity index 79% rename from Modules/Challenges/src/Challenges.Application/Challenges/Commands/CreateChallenge/Handler.cs rename to Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Handler.cs index 9567c9f48e..5ceeb3f2d3 100644 --- a/Modules/Challenges/src/Challenges.Application/Challenges/Commands/CreateChallenge/Handler.cs +++ b/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Handler.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; -using Backbone.Modules.Challenges.Application.Challenges.DTOs; -using Backbone.Modules.Challenges.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Challenges.Module.Features.Challenges.Shared; +using Backbone.Modules.Challenges.Abstractions; using Backbone.Modules.Challenges.Domain.Entities; using MediatR; -namespace Backbone.Modules.Challenges.Application.Challenges.Commands.CreateChallenge; +namespace Backbone.Modules.Challenges.Module.Features.Challenges.CreateChallenge; public class Handler : IRequestHandler { diff --git a/Modules/Challenges/src/Challenges.Application/Challenges/Commands/CreateChallenge/Validators.cs b/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Validator.cs similarity index 57% rename from Modules/Challenges/src/Challenges.Application/Challenges/Commands/CreateChallenge/Validators.cs rename to Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Validator.cs index 0bbcf06227..d48ffd01be 100644 --- a/Modules/Challenges/src/Challenges.Application/Challenges/Commands/CreateChallenge/Validators.cs +++ b/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Validator.cs @@ -1,5 +1,5 @@ using FluentValidation; -namespace Backbone.Modules.Challenges.Application.Challenges.Commands.CreateChallenge; +namespace Backbone.Modules.Challenges.Module.Features.Challenges.CreateChallenge; public class CreateChallengeCommandValidator : AbstractValidator; diff --git a/Modules/Challenges/src/Challenges.Application/Challenges/Commands/DeleteChallengesOfIdentity/DeleteChallengesOfIdentityCommand.cs b/Modules/Challenges/src/Challenges.Module/Features/Challenges/DeleteChallengesOfIdentity/Command.cs similarity index 51% rename from Modules/Challenges/src/Challenges.Application/Challenges/Commands/DeleteChallengesOfIdentity/DeleteChallengesOfIdentityCommand.cs rename to Modules/Challenges/src/Challenges.Module/Features/Challenges/DeleteChallengesOfIdentity/Command.cs index 20282e673c..295a8e00dd 100644 --- a/Modules/Challenges/src/Challenges.Application/Challenges/Commands/DeleteChallengesOfIdentity/DeleteChallengesOfIdentityCommand.cs +++ b/Modules/Challenges/src/Challenges.Module/Features/Challenges/DeleteChallengesOfIdentity/Command.cs @@ -1,6 +1,6 @@ -using MediatR; +using MediatR; -namespace Backbone.Modules.Challenges.Application.Challenges.Commands.DeleteChallengesOfIdentity; +namespace Backbone.Modules.Challenges.Module.Features.Challenges.DeleteChallengesOfIdentity; public class DeleteChallengesOfIdentityCommand : IRequest { diff --git a/Modules/Challenges/src/Challenges.Application/Challenges/Commands/DeleteChallengesOfIdentity/Handler.cs b/Modules/Challenges/src/Challenges.Module/Features/Challenges/DeleteChallengesOfIdentity/Handler.cs similarity index 75% rename from Modules/Challenges/src/Challenges.Application/Challenges/Commands/DeleteChallengesOfIdentity/Handler.cs rename to Modules/Challenges/src/Challenges.Module/Features/Challenges/DeleteChallengesOfIdentity/Handler.cs index 058329db15..aedfcfb63c 100644 --- a/Modules/Challenges/src/Challenges.Application/Challenges/Commands/DeleteChallengesOfIdentity/Handler.cs +++ b/Modules/Challenges/src/Challenges.Module/Features/Challenges/DeleteChallengesOfIdentity/Handler.cs @@ -1,8 +1,8 @@ -using Backbone.Modules.Challenges.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Challenges.Abstractions; using Backbone.Modules.Challenges.Domain.Entities; using MediatR; -namespace Backbone.Modules.Challenges.Application.Challenges.Commands.DeleteChallengesOfIdentity; +namespace Backbone.Modules.Challenges.Module.Features.Challenges.DeleteChallengesOfIdentity; public class Handler : IRequestHandler { diff --git a/Modules/Challenges/src/Challenges.Application/Challenges/Commands/DeleteChallengesOfIdentity/Validator.cs b/Modules/Challenges/src/Challenges.Module/Features/Challenges/DeleteChallengesOfIdentity/Validator.cs similarity index 65% rename from Modules/Challenges/src/Challenges.Application/Challenges/Commands/DeleteChallengesOfIdentity/Validator.cs rename to Modules/Challenges/src/Challenges.Module/Features/Challenges/DeleteChallengesOfIdentity/Validator.cs index 814f924bd8..fc99f62ed4 100644 --- a/Modules/Challenges/src/Challenges.Application/Challenges/Commands/DeleteChallengesOfIdentity/Validator.cs +++ b/Modules/Challenges/src/Challenges.Module/Features/Challenges/DeleteChallengesOfIdentity/Validator.cs @@ -1,8 +1,8 @@ -using Backbone.BuildingBlocks.Application.Extensions; +using Backbone.BuildingBlocks.Application.Extensions; using Backbone.DevelopmentKit.Identity.ValueObjects; using FluentValidation; -namespace Backbone.Modules.Challenges.Application.Challenges.Commands.DeleteChallengesOfIdentity; +namespace Backbone.Modules.Challenges.Module.Features.Challenges.DeleteChallengesOfIdentity; public class Validator : AbstractValidator { diff --git a/Modules/Challenges/src/Challenges.Module/Features/Challenges/ExecuteHousekeeping/Command.cs b/Modules/Challenges/src/Challenges.Module/Features/Challenges/ExecuteHousekeeping/Command.cs new file mode 100644 index 0000000000..aeccc04062 --- /dev/null +++ b/Modules/Challenges/src/Challenges.Module/Features/Challenges/ExecuteHousekeeping/Command.cs @@ -0,0 +1,5 @@ +using MediatR; + +namespace Backbone.Modules.Challenges.Module.Features.Challenges.ExecuteHousekeeping; + +public class ExecuteHousekeepingCommand : IRequest; diff --git a/Modules/Challenges/src/Challenges.Application/Challenges/Commands/ExecuteHousekeeping/Handler.cs b/Modules/Challenges/src/Challenges.Module/Features/Challenges/ExecuteHousekeeping/Handler.cs similarity index 76% rename from Modules/Challenges/src/Challenges.Application/Challenges/Commands/ExecuteHousekeeping/Handler.cs rename to Modules/Challenges/src/Challenges.Module/Features/Challenges/ExecuteHousekeeping/Handler.cs index 8b722ecb5c..ac5826da58 100644 --- a/Modules/Challenges/src/Challenges.Application/Challenges/Commands/ExecuteHousekeeping/Handler.cs +++ b/Modules/Challenges/src/Challenges.Module/Features/Challenges/ExecuteHousekeeping/Handler.cs @@ -1,9 +1,9 @@ -using Backbone.BuildingBlocks.Application.Housekeeping; -using Backbone.Modules.Challenges.Application.Infrastructure.Persistence.Repository; +using Backbone.BuildingBlocks.Application.Housekeeping; +using Backbone.Modules.Challenges.Abstractions; using Backbone.Modules.Challenges.Domain.Entities; using MediatR; -namespace Backbone.Modules.Challenges.Application.Challenges.Commands.ExecuteHousekeeping; +namespace Backbone.Modules.Challenges.Module.Features.Challenges.ExecuteHousekeeping; public class Handler : IRequestHandler { diff --git a/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Endpoint.cs b/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Endpoint.cs new file mode 100644 index 0000000000..e1fd0cbba5 --- /dev/null +++ b/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Endpoint.cs @@ -0,0 +1,32 @@ +using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.Modules.Challenges.Module.Features.Challenges.Shared; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Challenges.Module.Features.Challenges.GetChallengeById; + +internal static class Endpoint +{ + public const string ROUTE_NAME = "ConsumerApi.Challenges.GetById"; + + public static RouteGroupBuilder MapGetChallengeByIdEndpoint(this RouteGroupBuilder group) + { + group.MapGet("{id}", Handle) + // Name the Location target without adding an OpenAPI operationId. + .WithMetadata(new RouteNameMetadata(ROUTE_NAME)) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status404NotFound); + + return group; + } + + private static async Task Handle(string id, IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new GetChallengeByIdQuery { Id = id }, cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Challenges/src/Challenges.Application/Challenges/Queries/GetChallengeById/Handler.cs b/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Handler.cs similarity index 77% rename from Modules/Challenges/src/Challenges.Application/Challenges/Queries/GetChallengeById/Handler.cs rename to Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Handler.cs index d0ae6024c9..229b4915ff 100644 --- a/Modules/Challenges/src/Challenges.Application/Challenges/Queries/GetChallengeById/Handler.cs +++ b/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Handler.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.Modules.Challenges.Application.Challenges.DTOs; -using Backbone.Modules.Challenges.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Challenges.Module.Features.Challenges.Shared; +using Backbone.Modules.Challenges.Abstractions; using Backbone.Modules.Challenges.Domain.Ids; using MediatR; -namespace Backbone.Modules.Challenges.Application.Challenges.Queries.GetChallengeById; +namespace Backbone.Modules.Challenges.Module.Features.Challenges.GetChallengeById; public class Handler : IRequestHandler { diff --git a/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Query.cs b/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Query.cs new file mode 100644 index 0000000000..aaf2ff125b --- /dev/null +++ b/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Query.cs @@ -0,0 +1,9 @@ +using Backbone.Modules.Challenges.Module.Features.Challenges.Shared; +using MediatR; + +namespace Backbone.Modules.Challenges.Module.Features.Challenges.GetChallengeById; + +public class GetChallengeByIdQuery : IRequest +{ + public required string Id { get; init; } +} diff --git a/Modules/Challenges/src/Challenges.Application/Challenges/Queries/GetChallengeById/Validator.cs b/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Validator.cs similarity index 63% rename from Modules/Challenges/src/Challenges.Application/Challenges/Queries/GetChallengeById/Validator.cs rename to Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Validator.cs index eb3fa18332..fb09833b26 100644 --- a/Modules/Challenges/src/Challenges.Application/Challenges/Queries/GetChallengeById/Validator.cs +++ b/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Validator.cs @@ -1,8 +1,8 @@ -using Backbone.BuildingBlocks.Application.Extensions; +using Backbone.BuildingBlocks.Application.Extensions; using Backbone.Modules.Challenges.Domain.Ids; using FluentValidation; -namespace Backbone.Modules.Challenges.Application.Challenges.Queries.GetChallengeById; +namespace Backbone.Modules.Challenges.Module.Features.Challenges.GetChallengeById; public class Validator : AbstractValidator { diff --git a/Modules/Challenges/src/Challenges.Application/Challenges/DTOs/ChallengeDTO.cs b/Modules/Challenges/src/Challenges.Module/Features/Challenges/Shared/ChallengeDTO.cs similarity index 87% rename from Modules/Challenges/src/Challenges.Application/Challenges/DTOs/ChallengeDTO.cs rename to Modules/Challenges/src/Challenges.Module/Features/Challenges/Shared/ChallengeDTO.cs index 9081a20c46..4b60d10972 100644 --- a/Modules/Challenges/src/Challenges.Application/Challenges/DTOs/ChallengeDTO.cs +++ b/Modules/Challenges/src/Challenges.Module/Features/Challenges/Shared/ChallengeDTO.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Challenges.Domain.Entities; -namespace Backbone.Modules.Challenges.Application.Challenges.DTOs; +namespace Backbone.Modules.Challenges.Module.Features.Challenges.Shared; public class ChallengeDTO { diff --git a/Modules/Challenges/src/Challenges.Application/Identities/IdentityDeleter.cs b/Modules/Challenges/src/Challenges.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs similarity index 75% rename from Modules/Challenges/src/Challenges.Application/Identities/IdentityDeleter.cs rename to Modules/Challenges/src/Challenges.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs index bb03eed697..8dd079fd34 100644 --- a/Modules/Challenges/src/Challenges.Application/Identities/IdentityDeleter.cs +++ b/Modules/Challenges/src/Challenges.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs @@ -1,9 +1,9 @@ -using Backbone.BuildingBlocks.Application.Identities; +using Backbone.BuildingBlocks.Application.Identities; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Challenges.Application.Challenges.Commands.DeleteChallengesOfIdentity; +using Backbone.Modules.Challenges.Module.Features.Challenges.DeleteChallengesOfIdentity; using MediatR; -namespace Backbone.Modules.Challenges.Application.Identities; +namespace Backbone.Modules.Challenges.Module.Features.Identities.DeleteIdentity; public class IdentityDeleter : IIdentityDeleter { diff --git a/Modules/Challenges/src/Challenges.Module/packages.lock.json b/Modules/Challenges/src/Challenges.Module/packages.lock.json index 8e5c3132ec..bf2f3ee0ef 100644 --- a/Modules/Challenges/src/Challenges.Module/packages.lock.json +++ b/Modules/Challenges/src/Challenges.Module/packages.lock.json @@ -2,6 +2,16 @@ "version": 2, "dependencies": { "net10.0": { + "FluentValidation.DependencyInjectionExtensions": { + "type": "Direct", + "requested": "[12.1.1, 12.1.1]", + "resolved": "12.1.1", + "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", + "dependencies": { + "FluentValidation": "12.1.1", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" + } + }, "ReHackt.Extensions.Options.Validation": { "type": "Direct", "requested": "[10.0.1, 10.0.1]", @@ -1216,13 +1226,10 @@ "Backbone.BuildingBlocks.Domain": "[1.0.0, )" } }, - "Backbone.Modules.Challenges.Application": { + "Backbone.Modules.Challenges.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Challenges.Domain": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Challenges.Domain": "[1.0.0, )" } }, "Backbone.Modules.Challenges.Domain": { @@ -1237,7 +1244,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Challenges.Application": "[1.0.0, )", + "Backbone.Modules.Challenges.Abstractions": "[1.0.0, )", "Backbone.Modules.Challenges.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1474,16 +1481,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", diff --git a/Modules/Challenges/test/Challenges.Application.Tests/Challenges.Application.Tests.csproj b/Modules/Challenges/test/Challenges.Module.Tests/Challenges.Module.Tests.csproj similarity index 88% rename from Modules/Challenges/test/Challenges.Application.Tests/Challenges.Application.Tests.csproj rename to Modules/Challenges/test/Challenges.Module.Tests/Challenges.Module.Tests.csproj index 1a478c4376..3a8a746dd6 100644 --- a/Modules/Challenges/test/Challenges.Application.Tests/Challenges.Application.Tests.csproj +++ b/Modules/Challenges/test/Challenges.Module.Tests/Challenges.Module.Tests.csproj @@ -16,7 +16,7 @@ - + diff --git a/Modules/Challenges/test/Challenges.Application.Tests/Tests/Challenges/Commands/DeleteChallengesOfIdentity/ValidatorTests.cs b/Modules/Challenges/test/Challenges.Module.Tests/Tests/Challenges/Commands/DeleteChallengesOfIdentity/ValidatorTests.cs similarity index 81% rename from Modules/Challenges/test/Challenges.Application.Tests/Tests/Challenges/Commands/DeleteChallengesOfIdentity/ValidatorTests.cs rename to Modules/Challenges/test/Challenges.Module.Tests/Tests/Challenges/Commands/DeleteChallengesOfIdentity/ValidatorTests.cs index 757160f066..b510b9e76b 100644 --- a/Modules/Challenges/test/Challenges.Application.Tests/Tests/Challenges/Commands/DeleteChallengesOfIdentity/ValidatorTests.cs +++ b/Modules/Challenges/test/Challenges.Module.Tests/Tests/Challenges/Commands/DeleteChallengesOfIdentity/ValidatorTests.cs @@ -1,8 +1,8 @@ -using Backbone.Modules.Challenges.Application.Challenges.Commands.DeleteChallengesOfIdentity; +using Backbone.Modules.Challenges.Module.Features.Challenges.DeleteChallengesOfIdentity; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Challenges.Application.Tests.Tests.Challenges.Commands.DeleteChallengesOfIdentity; +namespace Backbone.Modules.Challenges.Module.Tests.Tests.Challenges.Commands.DeleteChallengesOfIdentity; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Challenges/test/Challenges.Application.Tests/Tests/Challenges/Queries/GetChallengeById/ValidatorTests.cs b/Modules/Challenges/test/Challenges.Module.Tests/Tests/Challenges/Queries/GetChallengeById/ValidatorTests.cs similarity index 75% rename from Modules/Challenges/test/Challenges.Application.Tests/Tests/Challenges/Queries/GetChallengeById/ValidatorTests.cs rename to Modules/Challenges/test/Challenges.Module.Tests/Tests/Challenges/Queries/GetChallengeById/ValidatorTests.cs index 3f416d79d4..7199224a46 100644 --- a/Modules/Challenges/test/Challenges.Application.Tests/Tests/Challenges/Queries/GetChallengeById/ValidatorTests.cs +++ b/Modules/Challenges/test/Challenges.Module.Tests/Tests/Challenges/Queries/GetChallengeById/ValidatorTests.cs @@ -1,10 +1,10 @@ -using Backbone.Modules.Challenges.Application.Challenges.Queries.GetChallengeById; +using Backbone.Modules.Challenges.Module.Features.Challenges.GetChallengeById; using Backbone.Modules.Challenges.Domain.Ids; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -using Validator = Backbone.Modules.Challenges.Application.Challenges.Queries.GetChallengeById.Validator; +using Validator = Backbone.Modules.Challenges.Module.Features.Challenges.GetChallengeById.Validator; -namespace Backbone.Modules.Challenges.Application.Tests.Tests.Challenges.Queries.GetChallengeById; +namespace Backbone.Modules.Challenges.Module.Tests.Tests.Challenges.Queries.GetChallengeById; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Challenges/test/Challenges.Application.Tests/Tests/Identities/IdentityDeleterTests.cs b/Modules/Challenges/test/Challenges.Module.Tests/Tests/Identities/IdentityDeleterTests.cs similarity index 82% rename from Modules/Challenges/test/Challenges.Application.Tests/Tests/Identities/IdentityDeleterTests.cs rename to Modules/Challenges/test/Challenges.Module.Tests/Tests/Identities/IdentityDeleterTests.cs index 236dbacbc0..124b523791 100644 --- a/Modules/Challenges/test/Challenges.Application.Tests/Tests/Identities/IdentityDeleterTests.cs +++ b/Modules/Challenges/test/Challenges.Module.Tests/Tests/Identities/IdentityDeleterTests.cs @@ -1,10 +1,10 @@ -using Backbone.BuildingBlocks.Application.Identities; -using Backbone.Modules.Challenges.Application.Challenges.Commands.DeleteChallengesOfIdentity; -using Backbone.Modules.Challenges.Application.Identities; +using Backbone.BuildingBlocks.Application.Identities; +using Backbone.Modules.Challenges.Module.Features.Challenges.DeleteChallengesOfIdentity; +using Backbone.Modules.Challenges.Module.Features.Identities.DeleteIdentity; using FakeItEasy; using MediatR; -namespace Backbone.Modules.Challenges.Application.Tests.Tests.Identities; +namespace Backbone.Modules.Challenges.Module.Tests.Tests.Identities; public class IdentityDeleterTests : AbstractTestsBase { diff --git a/Modules/Challenges/test/Challenges.Application.Tests/packages.lock.json b/Modules/Challenges/test/Challenges.Module.Tests/packages.lock.json similarity index 58% rename from Modules/Challenges/test/Challenges.Application.Tests/packages.lock.json rename to Modules/Challenges/test/Challenges.Module.Tests/packages.lock.json index 86d86b5126..c0a81c80e6 100644 --- a/Modules/Challenges/test/Challenges.Application.Tests/packages.lock.json +++ b/Modules/Challenges/test/Challenges.Module.Tests/packages.lock.json @@ -38,6 +38,22 @@ "xunit.v3.core.mtp-v2": "[3.2.2]" } }, + "Asp.Versioning.Abstractions": { + "type": "Transitive", + "resolved": "10.1.0", + "contentHash": "RwdgC5O0baZ4pt30pAKKPQHq2CV4unBKA4HWoTeu7NY9ZwXM0dWYGf1Ipc5GK0eFBe9cMeqz4pGpPncMz4/ZNQ==", + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.0" + } + }, + "Asp.Versioning.Http": { + "type": "Transitive", + "resolved": "10.0.1", + "contentHash": "g0ayV/9ho3tGgooC6eF5p1063I1WzlxFJDYQrigcGnW+mLvui6eXrcW5hzTHhQREroUR3ZwXQrIN2SAIoi+KDw==", + "dependencies": { + "Asp.Versioning.Abstractions": "10.1.0" + } + }, "AWSSDK.Core": { "type": "Transitive", "resolved": "4.0.100.9", @@ -66,16 +82,6 @@ "System.Memory.Data": "1.0.2" } }, - "Azure.Identity": { - "type": "Transitive", - "resolved": "1.17.1", - "contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Microsoft.Identity.Client": "4.78.0", - "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" - } - }, "Azure.Storage.Common": { "type": "Transitive", "resolved": "12.28.0", @@ -227,6 +233,11 @@ "Grpc.Core.Api": "2.71.0" } }, + "libsodium": { + "type": "Transitive", + "resolved": "1.0.22", + "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" + }, "MedallionTopologicalSort": { "type": "Transitive", "resolved": "1.0.0", @@ -250,6 +261,25 @@ "Microsoft.AspNetCore.Cryptography.Internal": "10.0.10" } }, + "Microsoft.AspNetCore.DataProtection": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "5sfrNrBShTlJeXvWNxjPS7ilLY4H6MICZPMZr/2vjoDoBH5Z8sQYJwbhulqfXh4yIpxIto0TcmOQHOElvpq+iQ==", + "dependencies": { + "Microsoft.AspNetCore.Cryptography.Internal": "10.0.10", + "Microsoft.AspNetCore.DataProtection.Abstractions": "10.0.10", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", + "Microsoft.Extensions.Logging.Abstractions": "10.0.10", + "Microsoft.Extensions.Options": "10.0.10", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "Microsoft.AspNetCore.DataProtection.Abstractions": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "q2RNx0N/qrsU+JgbPE78I9pu5ekwguitAFVoeE1NCgxtkUTguvf7oTzBnn42zSQxuugJ4fmj0RSarob8Rvorrg==" + }, "Microsoft.Azure.Amqp": { "type": "Transitive", "resolved": "2.7.0", @@ -260,6 +290,11 @@ "resolved": "10.0.9", "contentHash": "Aq7M8lG6BrHeatqKqncVm9m55ec34k6nnfPRLe/PvGg+b/pAsRM2ejofeKmCLjTXMa+5NGXm382f8CG/D5WDow==" }, + "Microsoft.Bcl.Cryptography": { + "type": "Transitive", + "resolved": "10.0.2", + "contentHash": "LG9Yll3B5aNpxv0+D47g6LiOiKBIlodhcHdQwcYzo8VeexFLGqx5ymetmA2aBRyo9cCcWsQWrFsdbsr8LvmWDw==" + }, "Microsoft.CodeCoverage": { "type": "Transitive", "resolved": "18.8.1", @@ -267,22 +302,34 @@ }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, + "Microsoft.Data.SqlClient.Extensions.Abstractions": { + "type": "Transitive", + "resolved": "7.0.2", + "contentHash": "Zx7z61fG2Nc6LdDn4jA7b5Aj1ABrljkOPRE31RvVUdjF6IgbG60leDUhMCafsnWFgaheiK3iqpLe+kbf5Z5L8Q==", + "dependencies": { + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)" + } + }, + "Microsoft.Data.SqlClient.Internal.Logging": { + "type": "Transitive", + "resolved": "7.0.2", + "contentHash": "iqgYBbGSVy/DIYWjzmQOa964Kn4rs4wW5vg2IamqVK0fQqfTiILVR5hMK27XWqoyONtAZs+VxH354cPJBtSnbg==" + }, "Microsoft.Data.SqlClient.SNI.runtime": { "type": "Transitive", "resolved": "6.0.2", @@ -329,6 +376,21 @@ "Microsoft.SqlServer.Types": "160.1000.6" } }, + "Microsoft.Extensions.AmbientMetadata.Application": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "/FYCIyhRLrDwIg29tB/21/Rp7XMaEP/gWR5Cxyi4GgWcN/v/XXUpU52yhQux0s2SQy1Z0C1wnhptCMvLaaT45Q==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.10", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10" + } + }, + "Microsoft.Extensions.ApiDescription.Server": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "NCWCGiwRwje8773yzPQhvucYnnfeR+ZoB1VRIrIMp4uaeUNw7jvEPHij3HIbwCDuNCrNcphA00KSAR9yD9qmbg==" + }, "Microsoft.Extensions.Caching.Abstractions": { "type": "Transitive", "resolved": "10.0.10", @@ -399,6 +461,14 @@ "Microsoft.Extensions.FileProviders.Physical": "10.0.10" } }, + "Microsoft.Extensions.DependencyInjection.AutoActivation": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "LXwOAsnrflu2ln+Bxj7y3Zc/Pn4HquCCRzW81oOIuRsM8F75TxwA/ZpSFZ5E1+YkVpndz7BcHY4ThFSjjA4vbQ==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10" + } + }, "Microsoft.Extensions.DependencyModel": { "type": "Transitive", "resolved": "10.0.10", @@ -423,6 +493,14 @@ "Microsoft.Extensions.Options": "10.0.10" } }, + "Microsoft.Extensions.Diagnostics.ExceptionSummarization": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "tXmzwQeWgiycaLOtvSFnz0TPkJxXTyZrkwSVPTr83FgSiMj3BD/8eIbvrpGi5rzc2AgfKyegKo1ntJlJFey1Zg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10" + } + }, "Microsoft.Extensions.Diagnostics.HealthChecks": { "type": "Transitive", "resolved": "10.0.10", @@ -462,6 +540,48 @@ "resolved": "10.0.10", "contentHash": "jSOCVxEwCd4Aq925kJVz1kSO1EpX2OHYKL04qVREXkDU7Ce3pVDdHPYm+fEy8y/th2kJf/DAstRHpJAqoNWP8w==" }, + "Microsoft.Extensions.Http": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "DuEBLw2y7ZBfilnaJtlge8f2M49932v43t7j1InceXVjcZzxNrSEkobYXdgZkXuPFnFbKcbWpAS+fZgYEW1BhA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", + "Microsoft.Extensions.Diagnostics": "10.0.10", + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.Extensions.Logging.Abstractions": "10.0.10", + "Microsoft.Extensions.Options": "10.0.10" + } + }, + "Microsoft.Extensions.Http.Diagnostics": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "2pYnolFkigH7N6A5WHdGx93iZ8dIhrBnu4ZkjvB6RwbHzYmIy/iXVe12pdrViNDdeBSmKZ5FA9YP/xhwLT7q7A==", + "dependencies": { + "Microsoft.Extensions.Http": "10.0.10", + "Microsoft.Extensions.Telemetry": "10.8.0" + } + }, + "Microsoft.Extensions.Http.Polly": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "ceKyX9V/C+mtapMfXQ0ClKRkxDHAW2AAJoDgTcsh7UdOteCQKB5wRTFgHJ82Lh/3O+UlPA47LRGEZkRxtz/lCA==", + "dependencies": { + "Microsoft.Extensions.Http": "10.0.10", + "Polly": "7.2.4", + "Polly.Extensions.Http": "3.0.0" + } + }, + "Microsoft.Extensions.Http.Resilience": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "XtbZyYVxSNn1Aj2Z0PA8yauS12hPszTWDZ3GtZ5Vww7Ai3d8Pm841jMBnTvoTf1t9mRf3eSB38V5KUWxH6/4oQ==", + "dependencies": { + "Microsoft.Extensions.Http.Diagnostics": "10.8.0", + "Microsoft.Extensions.ObjectPool": "10.0.10", + "Microsoft.Extensions.Resilience": "10.8.0" + } + }, "Microsoft.Extensions.Logging.Configuration": { "type": "Transitive", "resolved": "10.0.10", @@ -545,6 +665,31 @@ "resolved": "10.0.10", "contentHash": "5wu/GrYVd8mG2DVUw3vFJzF+O336TyTGg/Kmcgw9bfwYhCoFiV5lR5QeEmKecJyrW4W54nMfD3p3589E8a7czQ==" }, + "Microsoft.Extensions.Resilience": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "RH/gv0ZcCnQ3d30lxb8+T2o661TwZq/K5eMwp488goQLX1QYqWN3i8L8XlN9DhrqP2Zcf0EtsWaKpJO3yHDUTw==", + "dependencies": { + "Microsoft.Extensions.Diagnostics": "10.0.10", + "Microsoft.Extensions.Diagnostics.ExceptionSummarization": "10.8.0", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10", + "Microsoft.Extensions.Telemetry.Abstractions": "10.8.0", + "Polly.Extensions": "8.4.2", + "Polly.RateLimiting": "8.4.2" + } + }, + "Microsoft.Extensions.Telemetry": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "IIWjDZguUJt6yNld9J4V88xuOUzpC76wBwfnRJLRmacmyTTl9jA8+KP5PuHPi7CKz/Vk/q+lQYmobiopuzapzA==", + "dependencies": { + "Microsoft.Extensions.AmbientMetadata.Application": "10.8.0", + "Microsoft.Extensions.DependencyInjection.AutoActivation": "10.8.0", + "Microsoft.Extensions.Logging.Configuration": "10.0.10", + "Microsoft.Extensions.ObjectPool": "10.0.10", + "Microsoft.Extensions.Telemetry.Abstractions": "10.8.0" + } + }, "Microsoft.Extensions.Telemetry.Abstractions": { "type": "Transitive", "resolved": "10.8.0", @@ -575,50 +720,57 @@ }, "Microsoft.IdentityModel.Abstractions": { "type": "Transitive", - "resolved": "8.14.0", - "contentHash": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==" + "resolved": "8.19.2", + "contentHash": "HJbo/lnSfNHUfphPRT910poQc4T2/9+8svFLvzuaYHGAOJ2Tu+oEDqpX0BVP3BJ4OuUM1kylEKyaiX2fCAK3Cw==" }, "Microsoft.IdentityModel.JsonWebTokens": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "3Izi75UCUssvo8LPx3OVnEeZay58qaFicrtSnbtUt7q8qQi0gy46gh4V8VUTkMVMKXV6VMyjBVmeNNgeCUJuIw==", + "resolved": "8.19.2", + "contentHash": "ui3fuBT4fs8kdKfBthI4NzLYIBIneEVS8UrL1JVBzAn80UiKmngBBi0BEByE7n/9c+EElcfFlCMFFTqpkBSLNA==", "dependencies": { - "Microsoft.IdentityModel.Tokens": "7.7.1" + "Microsoft.IdentityModel.Tokens": "8.19.2" } }, "Microsoft.IdentityModel.Logging": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "BZNgSq/o8gsKExdYoBKPR65fdsxW0cTF8PsdqB8y011AGUJJW300S/ZIsEUD0+sOmGc003Gwv3FYbjrVjvsLNQ==", + "resolved": "8.19.2", + "contentHash": "r5YLDIxGOnkVJHrqXv/iD1FM1CgGrQOdriXuvuWvTPmKbnGANhEysq9XKmN6IHjf2a+9bAGEpnoRBsAQlvJU5w==", "dependencies": { - "Microsoft.IdentityModel.Abstractions": "7.7.1" + "Microsoft.IdentityModel.Abstractions": "8.19.2" } }, "Microsoft.IdentityModel.Protocols": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "h+fHHBGokepmCX+QZXJk4Ij8OApCb2n2ktoDkNX5CXteXsOxTHMNgjPGpAwdJMFvAL7TtGarUnk3o97NmBq2QQ==", + "resolved": "8.19.2", + "contentHash": "sGxSsSrZXNmca6D+jHH2rVRyo2nNRd/g4H9CFbPmLLq0xgoH1U0orLWE5minfijw7+zq49tBs7txenbfAErRoQ==", "dependencies": { - "Microsoft.IdentityModel.Tokens": "7.7.1" + "Microsoft.IdentityModel.Tokens": "8.19.2" } }, "Microsoft.IdentityModel.Protocols.OpenIdConnect": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "yT2Hdj8LpPbcT9C9KlLVxXl09C8zjFaVSaApdOwuecMuoV4s6Sof/mnTDz/+F/lILPIBvrWugR9CC7iRVZgbfQ==", + "resolved": "8.16.0", + "contentHash": "h4yVXyJsEBBX5lg2G5ftMsi5JzcNEGAzrNphA6DQ6eOd8P0s+cDCOyPwVTYLePZvJL5unbPvYIvzrbTXzFjXnQ==", "dependencies": { - "Microsoft.IdentityModel.Protocols": "7.7.1", - "System.IdentityModel.Tokens.Jwt": "7.7.1" + "Microsoft.IdentityModel.Protocols": "8.16.0", + "System.IdentityModel.Tokens.Jwt": "8.16.0" } }, "Microsoft.IdentityModel.Tokens": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "fQ0VVCba75lknUHGldi3iTKAYUQqbzp1Un8+d9cm9nON0Gs8NAkXddNg8iaUB0qi/ybtAmNWizTR4avdkCJ9pQ==", + "resolved": "8.19.2", + "contentHash": "GtPC1S02uH1gOO4fQ+zRysIicKmEXaYFP8PIkdJYXqMyruYhopre4ozVHp0XiDSA0+GJvOZH9prxCPvgBMg4Ww==", "dependencies": { - "Microsoft.IdentityModel.Logging": "7.7.1" + "Microsoft.Bcl.Cryptography": "10.0.2", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.IdentityModel.Logging": "8.19.2" } }, + "Microsoft.OpenApi": { + "type": "Transitive", + "resolved": "2.7.5", + "contentHash": "0FA67RSnRM4tcBKqiqVu/HPdZ9+QOKbmeRjxRUGTCjPU4C0bmUhd97Dso7Yild5P7nOV6GxJ2xrK0Kv/O9xp0w==" + }, "Microsoft.SqlServer.Server": { "type": "Transitive", "resolved": "1.0.0", @@ -706,11 +858,257 @@ "Microsoft.Extensions.Logging.Abstractions": "10.0.0" } }, + "OpenIddict": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "Dih/QGs3ptgvsioSOdvn/6KMy3el5ImMimp/9SV9VX/FqTT6CxBOGoxaukfJeVqgcxQrgge1vQvFp3kWtgOKGg==", + "dependencies": { + "OpenIddict.Abstractions": "7.6.0", + "OpenIddict.Client": "7.6.0", + "OpenIddict.Client.SystemIntegration": "7.6.0", + "OpenIddict.Client.SystemNetHttp": "7.6.0", + "OpenIddict.Client.WebIntegration": "7.6.0", + "OpenIddict.Core": "7.6.0", + "OpenIddict.Server": "7.6.0", + "OpenIddict.Validation": "7.6.0", + "OpenIddict.Validation.ServerIntegration": "7.6.0", + "OpenIddict.Validation.SystemNetHttp": "7.6.0" + } + }, + "OpenIddict.Abstractions": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "Fp2MUvm6wwsqk6+ieUM/3MTMlbCL1zwSXixM0xC22FgKcl5EQB7E0vV38IRI/rSF8UGgvC/AOjMOF6FoFyks8g==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", + "Microsoft.Extensions.Primitives": "10.0.10", + "Microsoft.IdentityModel.Tokens": "8.19.2" + } + }, + "OpenIddict.Client": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "X+Sg1wRKeVOeayJuZ4/0M74zXRENvXOAl2JRPF4MaEOoS9Pj6WCWMLriWS0wwEC1ODxQmLaG3tYZfcdC9hU40g==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.IdentityModel.JsonWebTokens": "8.19.2", + "Microsoft.IdentityModel.Protocols": "8.19.2", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.Client.AspNetCore": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "XjEj75mTkvMn1sj4jONWLTRK6KzeY/Hou8218nwLnJnqYmKJ1th7UDfadNTb530KSC+WPLxfvi7grzIv0xzebw==", + "dependencies": { + "OpenIddict.Client": "7.6.0" + } + }, + "OpenIddict.Client.DataProtection": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ZVhuFSzPbAaZkiRRrr77oyJnciWhytPnTZ1ByaCGfDx1b977crbcJww2asfkMpgNzcbWWAR6SgcS05hklsQflw==", + "dependencies": { + "Microsoft.AspNetCore.DataProtection": "10.0.10", + "OpenIddict.Client": "7.6.0", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "OpenIddict.Client.SystemIntegration": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "yqnyQH6CG46+y2Rp4UcIOXNcWgDvITW43PULI9sr6xYCS34J/kO6GU6fhwOGUfUJjRdOis3Xj00WwUZxZUQ5ZQ==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", + "OpenIddict.Client": "7.6.0" + } + }, + "OpenIddict.Client.SystemNetHttp": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "HsiL7rCRCFd7D1uvi6+HLmlkw9ykbLsEJ1GJMttuLB3/C8/LcqX+wHxr1W/GXl2YXhleNMW21I5AeVtGnfd9tg==", + "dependencies": { + "Microsoft.Extensions.Http.Polly": "10.0.10", + "Microsoft.Extensions.Http.Resilience": "10.8.0", + "OpenIddict.Client": "7.6.0" + } + }, + "OpenIddict.Client.WebIntegration": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "vJzIkHZwjB8vp6Hhxa8s9ruh/L+ZgpJUszGVP+kQQoqDQ8yZygbl0xWKuAHQ4OCIk3FTeSib9xH8uetm47YPgg==", + "dependencies": { + "OpenIddict.Client": "7.6.0", + "OpenIddict.Client.SystemNetHttp": "7.6.0" + } + }, + "OpenIddict.EntityFrameworkCore.Models": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "DrWB0dLfsg3mZhWABAlqSZKXin4Q4Pn8V4S7/1JxP5T/7Ncl0y45rM9L2EWv/zdydaiTOFKi4jRDBZAgBxUjaQ==" + }, + "OpenIddict.Server": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "0c7wlRYcP2Smgjp3PWyyojZ972H26otp6irW/WAFEbg4ZylcUvtlw0lkrCr/K8s5lAnYZwrpyzguwrJhXGKPVg==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.IdentityModel.JsonWebTokens": "8.19.2", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.Server.AspNetCore": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "m2Hk2R4gaTlEYBvNHz2fvIr38p1agiR2nW2gi5WMgSByFHxeEK5uhxqVGdSB2kEHRtp9kza/zBWBgIM4TdcVqw==", + "dependencies": { + "OpenIddict.Server": "7.6.0" + } + }, + "OpenIddict.Server.DataProtection": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ScGEt6uNuk2MZ/6DzVAMi/QegZulkvYKPRMrRu5/8/uI8P5o5XbEhEvancFx9YmBHL1uGE8SIByfTfxJx8kefA==", + "dependencies": { + "Microsoft.AspNetCore.DataProtection": "10.0.10", + "OpenIddict.Server": "7.6.0", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "OpenIddict.Validation": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ovzLQJ31uWZpgLdRVuD9Gmu8wxvhvbXW32MFTglFblhfqRwj/hMcEGOo8hdl+ir3QpDr9NUDAORA+v3S7xc6IA==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.IdentityModel.JsonWebTokens": "8.19.2", + "Microsoft.IdentityModel.Protocols": "8.19.2", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.Validation.AspNetCore": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "oby5/Ymdxd+g1TGtyTGrcK5J3/NSI80aw2CJgULwwIxraiCjiIfexrBjCxkPchWqPNFe6aAdGJ/Jz6amHNfrzg==", + "dependencies": { + "OpenIddict.Validation": "7.6.0" + } + }, + "OpenIddict.Validation.DataProtection": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ckC2xcPeJ/kLSyJXNOmpmFLnA1qM6zC8RR5d2pUtoToA6caMikebkL3NmRjBgxBRVvFmi7x9lMJ7+YmrI+uAlg==", + "dependencies": { + "Microsoft.AspNetCore.DataProtection": "10.0.10", + "OpenIddict.Validation": "7.6.0", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "OpenIddict.Validation.ServerIntegration": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "0bHhKsMV45UMPM5Phh51+g/tMUJNRzOWe6p/5opKeMQV8XoO3y3J9o/ZbfZ0j4qTTbQ7pqzEKSZaS4cGs0B3nQ==", + "dependencies": { + "OpenIddict.Server": "7.6.0", + "OpenIddict.Validation": "7.6.0" + } + }, + "OpenIddict.Validation.SystemNetHttp": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "N3MHlVaik22apnhxCTsqP6TjwRB/h874+5ks/m1+wKmOWqMyJ5UjIaZCvUOrDSMtDiEVted8qkjEJRzjAe0rGQ==", + "dependencies": { + "Microsoft.Extensions.Http.Polly": "10.0.10", + "Microsoft.Extensions.Http.Resilience": "10.8.0", + "OpenIddict.Validation": "7.6.0" + } + }, + "OpenTelemetry": { + "type": "Transitive", + "resolved": "1.18.0", + "contentHash": "13AKxycK+olOLe061MjliPTNBR/DUkjyRr0b9zwUhKyMjFS8lXS7G31R85rkbM55up2YFmdykWdAw2giBDJpiQ==", + "dependencies": { + "Microsoft.Extensions.Configuration.EnvironmentVariables": "10.0.0", + "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Configuration": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "1.18.0" + } + }, + "OpenTelemetry.Api.ProviderBuilderExtensions": { + "type": "Transitive", + "resolved": "1.18.0", + "contentHash": "io6A6PJFp3vIObRGf6oPjdHsdglkinXt/0SpTDJHrVnsLxUtOzwh/QwTsnhBJ43wJ6QcGMkyNzsSSY8XEB1Q5Q==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "OpenTelemetry.Api": "1.18.0" + } + }, "Polly.Core": { "type": "Transitive", "resolved": "8.7.0", "contentHash": "BS2t+nsBer16PIebCEPNBK5fgMisADQyRCd7K+BgkMWpFmSaiYE+rVVNpFhGRqUkJmNSLmw0uCNzHHWfgml28Q==" }, + "Polly.Extensions": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "GZ9vRVmR0jV2JtZavt+pGUsQ1O1cuRKG7R7VOZI6ZDy9y6RNPvRvXK1tuS4ffUrv8L0FTea59oEuQzgS0R7zSA==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "Polly.Core": "8.4.2" + } + }, + "Polly.Extensions.Http": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "drrG+hB3pYFY7w1c3BD+lSGYvH2oIclH8GRSehgfyP5kjnFnHKQuuBhuHLv+PWyFuaTDyk/vfRpnxOzd11+J8g==", + "dependencies": { + "Polly": "7.1.0" + } + }, + "Polly.RateLimiting": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "ehTImQ/eUyO07VYW2WvwSmU9rRH200SKJ/3jku9rOkyWE0A2JxNFmAVms8dSn49QLSjmjFRRSgfNyOgr/2PSmA==", + "dependencies": { + "Polly.Core": "8.4.2", + "System.Threading.RateLimiting": "8.0.0" + } + }, + "runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "A8v6PGmk+UGbfWo5Ixup0lPM4swuSwOiayJExZwKIOjTlFFQIsu3QnDXECosBEyrWSPryxBVrdqtJyhK3BaupQ==", + "dependencies": { + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": "4.4.0" + } + }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, + "Serilog.Extensions.Logging": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "vx0kABKl2dWbBhhqAfTOk53/i8aV/5VaT3a6il9gn72Wqs2pM7EK2OB6No6xdqK2IaY6Zf9gdjLuK9BVa2rT+Q==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.0", + "Serilog": "4.2.0" + } + }, "SQLitePCLRaw.bundle_e_sqlite3": { "type": "Transitive", "resolved": "2.1.11", @@ -733,6 +1131,27 @@ "SQLitePCLRaw.core": "2.1.11" } }, + "Swashbuckle.AspNetCore.Swagger": { + "type": "Transitive", + "resolved": "10.2.3", + "contentHash": "1jUUs3WQnrS0FUtaZPLSy1yYMEwS1zlvDmvQ2/eldPHUANX0LJSLVZecCMgSMdeGiRqeaRrIXLtSz++TCiTMww==", + "dependencies": { + "Microsoft.OpenApi": "2.7.5" + } + }, + "Swashbuckle.AspNetCore.SwaggerGen": { + "type": "Transitive", + "resolved": "10.2.3", + "contentHash": "y7t4coDRAeFYChmvlMRiH2OjbiRrm9AVIDgt17fQfs3x9PVAI5PiwWYOhg+4F13R4Q36WDc9lqfoOnNa3tNbGg==", + "dependencies": { + "Swashbuckle.AspNetCore.Swagger": "10.2.3" + } + }, + "Swashbuckle.AspNetCore.SwaggerUI": { + "type": "Transitive", + "resolved": "10.2.3", + "contentHash": "nthWONRs/FJ4yyG206g1cC52WEG8EqrjuMWjGdR+5XG7lbjFto6NqcI9EMICgVFom/UivIjUVwI76ZHbHwTPfQ==" + }, "System.ClientModel": { "type": "Transitive", "resolved": "1.14.0", @@ -751,11 +1170,11 @@ }, "System.Configuration.ConfigurationManager": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "vPinosRgEk1CGjohbv0pDuz6gPprkWo5xvBTjOJjks5JOgOEWvPndq5NngGxiTcBcy1+k9GwzZ1c3Bp2fU5ezw==", + "resolved": "9.0.13", + "contentHash": "GbBrJq9S/gYpHzm7Pxx6Y5tDyfSfyxW6tlP5oiKJV38uf19Wp+GIIAnWfyL1zmNiz1+EjwVapw2WkBFvvqKQzg==", "dependencies": { - "System.Diagnostics.EventLog": "9.0.11", - "System.Security.Cryptography.ProtectedData": "9.0.11" + "System.Diagnostics.EventLog": "9.0.13", + "System.Security.Cryptography.ProtectedData": "9.0.13" } }, "System.Diagnostics.EventLog": { @@ -765,11 +1184,11 @@ }, "System.IdentityModel.Tokens.Jwt": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "rQkO1YbAjLwnDJSMpRhRtrc6XwIcEOcUvoEcge+evurpzSZM3UNK+MZfD3sKyTlYsvknZ6eJjSBfnmXqwOsT9Q==", + "resolved": "8.16.0", + "contentHash": "rrs2u7DRMXQG2yh0oVyF/vLwosfRv20Ld2iEpYcKwQWXHjfV+gFXNQsQ9p008kR9Ou4pxBs68Q6/9zC8Gi1wjg==", "dependencies": { - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Tokens": "7.7.1" + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Tokens": "8.16.0" } }, "System.IO.Hashing": { @@ -792,13 +1211,21 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "System.Security.Cryptography.ProtectedData": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "s8yUYuYYu+PAwvBdhLG1KyrGrk9gkYeuPxfAsXsTqqWyepwSyEw8hAaflW4nO98NG52YpYI1am2+9o+79h2RtQ==" + "resolved": "9.0.13", + "contentHash": "t8S9IDpjJKsLpLkeBdW8cWtcPyYqrGu93Dej1RO6WwuL/lkFSqWlan3rMJfortqz1mRIh+sys2AFsSA6jWJ3Jg==" + }, + "System.Security.Cryptography.Xml": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "Mz6Y+s+uMQKj1H2BUF0OhlmaOQkLgSG34/IrUaBDirYBQ6bgwcFvO/XtXWcoDlBLFoFB0uKqDNhybHOd+fQK1A==", + "dependencies": { + "System.Security.Cryptography.Pkcs": "10.0.10" + } }, "System.Threading.RateLimiting": { "type": "Transitive", @@ -862,6 +1289,33 @@ "xunit.v3.runner.common": "[3.2.2]" } }, + "Backbone.BuildingBlocks.API": { + "type": "Project", + "dependencies": { + "Asp.Versioning.Mvc": "[10.0.1, 10.0.1]", + "Asp.Versioning.Mvc.ApiExplorer": "[10.0.1, 10.0.1]", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Module": "[1.0.0, )", + "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", + "Backbone.Tooling": "[1.0.0, )", + "DotNetDiag.HealthChecks.NpgSql": "[10.0.10, 10.0.10]", + "DotNetDiag.HealthChecks.SqlServer": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.Relational": "[10.0.10, 10.0.10]", + "OpenTelemetry.Exporter.OpenTelemetryProtocol": "[1.18.0, )", + "OpenTelemetry.Extensions.Hosting": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.AspNetCore": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.EntityFrameworkCore": "[1.18.0-beta.1, )", + "OpenTelemetry.Instrumentation.Http": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.Runtime": "[1.18.0, 1.18.0]", + "Polly": "[8.7.0, 8.7.0]", + "Serilog.Enrichers.Sensitive": "[2.1.0, 2.1.0]", + "Serilog.Extensions.Hosting": "[10.0.0, 10.0.0]", + "Swashbuckle.AspNetCore": "[10.2.3, 10.2.3]", + "System.Data.SqlClient": "[4.9.1, 4.9.1]" + } + }, "Backbone.BuildingBlocks.Application": { "type": "Project", "dependencies": { @@ -919,6 +1373,15 @@ "Serilog": "[4.4.0, 4.4.0]" } }, + "Backbone.BuildingBlocks.Module": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Microsoft.Extensions.Configuration.Abstractions": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[10.0.10, 10.0.10]", + "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" + } + }, "Backbone.Common.Infrastructure": { "type": "Project", "dependencies": { @@ -929,6 +1392,13 @@ "Polly": "[8.7.0, 8.7.0]" } }, + "Backbone.Crypto": { + "type": "Project", + "dependencies": { + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", + "NSec.Cryptography": "[26.4.0, 26.4.0]" + } + }, "Backbone.DevelopmentKit.Identity": { "type": "Project", "dependencies": { @@ -936,13 +1406,16 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Challenges.Application": { + "Backbone.Modules.Announcements.Contracts": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Challenges.Domain": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.BuildingBlocks.Domain": "[1.0.0, )" + } + }, + "Backbone.Modules.Challenges.Abstractions": { + "type": "Project", + "dependencies": { + "Backbone.Modules.Challenges.Domain": "[1.0.0, )" } }, "Backbone.Modules.Challenges.Domain": { @@ -957,13 +1430,109 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Challenges.Application": "[1.0.0, )", + "Backbone.Modules.Challenges.Abstractions": "[1.0.0, )", "Backbone.Modules.Challenges.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, 10.0.3]" } }, + "Backbone.Modules.Challenges.Infrastructure.Database.Postgres": { + "type": "Project", + "dependencies": { + "Backbone.Modules.Challenges.Infrastructure": "[1.0.0, )" + } + }, + "Backbone.Modules.Challenges.Infrastructure.Database.SqlServer": { + "type": "Project", + "dependencies": { + "Backbone.Modules.Challenges.Infrastructure": "[1.0.0, )" + } + }, + "Backbone.Modules.Challenges.Module": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.API": "[1.0.0, )", + "Backbone.BuildingBlocks.Module": "[1.0.0, )", + "Backbone.Modules.Challenges.Abstractions": "[1.0.0, )", + "Backbone.Modules.Challenges.Domain": "[1.0.0, )", + "Backbone.Modules.Challenges.Infrastructure": "[1.0.0, )", + "Backbone.Modules.Challenges.Infrastructure.Database.Postgres": "[1.0.0, )", + "Backbone.Modules.Challenges.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" + } + }, + "Backbone.Modules.Devices.Application": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.Crypto": "[1.0.0, )", + "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", + "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", + "FluentValidation": "[12.1.1, 12.1.1]", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "OpenIddict.Core": "[7.6.0, 7.6.0]", + "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", + "Polly": "[8.7.0, 8.7.0]" + } + }, + "Backbone.Modules.Devices.Contracts": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )" + } + }, + "Backbone.Modules.Devices.Domain": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )", + "Backbone.DevelopmentKit.Identity": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Tooling": "[1.0.0, )", + "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]" + } + }, + "Backbone.Modules.Devices.Infrastructure": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", + "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "FirebaseAdmin": "[3.6.0, 3.6.0]", + "JWT": "[11.1.0, 11.1.0]", + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.Relational": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.DependencyInjection": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Identity.Core": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Identity.Stores": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Logging": "[10.0.10, 10.0.10]", + "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, 10.0.3]", + "OpenIddict.AspNetCore": "[7.6.0, 7.6.0]", + "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", + "Polly": "[8.7.0, 8.7.0]" + } + }, + "Backbone.Modules.Synchronization.Contracts": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )" + } + }, + "Backbone.Modules.Tokens.Contracts": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )" + } + }, "Backbone.Tooling": { "type": "Project", "dependencies": { @@ -985,6 +1554,24 @@ "Shouldly": "[4.3.0, 4.3.0]" } }, + "Asp.Versioning.Mvc": { + "type": "CentralTransitive", + "requested": "[10.0.1, 10.0.1]", + "resolved": "10.0.1", + "contentHash": "OqoFPKKxXkNmw62H3CgXkPrf1L4PPwwyYr9QMP6itt/khKTIayqaHhK6F2e3jt6KHc4s23cWAUbu+Z5GPEeMaw==", + "dependencies": { + "Asp.Versioning.Http": "10.0.1" + } + }, + "Asp.Versioning.Mvc.ApiExplorer": { + "type": "CentralTransitive", + "requested": "[10.0.1, 10.0.1]", + "resolved": "10.0.1", + "contentHash": "ylPZe+LheFp0pt2tSMq2pPeGAkMLqWVOn5+1/xOB/eUj889n9b35Sny08bSQ0ziAGIFjp3BBTXaYsWJjRoFV4A==", + "dependencies": { + "Asp.Versioning.Mvc": "10.0.1" + } + }, "Autofac": { "type": "CentralTransitive", "requested": "[9.3.2, 9.3.2]", @@ -1021,12 +1608,44 @@ "Azure.Storage.Common": "12.28.0" } }, + "BouncyCastle.Cryptography": { + "type": "CentralTransitive", + "requested": "[2.7.0, 2.7.0]", + "resolved": "2.7.0", + "contentHash": "U+12df8UEWHgBi04YVf/Lgi2dy3SItlIYvHjjEVa/BngCQIzDCDRBk50DDByCfDvSbe5pRNFr3b7UrVK2kMcLw==" + }, + "CSharpFunctionalExtensions": { + "type": "CentralTransitive", + "requested": "[3.7.0, 3.7.0]", + "resolved": "3.7.0", + "contentHash": "eMZp8tc88O96eEFutiIskF3LE8lFY3fjbNRGfNa1ca0CD9sB8A00r5ltyYDih/7UFdJdVbhVq7tGeHI8xj6DlQ==" + }, "Dapper": { "type": "CentralTransitive", "requested": "[2.1.79, 2.1.79]", "resolved": "2.1.79", "contentHash": "8YijbzgTfmqmQOnVNorYM6K++pxqnW3nJ4aC1sRHzxUA2CcuoJ9gsTem3kgBnPRMc38zZHl4Esb6hAezXIEEuw==" }, + "DotNetDiag.HealthChecks.NpgSql": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "lxb6wQ1YC/TpvZMVgbyeLP5dYOg/RJWLg1xlR+I0FeyfyMmukppKdwzBOrKRtZ8FHG3nV9xrVTaPdwRw0yL4Vw==", + "dependencies": { + "Microsoft.Extensions.Diagnostics.HealthChecks": "10.0.9", + "Npgsql": "10.0.3" + } + }, + "DotNetDiag.HealthChecks.SqlServer": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "6t2HP5VQR0GZDJiw8iZvzOTRC+84irUeaUuWvcqcnc4K5Mzrn/A9V0ucoyjySXOF1vGkdTHjlJMknJVYC9c2Hg==", + "dependencies": { + "Microsoft.Data.SqlClient": "7.0.2", + "Microsoft.Extensions.Diagnostics.HealthChecks": "10.0.9" + } + }, "EFCore.BulkExtensions.Core": { "type": "CentralTransitive", "requested": "[10.0.1, 10.0.1]", @@ -1060,6 +1679,16 @@ "NetTopologySuite.IO.SqlServerBytes": "2.1.0" } }, + "FirebaseAdmin": { + "type": "CentralTransitive", + "requested": "[3.6.0, 3.6.0]", + "resolved": "3.6.0", + "contentHash": "aP8UWyQYACDOZqnHN9WB77TS0DlB8kVj8/HB7evUaAhAgPJQ9y4NmISJ3kkYkWBG5va3PHvYN5H+ZDBhABSEFQ==", + "dependencies": { + "Google.Api.Gax.Rest": "4.13.1", + "Google.Apis.Auth": "1.73.0" + } + }, "FluentValidation": { "type": "CentralTransitive", "requested": "[12.1.1, 12.1.1]", @@ -1096,6 +1725,15 @@ "Google.Apis.Storage.v1": "[1.74.0.4115, 2.0.0)" } }, + "JWT": { + "type": "CentralTransitive", + "requested": "[11.1.0, 11.1.0]", + "resolved": "11.1.0", + "contentHash": "GbmNr2WUyY3Ma0rwuvmTDnE5tIV8gFNDWeua9Fn54HwrpvGfwQzi7HtEAnMgI4quf4MuJr0iwPkt9sKrNCq1Tg==", + "dependencies": { + "Newtonsoft.Json": "13.0.4" + } + }, "MediatR": { "type": "CentralTransitive", "requested": "[12.5.0, 12.5.0]", @@ -1112,6 +1750,16 @@ "resolved": "2.0.1", "contentHash": "FYv95bNT4UwcNA+G/J1oX5OpRiSUxteXaUt2BJbRSdRNiIUNbggJF69wy6mnk2wYToaanpdXZdCwVylt96MpwQ==" }, + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "/ZV8RMWbWob1ZGsF5f1wVJNNlFLPKCf2ba834PpQiNhirVQ/ksup5SujtuUsvByHEZgv+9dmjC/4Xdi75axmXQ==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "10.0.10", + "Microsoft.Extensions.Identity.Stores": "10.0.10" + } + }, "Microsoft.Data.Sqlite.Core": { "type": "CentralTransitive", "requested": "[10.0.10, 10.0.10]", @@ -1327,6 +1975,17 @@ "Microsoft.Extensions.Options": "10.0.10" } }, + "Microsoft.Extensions.Identity.Stores": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "WMG/9wPJPnwU2w1R/WPLO/RL2UpGpBhw9z6odAAUkFdZypzzXl620FJWEoPpuBUq6Q4GYgMg0FQVRCO6gO4MQQ==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "10.0.10", + "Microsoft.Extensions.Identity.Core": "10.0.10", + "Microsoft.Extensions.Logging": "10.0.10" + } + }, "Microsoft.Extensions.Logging": { "type": "CentralTransitive", "requested": "[10.0.10, 10.0.10]", @@ -1368,12 +2027,118 @@ "Npgsql": "10.0.3" } }, + "NSec.Cryptography": { + "type": "CentralTransitive", + "requested": "[26.4.0, 26.4.0]", + "resolved": "26.4.0", + "contentHash": "0vsCtY5f+YgQROiWNqzgWp+l2pddfk9FkWoGV/bEo0MuEYPKlJWuoA8aOfO6qp3f+EnObKE3zSJhn1PspJeJVg==", + "dependencies": { + "libsodium": "[1.0.22, 1.0.23)" + } + }, + "OpenIddict.AspNetCore": { + "type": "CentralTransitive", + "requested": "[7.6.0, 7.6.0]", + "resolved": "7.6.0", + "contentHash": "FblhXU1SzSjL1nPsK5kqi+uMofNYLg1gwBU/qqc8diOafTv/6jLOhpCzzk+wISR8OnkS7H3oFMcTjy8aaTm8ww==", + "dependencies": { + "OpenIddict": "7.6.0", + "OpenIddict.Client.AspNetCore": "7.6.0", + "OpenIddict.Client.DataProtection": "7.6.0", + "OpenIddict.Server.AspNetCore": "7.6.0", + "OpenIddict.Server.DataProtection": "7.6.0", + "OpenIddict.Validation.AspNetCore": "7.6.0", + "OpenIddict.Validation.DataProtection": "7.6.0" + } + }, + "OpenIddict.Core": { + "type": "CentralTransitive", + "requested": "[7.6.0, 7.6.0]", + "resolved": "7.6.0", + "contentHash": "LJQ+GsSY6Nfw5FZ4NzCvL2kwYU1GNz6ygiUNGvqcKP0qXwstU59RDAjNKTCGkPPq4TQGnETqr4UsJgyK+AFxeA==", + "dependencies": { + "Microsoft.Extensions.Caching.Memory": "10.0.10", + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.Extensions.Options": "10.0.10", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[7.6.0, 7.6.0]", + "resolved": "7.6.0", + "contentHash": "BWbgvgKbDcg3EuNJvmXtUzeLxg9c4bU+PfDnZetCjGwcnlCsWcASkjVexKKevtUgWxRWJTQFRchMA09OKmOF/w==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "10.0.10", + "OpenIddict.Core": "7.6.0", + "OpenIddict.EntityFrameworkCore.Models": "7.6.0" + } + }, "OpenTelemetry.Api": { "type": "CentralTransitive", "requested": "[1.18.0, )", "resolved": "1.18.0", "contentHash": "Dhzm5oughIY9EWckt2J1yXcEbXpki5WCL2q7prJoYxzH6C7jdkfGtPMTkUVZZ4AhjJKzQnlC+kLSIlmIVwC4Vw==" }, + "OpenTelemetry.Exporter.OpenTelemetryProtocol": { + "type": "CentralTransitive", + "requested": "[1.18.0, )", + "resolved": "1.18.0", + "contentHash": "Et3WAviooKGObZjUZN8d6eTsdJs1YM3ZoN+KlWSAHksTmHG1nyGi9XGo2wb0fkFMWK0g80FOPdR1njg52Dm+aw==", + "dependencies": { + "OpenTelemetry": "1.18.0" + } + }, + "OpenTelemetry.Extensions.Hosting": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "u+JMA82H65MKwMvd2qUpL8C2qE4Jux2nvX9hmy036UK/Apv2YyIRYCttF/vlX6nMPcAKI8BXkscmL4QG3C69fw==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", + "OpenTelemetry": "1.18.0" + } + }, + "OpenTelemetry.Instrumentation.AspNetCore": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "hBiMXE/CGIAHUOpi0gScNkjHB0L9XbCin5lZObL+dMBl4OmpndnHgxP3JZDnnGtU6qOzdeh8TYUV9f6Jgmmhlw==", + "dependencies": { + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[1.18.0-beta.1, )", + "resolved": "1.18.0-beta.1", + "contentHash": "n15cNXxkSl9G6KD41wZYmujjERYOBiIgn2VeesTFhLtHZ+QQQE3baLrCk7UyzidEw/uGObRcW3SKhqpyMpGe1w==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Http": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "/X57peOOa4a+9V4DSVXbuIWdsAxmU5gsxw8lu+gJU0zuewsYhC9f6qdm8GEW0VvqG9e+gxn0HdVR5G3YHcWDTw==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Runtime": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "McuXGjBJDL/Cown2PxfUQysK98MZG7ZDjO/IKUtaAx8t1m0PB0d+QtJC79RFTVipMhRIwjJiULNOp0OGfZbvwg==", + "dependencies": { + "OpenTelemetry.Api": "[1.18.0, 2.0.0)" + } + }, "Polly": { "type": "CentralTransitive", "requested": "[8.7.0, 8.7.0]", @@ -1408,6 +2173,25 @@ "resolved": "4.4.0", "contentHash": "ZC6Le3rr4TVJJjS4KsQAesxeF1EhW9qcZmmG7eP5Y2G3+gTGkJEUXkq4+tZNPtyp05I0wWOxnIjwtxFweJsObw==" }, + "Serilog.Enrichers.Sensitive": { + "type": "CentralTransitive", + "requested": "[2.1.0, 2.1.0]", + "resolved": "2.1.0", + "contentHash": "nlaEYMoHjJqncjQgc0Nv4LOIkAwUt4Nvmx3EMNjY4MKC7QqZs9zB0v/NwFnaWzLF7qztc7mna1bjn20Auohu0g==" + }, + "Serilog.Extensions.Hosting": { + "type": "CentralTransitive", + "requested": "[10.0.0, 10.0.0]", + "resolved": "10.0.0", + "contentHash": "E7juuIc+gzoGxgzFooFgAV8g9BfiSXNKsUok9NmEpyAXg2odkcPsMa/Yo4axkJRlh0se7mkYQ1GXDaBemR+b6w==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Serilog": "4.3.0", + "Serilog.Extensions.Logging": "10.0.0" + } + }, "Shouldly": { "type": "CentralTransitive", "requested": "[4.3.0, 4.3.0]", @@ -1429,25 +2213,50 @@ "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "Swashbuckle.AspNetCore": { + "type": "CentralTransitive", + "requested": "[10.2.3, 10.2.3]", + "resolved": "10.2.3", + "contentHash": "8KNh1RWvofdU6DVLyBs4Z/OpUMnmf8oNvJQc0QxpwySRbi42bwLfdVMMrXZWANg5U5KQGQq1xW6r/hlcqw99tQ==", + "dependencies": { + "Microsoft.Extensions.ApiDescription.Server": "10.0.0", + "Swashbuckle.AspNetCore.Swagger": "10.2.3", + "Swashbuckle.AspNetCore.SwaggerGen": "10.2.3", + "Swashbuckle.AspNetCore.SwaggerUI": "10.2.3" + } + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/linux-arm64": { + "libsodium": { + "type": "Transitive", + "resolved": "1.0.22", + "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" + }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1468,6 +2277,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1483,33 +2307,46 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "SQLitePCLRaw.lib.e_sqlite3": { "type": "CentralTransitive", "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/linux-x64": { + "libsodium": { + "type": "Transitive", + "resolved": "1.0.22", + "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" + }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1530,6 +2367,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1545,33 +2397,46 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "SQLitePCLRaw.lib.e_sqlite3": { "type": "CentralTransitive", "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/osx-arm64": { + "libsodium": { + "type": "Transitive", + "resolved": "1.0.22", + "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" + }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1592,6 +2457,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1607,33 +2487,46 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "SQLitePCLRaw.lib.e_sqlite3": { "type": "CentralTransitive", "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/win-x64": { + "libsodium": { + "type": "Transitive", + "resolved": "1.0.22", + "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" + }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1654,6 +2547,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1669,14 +2577,23 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "SQLitePCLRaw.lib.e_sqlite3": { "type": "CentralTransitive", "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } } } From b5159124d8fbf1197876dfd0aad51998c8484566 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20H=C3=BCgel?= Date: Thu, 1 Oct 2026 13:09:27 +0200 Subject: [PATCH 11/25] test: delete accidentally added test --- .../Features/Messages/POST.feature | 7 ------- 1 file changed, 7 deletions(-) diff --git a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/Features/Messages/POST.feature b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/Features/Messages/POST.feature index 1528abdb5d..6bde6310db 100644 --- a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/Features/Messages/POST.feature +++ b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/Features/Messages/POST.feature @@ -10,13 +10,6 @@ Identity sends a Message Then the response status code is 201 (Created) And the response contains a SendMessageResponse - Scenario: Sending a Message without a body - Given Identities i1 and i2 - And an active Relationship r12 between i1 and i2 - When i1 sends a POST request to the /Messages endpoint without a body and with i2 as recipient - Then the response status code is 400 (Bad Request) - And the response content contains an error with the error code "error.platform.inputCannotBeParsed" - Scenario: Sending a Message to Identity to be deleted Given Identities i1 and i2 And an active Relationship r12 between i1 and i2 From 12ffd63ef153e37e8701ef11ad512e93c3212d88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20H=C3=BCgel?= Date: Thu, 1 Oct 2026 13:37:21 +0200 Subject: [PATCH 12/25] refactor: migrate Announcements module --- .../AdminApi/src/AdminApi/AdminApi.csproj | 1 - .../Controllers/AnnouncementsController.cs | 10 +- Applications/AdminApi/src/AdminApi/Dockerfile | 2 +- Applications/AdminApi/src/AdminApi/Program.cs | 2 +- .../AdminApi/src/AdminApi/packages.lock.json | 14 +- .../packages.lock.json | 15 +- .../AdminCli/src/AdminCli/AdminCli.csproj | 1 - .../DeleteAnnouncementCommand.cs | 2 +- .../Announcements/SendAnnouncementCommand.cs | 2 +- Applications/AdminCli/src/AdminCli/Dockerfile | 2 +- Applications/AdminCli/src/AdminCli/Program.cs | 4 +- .../AdminCli/src/AdminCli/packages.lock.json | 14 +- .../Announcements/AnnouncementsController.cs | 29 - Applications/ConsumerApi/src/Program.cs | 3 +- .../ConsumerApi/src/packages.lock.json | 14 +- .../packages.lock.json | 14 +- .../src/DatabaseMigrator/Dockerfile | 2 +- .../src/DatabaseMigrator/packages.lock.json | 9 +- .../DatabaseMigrator.Tests/packages.lock.json | 9 +- .../Housekeeper/src/Housekeeper/Dockerfile | 2 +- .../Housekeeper/src/Housekeeper/Executor.cs | 2 +- .../Housekeeper/src/Housekeeper/Program.cs | 2 +- .../src/Housekeeper/packages.lock.json | 14 +- .../src/Job.IdentityDeletion/Dockerfile | 2 +- .../Job.IdentityDeletion.csproj | 1 - .../src/Job.IdentityDeletion/Program.cs | 2 +- .../ServicesExtensions.cs | 2 +- .../Job.IdentityDeletion/packages.lock.json | 14 +- .../packages.lock.json | 15 +- .../packages.lock.json | 15 +- .../Backbone.Tests.ArchUnit.csproj | 3 +- .../VerticalSliceArchitecture.cs | 14 +- Backbone.Tests.ArchUnit/packages.lock.json | 35 +- Backbone.slnx | 4 +- .../Announcements.Abstractions.csproj | 5 + .../IAnnouncementsRepository.cs | 4 +- .../packages.lock.json | 88 ++ .../Announcements.Application.csproj | 12 - .../ExecuteHousekeepingCommand.cs | 5 - .../GetAnnouncementByIdQuery.cs | 9 - .../ListAllAnnouncementsQuery.cs | 5 - .../ApplicationConfiguration.cs | 3 - .../packages.lock.json | 1372 ----------------- .../packages.lock.json | 19 +- .../packages.lock.json | 19 +- .../Announcements.Infrastructure.csproj | 3 +- .../Database/IServiceCollectionExtensions.cs | 2 +- .../Repository/AnnouncementsRepository.cs | 2 +- .../packages.lock.json | 16 +- .../Announcements.Module.csproj | 5 +- .../AnnouncementsEndpointExtensions.cs | 16 + .../AnnouncementsModule.cs | 2 - .../ApplicationConfiguration.cs | 3 + ...ApplicationServiceCollectionExtensions.cs} | 8 +- .../CreateAnnouncement/Command.cs} | 4 +- .../CreateAnnouncement/Handler.cs | 8 +- .../CreateAnnouncement/Validator.cs | 4 +- .../DeleteAnnouncementById/Command.cs} | 2 +- .../DeleteAnnouncementById/Handler.cs | 4 +- .../DeleteAnnouncementById/Validator.cs | 2 +- .../DeleteAnnouncementRecipients/Command.cs} | 4 +- .../DeleteAnnouncementRecipients/Handler.cs | 6 +- .../DeleteAnnouncementRecipients/Validator.cs | 4 +- .../ExecuteHousekeeping/Command.cs | 5 + .../ExecuteHousekeeping/Handler.cs | 6 +- .../GetAnnouncementById/Handler.cs | 8 +- .../GetAnnouncementById/Query.cs | 9 + .../GetAnnouncementById/Validator.cs | 4 +- .../ListAnnouncements/Handler.cs | 4 +- .../Announcements/ListAnnouncements/Query.cs | 5 + .../ListAnnouncements/Response.cs} | 6 +- .../ListAnnouncementsInLanguage/Endpoint.cs | 27 + .../ListAnnouncementsInLanguage/Handler.cs | 6 +- .../ListAnnouncementsInLanguage/Query.cs} | 4 +- .../ListAnnouncementsInLanguage/Response.cs} | 6 +- .../ListAnnouncementsInLanguage/Validator.cs | 4 +- .../Announcements/Shared}/AnnouncementDTO.cs | 4 +- .../Shared}/AnnouncementTextDTO.cs | 4 +- .../Shared}/SingleLanguageAnnouncementDTO.cs | 2 +- .../DeleteIdentity}/IdentityDeleter.cs | 6 +- .../Announcements.Module/packages.lock.json | 29 +- .../Announcements.Module.Tests.csproj} | 2 +- .../AnonymizeRecipient/HandlerTests.cs | 8 +- .../CreateAnnouncement/ValidatorTests.cs | 4 +- .../Announcements/IdentityDeleterTests.cs | 8 +- .../packages.lock.json | 1153 ++++++++++++-- 86 files changed, 1429 insertions(+), 1797 deletions(-) delete mode 100644 Applications/ConsumerApi/src/Controllers/Announcements/AnnouncementsController.cs create mode 100644 Modules/Announcements/src/Announcements.Abstractions/Announcements.Abstractions.csproj rename Modules/Announcements/src/{Announcements.Application/Infrastructure/Persistence/Repository => Announcements.Abstractions}/IAnnouncementsRepository.cs (85%) create mode 100644 Modules/Announcements/src/Announcements.Abstractions/packages.lock.json delete mode 100644 Modules/Announcements/src/Announcements.Application/Announcements.Application.csproj delete mode 100644 Modules/Announcements/src/Announcements.Application/Announcements/Commands/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs delete mode 100644 Modules/Announcements/src/Announcements.Application/Announcements/Queries/GetAnnouncementById/GetAnnouncementByIdQuery.cs delete mode 100644 Modules/Announcements/src/Announcements.Application/Announcements/Queries/ListAnnouncements/ListAllAnnouncementsQuery.cs delete mode 100644 Modules/Announcements/src/Announcements.Application/ApplicationConfiguration.cs delete mode 100644 Modules/Announcements/src/Announcements.Application/packages.lock.json create mode 100644 Modules/Announcements/src/Announcements.Module/AnnouncementsEndpointExtensions.cs create mode 100644 Modules/Announcements/src/Announcements.Module/ApplicationConfiguration.cs rename Modules/Announcements/src/{Announcements.Application/Extensions/IServiceCollectionExtensions.cs => Announcements.Module/ApplicationServiceCollectionExtensions.cs} (67%) rename Modules/Announcements/src/{Announcements.Application/Announcements/Commands/CreateAnnouncement/CreateAnnouncementCommand.cs => Announcements.Module/Features/Announcements/CreateAnnouncement/Command.cs} (84%) rename Modules/Announcements/src/{Announcements.Application/Announcements/Commands => Announcements.Module/Features/Announcements}/CreateAnnouncement/Handler.cs (80%) rename Modules/Announcements/src/{Announcements.Application/Announcements/Commands => Announcements.Module/Features/Announcements}/CreateAnnouncement/Validator.cs (94%) rename Modules/Announcements/src/{Announcements.Application/Announcements/Commands/DeleteAnnouncementById/DeleteAnnouncementByIdCommand.cs => Announcements.Module/Features/Announcements/DeleteAnnouncementById/Command.cs} (54%) rename Modules/Announcements/src/{Announcements.Application/Announcements/Commands => Announcements.Module/Features/Announcements}/DeleteAnnouncementById/Handler.cs (87%) rename Modules/Announcements/src/{Announcements.Application/Announcements/Commands => Announcements.Module/Features/Announcements}/DeleteAnnouncementById/Validator.cs (76%) rename Modules/Announcements/src/{Announcements.Application/Announcements/Commands/DeleteAnnouncementRecipients/DeleteAnnouncementRecipientsCommand.cs => Announcements.Module/Features/Announcements/DeleteAnnouncementRecipients/Command.cs} (50%) rename Modules/Announcements/src/{Announcements.Application/Announcements/Commands => Announcements.Module/Features/Announcements}/DeleteAnnouncementRecipients/Handler.cs (71%) rename Modules/Announcements/src/{Announcements.Application/Announcements/Commands => Announcements.Module/Features/Announcements}/DeleteAnnouncementRecipients/Validator.cs (65%) create mode 100644 Modules/Announcements/src/Announcements.Module/Features/Announcements/ExecuteHousekeeping/Command.cs rename Modules/Announcements/src/{Announcements.Application/Announcements/Commands => Announcements.Module/Features/Announcements}/ExecuteHousekeeping/Handler.cs (76%) rename Modules/Announcements/src/{Announcements.Application/Announcements/Queries => Announcements.Module/Features/Announcements}/GetAnnouncementById/Handler.cs (70%) create mode 100644 Modules/Announcements/src/Announcements.Module/Features/Announcements/GetAnnouncementById/Query.cs rename Modules/Announcements/src/{Announcements.Application/Announcements/Queries => Announcements.Module/Features/Announcements}/GetAnnouncementById/Validator.cs (63%) rename Modules/Announcements/src/{Announcements.Application/Announcements/Queries => Announcements.Module/Features/Announcements}/ListAnnouncements/Handler.cs (76%) create mode 100644 Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Query.cs rename Modules/Announcements/src/{Announcements.Application/Announcements/Queries/ListAnnouncements/ListAllAnnouncementsResponse.cs => Announcements.Module/Features/Announcements/ListAnnouncements/Response.cs} (54%) create mode 100644 Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Endpoint.cs rename Modules/Announcements/src/{Announcements.Application/Announcements/Queries => Announcements.Module/Features/Announcements}/ListAnnouncementsInLanguage/Handler.cs (79%) rename Modules/Announcements/src/{Announcements.Application/Announcements/Queries/ListAnnouncementsInLanguage/ListAllAnnouncementsForActiveIdentityInLanguageQuery.cs => Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Query.cs} (57%) rename Modules/Announcements/src/{Announcements.Application/Announcements/Queries/ListAnnouncementsInLanguage/ListAllAnnouncementsInLanguageResponse.cs => Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Response.cs} (60%) rename Modules/Announcements/src/{Announcements.Application/Announcements/Queries => Announcements.Module/Features/Announcements}/ListAnnouncementsInLanguage/Validator.cs (58%) rename Modules/Announcements/src/{Announcements.Application/Announcements/DTOs => Announcements.Module/Features/Announcements/Shared}/AnnouncementDTO.cs (91%) rename Modules/Announcements/src/{Announcements.Application/Announcements/DTOs => Announcements.Module/Features/Announcements/Shared}/AnnouncementTextDTO.cs (73%) rename Modules/Announcements/src/{Announcements.Application/Announcements/DTOs => Announcements.Module/Features/Announcements/Shared}/SingleLanguageAnnouncementDTO.cs (95%) rename Modules/Announcements/src/{Announcements.Application/Announcements => Announcements.Module/Features/Identities/DeleteIdentity}/IdentityDeleter.cs (74%) rename Modules/Announcements/test/{Announcements.Application.Tests/Announcements.Application.Tests.csproj => Announcements.Module.Tests/Announcements.Module.Tests.csproj} (85%) rename Modules/Announcements/test/{Announcements.Application.Tests => Announcements.Module.Tests}/Tests/Announcements/Commands/AnonymizeRecipient/HandlerTests.cs (69%) rename Modules/Announcements/test/{Announcements.Application.Tests => Announcements.Module.Tests}/Tests/Announcements/Commands/CreateAnnouncement/ValidatorTests.cs (95%) rename Modules/Announcements/test/{Announcements.Application.Tests => Announcements.Module.Tests}/Tests/Announcements/IdentityDeleterTests.cs (81%) rename Modules/Announcements/test/{Announcements.Application.Tests => Announcements.Module.Tests}/packages.lock.json (58%) diff --git a/Applications/AdminApi/src/AdminApi/AdminApi.csproj b/Applications/AdminApi/src/AdminApi/AdminApi.csproj index dbcf1962cf..3ce3012f32 100644 --- a/Applications/AdminApi/src/AdminApi/AdminApi.csproj +++ b/Applications/AdminApi/src/AdminApi/AdminApi.csproj @@ -24,7 +24,6 @@ - diff --git a/Applications/AdminApi/src/AdminApi/Controllers/AnnouncementsController.cs b/Applications/AdminApi/src/AdminApi/Controllers/AnnouncementsController.cs index 3d617b4da9..3435a8c987 100644 --- a/Applications/AdminApi/src/AdminApi/Controllers/AnnouncementsController.cs +++ b/Applications/AdminApi/src/AdminApi/Controllers/AnnouncementsController.cs @@ -1,11 +1,11 @@ using Backbone.AdminApi.Versions; using Backbone.BuildingBlocks.API.Mvc; using Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; -using Backbone.Modules.Announcements.Application.Announcements.Commands.CreateAnnouncement; -using Backbone.Modules.Announcements.Application.Announcements.Commands.DeleteAnnouncementById; -using Backbone.Modules.Announcements.Application.Announcements.DTOs; -using Backbone.Modules.Announcements.Application.Announcements.Queries.GetAnnouncementById; -using Backbone.Modules.Announcements.Application.Announcements.Queries.ListAnnouncements; +using Backbone.Modules.Announcements.Module.Features.Announcements.CreateAnnouncement; +using Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementById; +using Backbone.Modules.Announcements.Module.Features.Announcements.Shared; +using Backbone.Modules.Announcements.Module.Features.Announcements.GetAnnouncementById; +using Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncements; using MediatR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; diff --git a/Applications/AdminApi/src/AdminApi/Dockerfile b/Applications/AdminApi/src/AdminApi/Dockerfile index 6ca800b46f..6c8f577954 100644 --- a/Applications/AdminApi/src/AdminApi/Dockerfile +++ b/Applications/AdminApi/src/AdminApi/Dockerfile @@ -35,7 +35,7 @@ COPY ["Modules/Relationships/src/Relationships.Contracts/Relationships.Contracts COPY ["Modules/Synchronization/src/Synchronization.Contracts/Synchronization.Contracts.csproj", "Modules/Synchronization/src/Synchronization.Contracts/packages.lock.json*", "Modules/Synchronization/src/Synchronization.Contracts/"] COPY ["Modules/Tokens/src/Tokens.Contracts/Tokens.Contracts.csproj", "Modules/Tokens/src/Tokens.Contracts/packages.lock.json*", "Modules/Tokens/src/Tokens.Contracts/"] -COPY ["Modules/Announcements/src/Announcements.Application/Announcements.Application.csproj", "Modules/Announcements/src/Announcements.Application/packages.lock.json*", "Modules/Announcements/src/Announcements.Application/"] +COPY ["Modules/Announcements/src/Announcements.Abstractions/Announcements.Abstractions.csproj", "Modules/Announcements/src/Announcements.Abstractions/packages.lock.json*", "Modules/Announcements/src/Announcements.Abstractions/"] COPY ["Modules/Announcements/src/Announcements.Domain/Announcements.Domain.csproj", "Modules/Announcements/src/Announcements.Domain/packages.lock.json*", "Modules/Announcements/src/Announcements.Domain/"] COPY ["Modules/Announcements/src/Announcements.Infrastructure/Announcements.Infrastructure.csproj", "Modules/Announcements/src/Announcements.Infrastructure/packages.lock.json*", "Modules/Announcements/src/Announcements.Infrastructure/"] COPY ["Modules/Announcements/src/Announcements.Module/Announcements.Module.csproj", "Modules/Announcements/src/Announcements.Module/packages.lock.json*", "Modules/Announcements/src/Announcements.Module/"] diff --git a/Applications/AdminApi/src/AdminApi/Program.cs b/Applications/AdminApi/src/AdminApi/Program.cs index 67412e4ca9..b6d924ae57 100644 --- a/Applications/AdminApi/src/AdminApi/Program.cs +++ b/Applications/AdminApi/src/AdminApi/Program.cs @@ -111,7 +111,7 @@ static void ConfigureServices(IServiceCollection services, IConfiguration config .AddHealthChecks(); services - .AddModule(configuration) + .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) diff --git a/Applications/AdminApi/src/AdminApi/packages.lock.json b/Applications/AdminApi/src/AdminApi/packages.lock.json index dad53612f4..63b9ac6999 100644 --- a/Applications/AdminApi/src/AdminApi/packages.lock.json +++ b/Applications/AdminApi/src/AdminApi/packages.lock.json @@ -1092,12 +1092,10 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Announcements.Application": { + "Backbone.Modules.Announcements.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Announcements.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Announcements.Domain": "[1.0.0, )" } }, "Backbone.Modules.Announcements.Contracts": { @@ -1118,8 +1116,9 @@ "Backbone.Modules.Announcements.Infrastructure": { "type": "Project", "dependencies": { + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Announcements.Application": "[1.0.0, )", + "Backbone.Modules.Announcements.Abstractions": "[1.0.0, )", "Backbone.Modules.Announcements.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1143,10 +1142,13 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", - "Backbone.Modules.Announcements.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Module": "[1.0.0, )", + "Backbone.Modules.Announcements.Abstractions": "[1.0.0, )", + "Backbone.Modules.Announcements.Domain": "[1.0.0, )", "Backbone.Modules.Announcements.Infrastructure": "[1.0.0, )", "Backbone.Modules.Announcements.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Announcements.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/AdminApi/test/AdminApi.Tests.Integration/packages.lock.json b/Applications/AdminApi/test/AdminApi.Tests.Integration/packages.lock.json index 372ae3bbb9..b7e52c39a8 100644 --- a/Applications/AdminApi/test/AdminApi.Tests.Integration/packages.lock.json +++ b/Applications/AdminApi/test/AdminApi.Tests.Integration/packages.lock.json @@ -1553,7 +1553,6 @@ "Backbone.AdminApi.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.AdminApi.Infrastructure.Database.SqlServer": "[1.0.0, )", "Backbone.BuildingBlocks.API": "[1.0.0, )", - "Backbone.Modules.Announcements.Application": "[1.0.0, )", "Backbone.Modules.Announcements.Infrastructure": "[1.0.0, )", "Backbone.Modules.Announcements.Module": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure": "[1.0.0, )", @@ -1733,12 +1732,10 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Announcements.Application": { + "Backbone.Modules.Announcements.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Announcements.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Announcements.Domain": "[1.0.0, )" } }, "Backbone.Modules.Announcements.Contracts": { @@ -1759,8 +1756,9 @@ "Backbone.Modules.Announcements.Infrastructure": { "type": "Project", "dependencies": { + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Announcements.Application": "[1.0.0, )", + "Backbone.Modules.Announcements.Abstractions": "[1.0.0, )", "Backbone.Modules.Announcements.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1784,10 +1782,13 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", - "Backbone.Modules.Announcements.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Module": "[1.0.0, )", + "Backbone.Modules.Announcements.Abstractions": "[1.0.0, )", + "Backbone.Modules.Announcements.Domain": "[1.0.0, )", "Backbone.Modules.Announcements.Infrastructure": "[1.0.0, )", "Backbone.Modules.Announcements.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Announcements.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/AdminCli/src/AdminCli/AdminCli.csproj b/Applications/AdminCli/src/AdminCli/AdminCli.csproj index 4a5421889b..779ec5e63c 100644 --- a/Applications/AdminCli/src/AdminCli/AdminCli.csproj +++ b/Applications/AdminCli/src/AdminCli/AdminCli.csproj @@ -15,7 +15,6 @@ - diff --git a/Applications/AdminCli/src/AdminCli/Commands/Announcements/DeleteAnnouncementCommand.cs b/Applications/AdminCli/src/AdminCli/Commands/Announcements/DeleteAnnouncementCommand.cs index 271026460d..28f69efeee 100644 --- a/Applications/AdminCli/src/AdminCli/Commands/Announcements/DeleteAnnouncementCommand.cs +++ b/Applications/AdminCli/src/AdminCli/Commands/Announcements/DeleteAnnouncementCommand.cs @@ -1,6 +1,6 @@ using System.CommandLine; using Backbone.AdminCli.Commands.BaseClasses; -using Backbone.Modules.Announcements.Application.Announcements.Commands.DeleteAnnouncementById; +using Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementById; using MediatR; namespace Backbone.AdminCli.Commands.Announcements; diff --git a/Applications/AdminCli/src/AdminCli/Commands/Announcements/SendAnnouncementCommand.cs b/Applications/AdminCli/src/AdminCli/Commands/Announcements/SendAnnouncementCommand.cs index d68ad4ccea..6b3bfbe7ac 100644 --- a/Applications/AdminCli/src/AdminCli/Commands/Announcements/SendAnnouncementCommand.cs +++ b/Applications/AdminCli/src/AdminCli/Commands/Announcements/SendAnnouncementCommand.cs @@ -1,7 +1,7 @@ using System.CommandLine; using System.Text.Json; using Backbone.AdminCli.Commands.BaseClasses; -using Backbone.Modules.Announcements.Application.Announcements.Commands.CreateAnnouncement; +using Backbone.Modules.Announcements.Module.Features.Announcements.CreateAnnouncement; using Backbone.Modules.Announcements.Domain.Entities; using MediatR; diff --git a/Applications/AdminCli/src/AdminCli/Dockerfile b/Applications/AdminCli/src/AdminCli/Dockerfile index f83dbd46ff..ee238411b1 100644 --- a/Applications/AdminCli/src/AdminCli/Dockerfile +++ b/Applications/AdminCli/src/AdminCli/Dockerfile @@ -33,7 +33,7 @@ COPY ["Modules/Devices/src/Devices.Contracts/Devices.Contracts.csproj", "Modules COPY ["Modules/Synchronization/src/Synchronization.Contracts/Synchronization.Contracts.csproj", "Modules/Synchronization/src/Synchronization.Contracts/packages.lock.json*", "Modules/Synchronization/src/Synchronization.Contracts/"] COPY ["Modules/Tokens/src/Tokens.Contracts/Tokens.Contracts.csproj", "Modules/Tokens/src/Tokens.Contracts/packages.lock.json*", "Modules/Tokens/src/Tokens.Contracts/"] -COPY ["Modules/Announcements/src/Announcements.Application/Announcements.Application.csproj", "Modules/Announcements/src/Announcements.Application/packages.lock.json*", "Modules/Announcements/src/Announcements.Application/"] +COPY ["Modules/Announcements/src/Announcements.Abstractions/Announcements.Abstractions.csproj", "Modules/Announcements/src/Announcements.Abstractions/packages.lock.json*", "Modules/Announcements/src/Announcements.Abstractions/"] COPY ["Modules/Announcements/src/Announcements.Infrastructure/Announcements.Infrastructure.csproj", "Modules/Announcements/src/Announcements.Infrastructure/packages.lock.json*", "Modules/Announcements/src/Announcements.Infrastructure/"] COPY ["Modules/Announcements/src/Announcements.Infrastructure.Database.Postgres/Announcements.Infrastructure.Database.Postgres.csproj", "Modules/Announcements/src/Announcements.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Announcements/src/Announcements.Infrastructure.Database.Postgres/"] COPY ["Modules/Announcements/src/Announcements.Infrastructure.Database.SqlServer/Announcements.Infrastructure.Database.SqlServer.csproj", "Modules/Announcements/src/Announcements.Infrastructure.Database.SqlServer/packages.lock.json*", "Modules/Announcements/src/Announcements.Infrastructure.Database.SqlServer/"] diff --git a/Applications/AdminCli/src/AdminCli/Program.cs b/Applications/AdminCli/src/AdminCli/Program.cs index 754338f6f7..f1f7500b98 100644 --- a/Applications/AdminCli/src/AdminCli/Program.cs +++ b/Applications/AdminCli/src/AdminCli/Program.cs @@ -68,9 +68,9 @@ private static IServiceProvider BuildServiceProvider(IConfiguration configuratio services.AddCommonInfrastructure(); services - .AddModule(configuration) + .AddModule(configuration) .AddModule(configuration) - .AddModule(configuration); + .AddModule(configuration); #pragma warning disable ASP0000 // We retrieve the Configuration via IOptions here so that it is validated var parsedConfiguration = services.BuildServiceProvider().GetRequiredService>().Value; diff --git a/Applications/AdminCli/src/AdminCli/packages.lock.json b/Applications/AdminCli/src/AdminCli/packages.lock.json index 180e3ebf87..825ef38e30 100644 --- a/Applications/AdminCli/src/AdminCli/packages.lock.json +++ b/Applications/AdminCli/src/AdminCli/packages.lock.json @@ -1236,12 +1236,10 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Announcements.Application": { + "Backbone.Modules.Announcements.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Announcements.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Announcements.Domain": "[1.0.0, )" } }, "Backbone.Modules.Announcements.Contracts": { @@ -1262,8 +1260,9 @@ "Backbone.Modules.Announcements.Infrastructure": { "type": "Project", "dependencies": { + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Announcements.Application": "[1.0.0, )", + "Backbone.Modules.Announcements.Abstractions": "[1.0.0, )", "Backbone.Modules.Announcements.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1287,10 +1286,13 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", - "Backbone.Modules.Announcements.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Module": "[1.0.0, )", + "Backbone.Modules.Announcements.Abstractions": "[1.0.0, )", + "Backbone.Modules.Announcements.Domain": "[1.0.0, )", "Backbone.Modules.Announcements.Infrastructure": "[1.0.0, )", "Backbone.Modules.Announcements.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Announcements.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/ConsumerApi/src/Controllers/Announcements/AnnouncementsController.cs b/Applications/ConsumerApi/src/Controllers/Announcements/AnnouncementsController.cs deleted file mode 100644 index 6e407cd7f9..0000000000 --- a/Applications/ConsumerApi/src/Controllers/Announcements/AnnouncementsController.cs +++ /dev/null @@ -1,29 +0,0 @@ -using Backbone.BuildingBlocks.API; -using Backbone.BuildingBlocks.API.Mvc; -using Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; -using Backbone.ConsumerApi.Versions; -using Backbone.Modules.Announcements.Application.Announcements.Queries.ListAnnouncementsInLanguage; -using MediatR; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; - -namespace Backbone.ConsumerApi.Controllers.Announcements; - -[V2] -[Route("api/v{v:apiVersion}/[controller]")] -[Authorize("OpenIddict.Validation.AspNetCore")] -public class AnnouncementsController : ApiControllerBase -{ - public AnnouncementsController(IMediator mediator) : base(mediator) - { - } - - [HttpGet] - [ProducesResponseType>(StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - public async Task ListAnnouncements([FromQuery] string language) - { - var announcements = await _mediator.Send(new ListAnnouncementsForActiveIdentityInLanguageQuery { Language = language }); - return Ok(announcements); - } -} diff --git a/Applications/ConsumerApi/src/Program.cs b/Applications/ConsumerApi/src/Program.cs index 1e0f9cb237..7cf7f8e1e8 100644 --- a/Applications/ConsumerApi/src/Program.cs +++ b/Applications/ConsumerApi/src/Program.cs @@ -134,7 +134,7 @@ static void ConfigureServices(IServiceCollection services, IConfiguration config services.AddTransient(); services - .AddModule(configuration) + .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) @@ -217,6 +217,7 @@ static void Configure(WebApplication app, ConsumerApiConfiguration configuration app.MapMessagesEndpoints(); app.MapTagsEndpoints(); app.MapChallengesEndpoints(); + app.MapAnnouncementsEndpoints(); app.MapControllers(); app.MapHealthChecks("/health", new HealthCheckOptions { diff --git a/Applications/ConsumerApi/src/packages.lock.json b/Applications/ConsumerApi/src/packages.lock.json index 8539676eae..434fdf5137 100644 --- a/Applications/ConsumerApi/src/packages.lock.json +++ b/Applications/ConsumerApi/src/packages.lock.json @@ -1045,12 +1045,10 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Announcements.Application": { + "Backbone.Modules.Announcements.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Announcements.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Announcements.Domain": "[1.0.0, )" } }, "Backbone.Modules.Announcements.Contracts": { @@ -1071,8 +1069,9 @@ "Backbone.Modules.Announcements.Infrastructure": { "type": "Project", "dependencies": { + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Announcements.Application": "[1.0.0, )", + "Backbone.Modules.Announcements.Abstractions": "[1.0.0, )", "Backbone.Modules.Announcements.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1096,10 +1095,13 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", - "Backbone.Modules.Announcements.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Module": "[1.0.0, )", + "Backbone.Modules.Announcements.Abstractions": "[1.0.0, )", + "Backbone.Modules.Announcements.Domain": "[1.0.0, )", "Backbone.Modules.Announcements.Infrastructure": "[1.0.0, )", "Backbone.Modules.Announcements.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Announcements.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/packages.lock.json b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/packages.lock.json index 7b15b47bbf..3e54bac63b 100644 --- a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/packages.lock.json +++ b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/packages.lock.json @@ -1673,12 +1673,10 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Announcements.Application": { + "Backbone.Modules.Announcements.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Announcements.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Announcements.Domain": "[1.0.0, )" } }, "Backbone.Modules.Announcements.Contracts": { @@ -1699,8 +1697,9 @@ "Backbone.Modules.Announcements.Infrastructure": { "type": "Project", "dependencies": { + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Announcements.Application": "[1.0.0, )", + "Backbone.Modules.Announcements.Abstractions": "[1.0.0, )", "Backbone.Modules.Announcements.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1724,10 +1723,13 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", - "Backbone.Modules.Announcements.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Module": "[1.0.0, )", + "Backbone.Modules.Announcements.Abstractions": "[1.0.0, )", + "Backbone.Modules.Announcements.Domain": "[1.0.0, )", "Backbone.Modules.Announcements.Infrastructure": "[1.0.0, )", "Backbone.Modules.Announcements.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Announcements.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/DatabaseMigrator/src/DatabaseMigrator/Dockerfile b/Applications/DatabaseMigrator/src/DatabaseMigrator/Dockerfile index 705f98c0df..d272732560 100644 --- a/Applications/DatabaseMigrator/src/DatabaseMigrator/Dockerfile +++ b/Applications/DatabaseMigrator/src/DatabaseMigrator/Dockerfile @@ -38,7 +38,7 @@ COPY ["Modules/Synchronization/src/Synchronization.Contracts/Synchronization.Con COPY ["Modules/Tokens/src/Tokens.Contracts/Tokens.Contracts.csproj", "Modules/Tokens/src/Tokens.Contracts/packages.lock.json*", "Modules/Tokens/src/Tokens.Contracts/"] COPY ["Modules/Announcements/src/Announcements.Infrastructure/Announcements.Infrastructure.csproj", "Modules/Announcements/src/Announcements.Infrastructure/packages.lock.json*", "Modules/Announcements/src/Announcements.Infrastructure/"] -COPY ["Modules/Announcements/src/Announcements.Application/Announcements.Application.csproj", "Modules/Announcements/src/Announcements.Application/packages.lock.json*", "Modules/Announcements/src/Announcements.Application/"] +COPY ["Modules/Announcements/src/Announcements.Abstractions/Announcements.Abstractions.csproj", "Modules/Announcements/src/Announcements.Abstractions/packages.lock.json*", "Modules/Announcements/src/Announcements.Abstractions/"] COPY ["Modules/Announcements/src/Announcements.Domain/Announcements.Domain.csproj", "Modules/Announcements/src/Announcements.Domain/packages.lock.json*", "Modules/Announcements/src/Announcements.Domain/"] COPY ["Modules/Announcements/src/Announcements.Infrastructure.Database.SqlServer/Announcements.Infrastructure.Database.SqlServer.csproj", "Modules/Announcements/src/Announcements.Infrastructure.Database.SqlServer/packages.lock.json*", "Modules/Announcements/src/Announcements.Infrastructure.Database.SqlServer/"] COPY ["Modules/Announcements/src/Announcements.Infrastructure.Database.Postgres/Announcements.Infrastructure.Database.Postgres.csproj", "Modules/Announcements/src/Announcements.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Announcements/src/Announcements.Infrastructure.Database.Postgres/"] diff --git a/Applications/DatabaseMigrator/src/DatabaseMigrator/packages.lock.json b/Applications/DatabaseMigrator/src/DatabaseMigrator/packages.lock.json index 364501bc89..cfc45dbdfa 100644 --- a/Applications/DatabaseMigrator/src/DatabaseMigrator/packages.lock.json +++ b/Applications/DatabaseMigrator/src/DatabaseMigrator/packages.lock.json @@ -1557,12 +1557,10 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Announcements.Application": { + "Backbone.Modules.Announcements.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Announcements.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Announcements.Domain": "[1.0.0, )" } }, "Backbone.Modules.Announcements.Contracts": { @@ -1583,8 +1581,9 @@ "Backbone.Modules.Announcements.Infrastructure": { "type": "Project", "dependencies": { + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Announcements.Application": "[1.0.0, )", + "Backbone.Modules.Announcements.Abstractions": "[1.0.0, )", "Backbone.Modules.Announcements.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", diff --git a/Applications/DatabaseMigrator/test/DatabaseMigrator.Tests/packages.lock.json b/Applications/DatabaseMigrator/test/DatabaseMigrator.Tests/packages.lock.json index 31431883ee..77a9150c3d 100644 --- a/Applications/DatabaseMigrator/test/DatabaseMigrator.Tests/packages.lock.json +++ b/Applications/DatabaseMigrator/test/DatabaseMigrator.Tests/packages.lock.json @@ -1564,12 +1564,10 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Announcements.Application": { + "Backbone.Modules.Announcements.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Announcements.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Announcements.Domain": "[1.0.0, )" } }, "Backbone.Modules.Announcements.Contracts": { @@ -1590,8 +1588,9 @@ "Backbone.Modules.Announcements.Infrastructure": { "type": "Project", "dependencies": { + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Announcements.Application": "[1.0.0, )", + "Backbone.Modules.Announcements.Abstractions": "[1.0.0, )", "Backbone.Modules.Announcements.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", diff --git a/Applications/Housekeeper/src/Housekeeper/Dockerfile b/Applications/Housekeeper/src/Housekeeper/Dockerfile index 0acc9379e7..bc896a3a80 100644 --- a/Applications/Housekeeper/src/Housekeeper/Dockerfile +++ b/Applications/Housekeeper/src/Housekeeper/Dockerfile @@ -36,7 +36,7 @@ COPY ["BuildingBlocks/src/Crypto/Crypto.csproj", "BuildingBlocks/src/Crypto/pack COPY ["BuildingBlocks/src/BuildingBlocks.Module/BuildingBlocks.Module.csproj", "BuildingBlocks/src/BuildingBlocks.Module/packages.lock.json*", "BuildingBlocks/src/BuildingBlocks.Module/"] COPY ["Modules/Announcements/src/Announcements.Infrastructure.Database.Postgres/Announcements.Infrastructure.Database.Postgres.csproj", "Modules/Announcements/src/Announcements.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Announcements/src/Announcements.Infrastructure.Database.Postgres/"] COPY ["Modules/Announcements/src/Announcements.Infrastructure/Announcements.Infrastructure.csproj", "Modules/Announcements/src/Announcements.Infrastructure/packages.lock.json*", "Modules/Announcements/src/Announcements.Infrastructure/"] -COPY ["Modules/Announcements/src/Announcements.Application/Announcements.Application.csproj", "Modules/Announcements/src/Announcements.Application/packages.lock.json*", "Modules/Announcements/src/Announcements.Application/"] +COPY ["Modules/Announcements/src/Announcements.Abstractions/Announcements.Abstractions.csproj", "Modules/Announcements/src/Announcements.Abstractions/packages.lock.json*", "Modules/Announcements/src/Announcements.Abstractions/"] COPY ["Modules/Announcements/src/Announcements.Domain/Announcements.Domain.csproj", "Modules/Announcements/src/Announcements.Domain/packages.lock.json*", "Modules/Announcements/src/Announcements.Domain/"] COPY ["Modules/Announcements/src/Announcements.Infrastructure.Database.SqlServer/Announcements.Infrastructure.Database.SqlServer.csproj", "Modules/Announcements/src/Announcements.Infrastructure.Database.SqlServer/packages.lock.json*", "Modules/Announcements/src/Announcements.Infrastructure.Database.SqlServer/"] COPY ["Modules/Announcements/src/Announcements.Module/Announcements.Module.csproj", "Modules/Announcements/src/Announcements.Module/packages.lock.json*", "Modules/Announcements/src/Announcements.Module/"] diff --git a/Applications/Housekeeper/src/Housekeeper/Executor.cs b/Applications/Housekeeper/src/Housekeeper/Executor.cs index 62ab3ae633..12f99578e5 100644 --- a/Applications/Housekeeper/src/Housekeeper/Executor.cs +++ b/Applications/Housekeeper/src/Housekeeper/Executor.cs @@ -1,7 +1,7 @@ using System.Diagnostics; using Backbone.BuildingBlocks.Application.Housekeeping; using MediatR; -using ExecuteAnnouncementsModuleHousekeepingCommand = Backbone.Modules.Announcements.Application.Announcements.Commands.ExecuteHousekeeping.ExecuteHousekeepingCommand; +using ExecuteAnnouncementsModuleHousekeepingCommand = Backbone.Modules.Announcements.Module.Features.Announcements.ExecuteHousekeeping.ExecuteHousekeepingCommand; using ExecuteChallengesModuleHousekeepingCommand = Backbone.Modules.Challenges.Module.Features.Challenges.ExecuteHousekeeping.ExecuteHousekeepingCommand; using ExecuteDevicesModuleHousekeepingCommand = Backbone.Modules.Devices.Application.Devices.Commands.ExecuteHousekeeping.ExecuteHousekeepingCommand; using ExecuteFilesModuleHousekeepingCommand = Backbone.Modules.Files.Application.Files.Commands.ExecuteHousekeeping.ExecuteHousekeepingCommand; diff --git a/Applications/Housekeeper/src/Housekeeper/Program.cs b/Applications/Housekeeper/src/Housekeeper/Program.cs index 3ed56f678a..42a4cf344c 100644 --- a/Applications/Housekeeper/src/Housekeeper/Program.cs +++ b/Applications/Housekeeper/src/Housekeeper/Program.cs @@ -68,7 +68,7 @@ static HostApplicationBuilder CreateHostBuilder(string[] args) services.AddLogging(); services - .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) diff --git a/Applications/Housekeeper/src/Housekeeper/packages.lock.json b/Applications/Housekeeper/src/Housekeeper/packages.lock.json index b4e571086a..4bdc08d21c 100644 --- a/Applications/Housekeeper/src/Housekeeper/packages.lock.json +++ b/Applications/Housekeeper/src/Housekeeper/packages.lock.json @@ -1557,12 +1557,10 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Announcements.Application": { + "Backbone.Modules.Announcements.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Announcements.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Announcements.Domain": "[1.0.0, )" } }, "Backbone.Modules.Announcements.Contracts": { @@ -1583,8 +1581,9 @@ "Backbone.Modules.Announcements.Infrastructure": { "type": "Project", "dependencies": { + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Announcements.Application": "[1.0.0, )", + "Backbone.Modules.Announcements.Abstractions": "[1.0.0, )", "Backbone.Modules.Announcements.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1608,10 +1607,13 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", - "Backbone.Modules.Announcements.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Module": "[1.0.0, )", + "Backbone.Modules.Announcements.Abstractions": "[1.0.0, )", + "Backbone.Modules.Announcements.Domain": "[1.0.0, )", "Backbone.Modules.Announcements.Infrastructure": "[1.0.0, )", "Backbone.Modules.Announcements.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Announcements.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Dockerfile b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Dockerfile index 988e858a76..10b1c9107c 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Dockerfile +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Dockerfile @@ -29,7 +29,7 @@ COPY ["Modules/Synchronization/src/Synchronization.Contracts/Synchronization.Con COPY ["Modules/Tokens/src/Tokens.Contracts/Tokens.Contracts.csproj", "Modules/Tokens/src/Tokens.Contracts/packages.lock.json*", "Modules/Tokens/src/Tokens.Contracts/"] COPY ["BuildingBlocks/src/Crypto/Crypto.csproj", "BuildingBlocks/src/Crypto/packages.lock.json*", "BuildingBlocks/src/Crypto/"] COPY ["Modules/Announcements/src/Announcements.Domain/Announcements.Domain.csproj", "Modules/Announcements/src/Announcements.Domain/packages.lock.json*", "Modules/Announcements/src/Announcements.Domain/"] -COPY ["Modules/Announcements/src/Announcements.Application/Announcements.Application.csproj", "Modules/Announcements/src/Announcements.Application/packages.lock.json*", "Modules/Announcements/src/Announcements.Application/"] +COPY ["Modules/Announcements/src/Announcements.Abstractions/Announcements.Abstractions.csproj", "Modules/Announcements/src/Announcements.Abstractions/packages.lock.json*", "Modules/Announcements/src/Announcements.Abstractions/"] COPY ["Modules/Announcements/src/Announcements.Module/Announcements.Module.csproj", "Modules/Announcements/src/Announcements.Module/packages.lock.json*", "Modules/Announcements/src/Announcements.Module/"] COPY ["Modules/Announcements/src/Announcements.Infrastructure.Database.Postgres/Announcements.Infrastructure.Database.Postgres.csproj", "Modules/Announcements/src/Announcements.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Announcements/src/Announcements.Infrastructure.Database.Postgres/"] COPY ["Modules/Announcements/src/Announcements.Infrastructure/Announcements.Infrastructure.csproj", "Modules/Announcements/src/Announcements.Infrastructure/packages.lock.json*", "Modules/Announcements/src/Announcements.Infrastructure/"] diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Job.IdentityDeletion.csproj b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Job.IdentityDeletion.csproj index 56135ee763..5f6992bdf1 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Job.IdentityDeletion.csproj +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Job.IdentityDeletion.csproj @@ -20,7 +20,6 @@ - diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Program.cs b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Program.cs index 3390f414fe..a1f7e327af 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Program.cs +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Program.cs @@ -84,7 +84,7 @@ public static IHostBuilder CreateHostBuilder(string[] args) services.AddTransient(typeof(IHostedService), worker); services - .AddModule(configuration) + .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/ServicesExtensions.cs b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/ServicesExtensions.cs index f592473195..ff58724121 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/ServicesExtensions.cs +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/ServicesExtensions.cs @@ -6,7 +6,7 @@ public static class ServicesExtensions { public static IServiceCollection RegisterIdentityDeleters(this IServiceCollection services) { - services.AddTransient(); + services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/packages.lock.json b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/packages.lock.json index b468c316a3..d57b8346e4 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/packages.lock.json +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/packages.lock.json @@ -1284,12 +1284,10 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Announcements.Application": { + "Backbone.Modules.Announcements.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Announcements.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Announcements.Domain": "[1.0.0, )" } }, "Backbone.Modules.Announcements.Contracts": { @@ -1310,8 +1308,9 @@ "Backbone.Modules.Announcements.Infrastructure": { "type": "Project", "dependencies": { + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Announcements.Application": "[1.0.0, )", + "Backbone.Modules.Announcements.Abstractions": "[1.0.0, )", "Backbone.Modules.Announcements.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1335,10 +1334,13 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", - "Backbone.Modules.Announcements.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Module": "[1.0.0, )", + "Backbone.Modules.Announcements.Abstractions": "[1.0.0, )", + "Backbone.Modules.Announcements.Domain": "[1.0.0, )", "Backbone.Modules.Announcements.Infrastructure": "[1.0.0, )", "Backbone.Modules.Announcements.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Announcements.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests.Integration/packages.lock.json b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests.Integration/packages.lock.json index 30f40620d6..b816132d5f 100644 --- a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests.Integration/packages.lock.json +++ b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests.Integration/packages.lock.json @@ -1418,7 +1418,6 @@ "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Announcements.Application": "[1.0.0, )", "Backbone.Modules.Announcements.Module": "[1.0.0, )", "Backbone.Modules.Challenges.Module": "[1.0.0, )", "Backbone.Modules.Devices.Application": "[1.0.0, )", @@ -1444,12 +1443,10 @@ "Serilog.Sinks.Console": "[6.1.1, 6.1.1]" } }, - "Backbone.Modules.Announcements.Application": { + "Backbone.Modules.Announcements.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Announcements.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Announcements.Domain": "[1.0.0, )" } }, "Backbone.Modules.Announcements.Contracts": { @@ -1470,8 +1467,9 @@ "Backbone.Modules.Announcements.Infrastructure": { "type": "Project", "dependencies": { + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Announcements.Application": "[1.0.0, )", + "Backbone.Modules.Announcements.Abstractions": "[1.0.0, )", "Backbone.Modules.Announcements.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1495,10 +1493,13 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", - "Backbone.Modules.Announcements.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Module": "[1.0.0, )", + "Backbone.Modules.Announcements.Abstractions": "[1.0.0, )", + "Backbone.Modules.Announcements.Domain": "[1.0.0, )", "Backbone.Modules.Announcements.Infrastructure": "[1.0.0, )", "Backbone.Modules.Announcements.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Announcements.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/packages.lock.json b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/packages.lock.json index 30f40620d6..b816132d5f 100644 --- a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/packages.lock.json +++ b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/packages.lock.json @@ -1418,7 +1418,6 @@ "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Announcements.Application": "[1.0.0, )", "Backbone.Modules.Announcements.Module": "[1.0.0, )", "Backbone.Modules.Challenges.Module": "[1.0.0, )", "Backbone.Modules.Devices.Application": "[1.0.0, )", @@ -1444,12 +1443,10 @@ "Serilog.Sinks.Console": "[6.1.1, 6.1.1]" } }, - "Backbone.Modules.Announcements.Application": { + "Backbone.Modules.Announcements.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Announcements.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Announcements.Domain": "[1.0.0, )" } }, "Backbone.Modules.Announcements.Contracts": { @@ -1470,8 +1467,9 @@ "Backbone.Modules.Announcements.Infrastructure": { "type": "Project", "dependencies": { + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Announcements.Application": "[1.0.0, )", + "Backbone.Modules.Announcements.Abstractions": "[1.0.0, )", "Backbone.Modules.Announcements.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1495,10 +1493,13 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", - "Backbone.Modules.Announcements.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Module": "[1.0.0, )", + "Backbone.Modules.Announcements.Abstractions": "[1.0.0, )", + "Backbone.Modules.Announcements.Domain": "[1.0.0, )", "Backbone.Modules.Announcements.Infrastructure": "[1.0.0, )", "Backbone.Modules.Announcements.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Announcements.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Backbone.Tests.ArchUnit/Backbone.Tests.ArchUnit.csproj b/Backbone.Tests.ArchUnit/Backbone.Tests.ArchUnit.csproj index 3791d49ed4..8095fe82ba 100644 --- a/Backbone.Tests.ArchUnit/Backbone.Tests.ArchUnit.csproj +++ b/Backbone.Tests.ArchUnit/Backbone.Tests.ArchUnit.csproj @@ -23,7 +23,8 @@ - + + diff --git a/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs b/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs index e8b41bf5b0..5009546951 100644 --- a/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs +++ b/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs @@ -1,6 +1,8 @@ using System.Reflection; using ArchUnitNET.Domain; using ArchUnitNET.xUnitV3; +using FluentValidation; +using MediatR; using Shouldly; using static ArchUnitNET.Fluent.ArchRuleDefinition; using Assembly = System.Reflection.Assembly; @@ -9,7 +11,7 @@ namespace Backbone.Backbone.Tests.ArchUnit; public class VerticalSliceArchitecture { - private static readonly string[] MIGRATED_MODULES = ["Messages", "Tags", "Challenges"]; + private static readonly string[] MIGRATED_MODULES = ["Messages", "Tags", "Challenges", "Announcements"]; [Fact] public void DomainsShouldNotDependOnOuterLayers() @@ -39,10 +41,16 @@ public void InfrastructureShouldNotDependOnModulesOrApis() [InlineData("Messages")] [InlineData("Tags")] [InlineData("Challenges")] + [InlineData("Announcements")] public void UseCasesShouldResideInTheirModule(string module) { + var useCases = Classes().That().AreAssignableTo(typeof(IBaseRequest)) + .Or().AreAssignableTo(typeof(IRequestHandler<>)) + .Or().AreAssignableTo(typeof(IRequestHandler<,>)) + .Or().AreAssignableTo(typeof(IValidator)); + Classes().That().ResideInAssemblyMatching($@"^Backbone\.Modules\.{module}\.(?!.*Tests).*$") - .And().HaveNameMatching(".*(Command|Query|Handler|Validator)$") + .And().Are(useCases) .Should().ResideInAssemblyMatching($@"^Backbone\.Modules\.{module}\.Module(,|$)") .Check(Backbone.ARCHITECTURE); } @@ -51,6 +59,7 @@ public void UseCasesShouldResideInTheirModule(string module) [InlineData("Messages")] [InlineData("Tags")] [InlineData("Challenges")] + [InlineData("Announcements")] public void UseCasesShouldNotDependOnAdapters(string module) { Classes().That().Are(UseCases(module)).Should().NotDependOnAnyTypesThat() @@ -64,6 +73,7 @@ public void UseCasesShouldNotDependOnAdapters(string module) [InlineData("Messages")] [InlineData("Tags")] [InlineData("Challenges")] + [InlineData("Announcements")] public void ModulesShouldOnlyReferenceTheirOwnImplementationAndOtherContracts(string module) { foreach (var assembly in SolutionAssemblies().Where(assembly => assembly.GetName().Name == $"Backbone.Modules.{module}.Module")) diff --git a/Backbone.Tests.ArchUnit/packages.lock.json b/Backbone.Tests.ArchUnit/packages.lock.json index 39e4a018d2..d3bb8f5210 100644 --- a/Backbone.Tests.ArchUnit/packages.lock.json +++ b/Backbone.Tests.ArchUnit/packages.lock.json @@ -1719,7 +1719,6 @@ "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Announcements.Application": "[1.0.0, )", "Backbone.Modules.Announcements.Module": "[1.0.0, )", "Backbone.Modules.Challenges.Module": "[1.0.0, )", "Backbone.Modules.Devices.Application": "[1.0.0, )", @@ -1755,22 +1754,10 @@ "Microsoft.NET.Test.Sdk": "[18.8.1, 18.8.1]" } }, - "Backbone.Modules.Announcements.Application": { + "Backbone.Modules.Announcements.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Announcements.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" - } - }, - "Backbone.Modules.Announcements.Application.Tests": { - "type": "Project", - "dependencies": { - "Backbone.Modules.Announcements.Application": "[1.0.0, )", - "Backbone.UnitTestTools": "[1.0.0, )", - "FluentValidation.Validators.UnitTestExtension": "[1.12.0.5, 1.12.0.5]", - "GitHubActionsTestLogger": "[3.0.5, 3.0.5]", - "Microsoft.NET.Test.Sdk": "[18.8.1, 18.8.1]" + "Backbone.Modules.Announcements.Domain": "[1.0.0, )" } }, "Backbone.Modules.Announcements.Contracts": { @@ -1800,8 +1787,9 @@ "Backbone.Modules.Announcements.Infrastructure": { "type": "Project", "dependencies": { + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Announcements.Application": "[1.0.0, )", + "Backbone.Modules.Announcements.Abstractions": "[1.0.0, )", "Backbone.Modules.Announcements.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1825,13 +1813,26 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", - "Backbone.Modules.Announcements.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Module": "[1.0.0, )", + "Backbone.Modules.Announcements.Abstractions": "[1.0.0, )", + "Backbone.Modules.Announcements.Domain": "[1.0.0, )", "Backbone.Modules.Announcements.Infrastructure": "[1.0.0, )", "Backbone.Modules.Announcements.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Announcements.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, + "Backbone.Modules.Announcements.Module.Tests": { + "type": "Project", + "dependencies": { + "Backbone.Modules.Announcements.Module": "[1.0.0, )", + "Backbone.UnitTestTools": "[1.0.0, )", + "FluentValidation.Validators.UnitTestExtension": "[1.12.0.5, 1.12.0.5]", + "GitHubActionsTestLogger": "[3.0.5, 3.0.5]", + "Microsoft.NET.Test.Sdk": "[18.8.1, 18.8.1]" + } + }, "Backbone.Modules.Challenges.Abstractions": { "type": "Project", "dependencies": { diff --git a/Backbone.slnx b/Backbone.slnx index bce7b95191..075e10513b 100644 --- a/Backbone.slnx +++ b/Backbone.slnx @@ -100,7 +100,7 @@ - + @@ -109,7 +109,7 @@ - + diff --git a/Modules/Announcements/src/Announcements.Abstractions/Announcements.Abstractions.csproj b/Modules/Announcements/src/Announcements.Abstractions/Announcements.Abstractions.csproj new file mode 100644 index 0000000000..8f9ecdcab7 --- /dev/null +++ b/Modules/Announcements/src/Announcements.Abstractions/Announcements.Abstractions.csproj @@ -0,0 +1,5 @@ + + + + + diff --git a/Modules/Announcements/src/Announcements.Application/Infrastructure/Persistence/Repository/IAnnouncementsRepository.cs b/Modules/Announcements/src/Announcements.Abstractions/IAnnouncementsRepository.cs similarity index 85% rename from Modules/Announcements/src/Announcements.Application/Infrastructure/Persistence/Repository/IAnnouncementsRepository.cs rename to Modules/Announcements/src/Announcements.Abstractions/IAnnouncementsRepository.cs index 04234007cd..97ec40ab4e 100644 --- a/Modules/Announcements/src/Announcements.Application/Infrastructure/Persistence/Repository/IAnnouncementsRepository.cs +++ b/Modules/Announcements/src/Announcements.Abstractions/IAnnouncementsRepository.cs @@ -1,7 +1,7 @@ -using System.Linq.Expressions; +using System.Linq.Expressions; using Backbone.Modules.Announcements.Domain.Entities; -namespace Backbone.Modules.Announcements.Application.Infrastructure.Persistence.Repository; +namespace Backbone.Modules.Announcements.Abstractions; public interface IAnnouncementsRepository { diff --git a/Modules/Announcements/src/Announcements.Abstractions/packages.lock.json b/Modules/Announcements/src/Announcements.Abstractions/packages.lock.json new file mode 100644 index 0000000000..d2894b4d5d --- /dev/null +++ b/Modules/Announcements/src/Announcements.Abstractions/packages.lock.json @@ -0,0 +1,88 @@ +{ + "version": 2, + "dependencies": { + "net10.0": { + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "5wu/GrYVd8mG2DVUw3vFJzF+O336TyTGg/Kmcgw9bfwYhCoFiV5lR5QeEmKecJyrW4W54nMfD3p3589E8a7czQ==" + }, + "Backbone.BuildingBlocks.Domain": { + "type": "Project", + "dependencies": { + "Backbone.Tooling": "[1.0.0, )" + } + }, + "Backbone.DevelopmentKit.Identity": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )", + "SimpleBase": "[5.6.3, 5.6.3]" + } + }, + "Backbone.Modules.Announcements.Contracts": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )" + } + }, + "Backbone.Modules.Announcements.Domain": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )", + "Backbone.DevelopmentKit.Identity": "[1.0.0, )", + "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", + "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]" + } + }, + "Backbone.Tooling": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Options": "[10.0.10, 10.0.10]" + } + }, + "CSharpFunctionalExtensions": { + "type": "CentralTransitive", + "requested": "[3.7.0, 3.7.0]", + "resolved": "3.7.0", + "contentHash": "eMZp8tc88O96eEFutiIskF3LE8lFY3fjbNRGfNa1ca0CD9sB8A00r5ltyYDih/7UFdJdVbhVq7tGeHI8xj6DlQ==" + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "z/2xXlFw2aLGjHyEm6E0tQ+In6VfzQzTrtArbQ2c0TQE16ZbyDCMGPvaUT9I0s8rgy9sRWlU2P9waW37qV04qA==" + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "zkFxGYUvdxAvIKTyXHrmW+Sux53D4SezD9dMyZ6hrwwzPQJNuwCRy1f5W7AvYTqacEGhWF2XderRQG1OvbV8og==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10" + } + }, + "Microsoft.Extensions.Options": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "srnhnk7nE8krBiIXp71LvBmKBtraBONWSRzdjJgRv1Ko9Mp8IVNqv4vIS9hGeVteBig8aQkva9ZG+sC+o5sVcA==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", + "Microsoft.Extensions.Primitives": "10.0.10" + } + }, + "SimpleBase": { + "type": "CentralTransitive", + "requested": "[5.6.3, 5.6.3]", + "resolved": "5.6.3", + "contentHash": "ayL730f1gdQVYmFFLKSX83QcoltyKSMBsV94qfCBpZHMaJz/e3ALuXKZDD8SkseWbNHxBe0HxLRBe5OOpQ9HpA==" + } + }, + "net10.0/linux-arm64": {}, + "net10.0/linux-x64": {}, + "net10.0/osx-arm64": {}, + "net10.0/win-x64": {} + } +} \ No newline at end of file diff --git a/Modules/Announcements/src/Announcements.Application/Announcements.Application.csproj b/Modules/Announcements/src/Announcements.Application/Announcements.Application.csproj deleted file mode 100644 index 2aacf0733c..0000000000 --- a/Modules/Announcements/src/Announcements.Application/Announcements.Application.csproj +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/Modules/Announcements/src/Announcements.Application/Announcements/Commands/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs b/Modules/Announcements/src/Announcements.Application/Announcements/Commands/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs deleted file mode 100644 index 1ab786508d..0000000000 --- a/Modules/Announcements/src/Announcements.Application/Announcements/Commands/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs +++ /dev/null @@ -1,5 +0,0 @@ -using MediatR; - -namespace Backbone.Modules.Announcements.Application.Announcements.Commands.ExecuteHousekeeping; - -public class ExecuteHousekeepingCommand : IRequest; diff --git a/Modules/Announcements/src/Announcements.Application/Announcements/Queries/GetAnnouncementById/GetAnnouncementByIdQuery.cs b/Modules/Announcements/src/Announcements.Application/Announcements/Queries/GetAnnouncementById/GetAnnouncementByIdQuery.cs deleted file mode 100644 index 78130f8bbb..0000000000 --- a/Modules/Announcements/src/Announcements.Application/Announcements/Queries/GetAnnouncementById/GetAnnouncementByIdQuery.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Backbone.Modules.Announcements.Application.Announcements.DTOs; -using MediatR; - -namespace Backbone.Modules.Announcements.Application.Announcements.Queries.GetAnnouncementById; - -public class GetAnnouncementByIdQuery : IRequest -{ - public required string Id { get; init; } -} diff --git a/Modules/Announcements/src/Announcements.Application/Announcements/Queries/ListAnnouncements/ListAllAnnouncementsQuery.cs b/Modules/Announcements/src/Announcements.Application/Announcements/Queries/ListAnnouncements/ListAllAnnouncementsQuery.cs deleted file mode 100644 index c574af2ed4..0000000000 --- a/Modules/Announcements/src/Announcements.Application/Announcements/Queries/ListAnnouncements/ListAllAnnouncementsQuery.cs +++ /dev/null @@ -1,5 +0,0 @@ -using MediatR; - -namespace Backbone.Modules.Announcements.Application.Announcements.Queries.ListAnnouncements; - -public class ListAnnouncementsQuery : IRequest; diff --git a/Modules/Announcements/src/Announcements.Application/ApplicationConfiguration.cs b/Modules/Announcements/src/Announcements.Application/ApplicationConfiguration.cs deleted file mode 100644 index 39b7841508..0000000000 --- a/Modules/Announcements/src/Announcements.Application/ApplicationConfiguration.cs +++ /dev/null @@ -1,3 +0,0 @@ -namespace Backbone.Modules.Announcements.Application; - -public class ApplicationConfiguration; diff --git a/Modules/Announcements/src/Announcements.Application/packages.lock.json b/Modules/Announcements/src/Announcements.Application/packages.lock.json deleted file mode 100644 index b7b2eaa6a7..0000000000 --- a/Modules/Announcements/src/Announcements.Application/packages.lock.json +++ /dev/null @@ -1,1372 +0,0 @@ -{ - "version": 2, - "dependencies": { - "net10.0": { - "FluentValidation.DependencyInjectionExtensions": { - "type": "Direct", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, - "AWSSDK.Core": { - "type": "Transitive", - "resolved": "4.0.100.9", - "contentHash": "OPYy41jZjXwxxcYRotaq24HDrwUnVtBB/mvg1IwB9D1ICXAtHqMa1sp2hpmlVJCZwjlcrPcTCJIejInvV1vp5g==" - }, - "Azure.Core": { - "type": "Transitive", - "resolved": "1.60.0", - "contentHash": "qCa5DLAq0w14aTl9/bvMZNA/QxPzYj1a4zakrpeudxWd4D4YliRHRfccD3yFECeHkMkvQjMmyWLggb8bzhDVKA==", - "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "10.0.9", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.9", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.9", - "Microsoft.Identity.Client": "4.84.2", - "Microsoft.Identity.Client.Extensions.Msal": "4.84.2", - "System.ClientModel": "1.14.0", - "System.Memory.Data": "10.0.9" - } - }, - "Azure.Core.Amqp": { - "type": "Transitive", - "resolved": "1.3.1", - "contentHash": "AY1ZM4WwLBb9L2WwQoWs7wS2XKYg83tp3yVVdgySdebGN0FuIszuEqCy3Nhv6qHpbkjx/NGuOTsUbF/oNGBgwA==", - "dependencies": { - "Microsoft.Azure.Amqp": "2.6.7", - "System.Memory.Data": "1.0.2" - } - }, - "Azure.Identity": { - "type": "Transitive", - "resolved": "1.17.1", - "contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Microsoft.Identity.Client": "4.78.0", - "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" - } - }, - "Azure.Storage.Common": { - "type": "Transitive", - "resolved": "12.28.0", - "contentHash": "5l8YhNrks38zKLGFW2BBFLwieyamH/xauABSASsdpZv79G0f+n2n22IjkRmUqCmALSupkwRHh2LOhbW3yj5Qgw==", - "dependencies": { - "Azure.Core": "1.55.0", - "System.IO.Hashing": "10.0.3" - } - }, - "Castle.Core": { - "type": "Transitive", - "resolved": "5.2.1", - "contentHash": "wHARzQA695jwwKreOzNsq54KiGqKP38tv8hi8e2FXDEC/sA6BtrX90tVPDkOfVu13PbEzr00TCV8coikl+D1Iw==", - "dependencies": { - "System.Diagnostics.EventLog": "6.0.0" - } - }, - "Google.Api.CommonProtos": { - "type": "Transitive", - "resolved": "2.17.0", - "contentHash": "elfQPknFr495hm7vdy6ZlgyQh6yzZq9TU7sS35L/Fj/fqjM/mUGau9gVJLhvQEtUlPjtR80hpn/m9HvBMyCXIw==", - "dependencies": { - "Google.Protobuf": "[3.31.1, 4.0.0]" - } - }, - "Google.Api.Gax": { - "type": "Transitive", - "resolved": "4.13.1", - "contentHash": "ujDpZk7O2VqAEIqcSlhH0FKzVpGZWly/qcNjHxpNUrL445Tei9PHnu4V1pwW2WDiMDvo3TpL1Bi4DeU525Afrg==", - "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "6.0.0", - "Newtonsoft.Json": "13.0.4" - } - }, - "Google.Api.Gax.Grpc": { - "type": "Transitive", - "resolved": "4.13.1", - "contentHash": "QgYF0bd8z6xWSVLGkGAMPB70seJSa9J02lFn8LT0Rb7PjSxZYpX+wU6LbVmghxDi6Wd64taulpX37pFq20J61g==", - "dependencies": { - "Google.Api.CommonProtos": "2.17.0", - "Google.Api.Gax": "4.13.1", - "Google.Apis.Auth": "1.73.0", - "Grpc.Auth": "[2.71.0, 3.0.0)", - "Grpc.Core.Api": "[2.71.0, 3.0.0)", - "Grpc.Net.Client": "[2.71.0, 3.0.0)", - "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0" - } - }, - "Google.Api.Gax.Rest": { - "type": "Transitive", - "resolved": "4.13.1", - "contentHash": "wDfFZXKoHC6sy+Yfub/4cLQOb5ozBVPqDOrxCUAeTfku4d96ILqgzulJSdkPHbiT3oWB3hlYTdJgUwNSJjyo+A==", - "dependencies": { - "Google.Api.Gax": "4.13.1", - "Google.Apis.Auth": "1.73.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0" - } - }, - "Google.Apis": { - "type": "Transitive", - "resolved": "1.74.0", - "contentHash": "Z6hSkmRD6V8/raSBqn/EsPpNop6suaLaGE9DbSY3yRE5G47l4zYqrJgapcLARk2Z3TsQUDmWz+w/tob3wuVt3g==", - "dependencies": { - "Google.Apis.Core": "1.74.0" - } - }, - "Google.Apis.Auth": { - "type": "Transitive", - "resolved": "1.74.0", - "contentHash": "43H4foh3zfWgboK8QnJjIfPQuBiS794TxqQLDfeE3erQSluKmEN0qeDuwxLTpSr9Mtwj76S4LWxPneuSbC6fNg==", - "dependencies": { - "Google.Apis": "1.74.0", - "Google.Apis.Core": "1.74.0", - "System.Management": "7.0.2" - } - }, - "Google.Apis.Core": { - "type": "Transitive", - "resolved": "1.74.0", - "contentHash": "gWOIiks6yo2TRliIyy10V18BJOO2BfUSPJFiTW6Tfap4tm3hFj7nvYU3XIfwzAxwoIy6nsBoqVDt9iBDSXrvYQ==", - "dependencies": { - "Newtonsoft.Json": "13.0.4" - } - }, - "Google.Apis.Storage.v1": { - "type": "Transitive", - "resolved": "1.74.0.4115", - "contentHash": "9J3YPPSG53xwQLzdQ304dI+DMtVxJDpEazA2QQ2LA8IJoM4VUu4DpIxyhTGxpnAK4Db7s4LwzeNi6NkPKM3HzQ==", - "dependencies": { - "Google.Apis": "1.74.0", - "Google.Apis.Auth": "1.74.0" - } - }, - "Google.Cloud.Iam.V1": { - "type": "Transitive", - "resolved": "3.5.0", - "contentHash": "CTLBAQ7WxsLoA4lovpvhF4MRUJH64smrIjuD/0jDrLs6zpbpf+f8Ur8ekRKv67kwlpN6Ug0q7EuT2csWDEczlQ==", - "dependencies": { - "Google.Api.Gax.Grpc": "[4.12.1, 5.0.0)" - } - }, - "Google.Protobuf": { - "type": "Transitive", - "resolved": "3.31.1", - "contentHash": "gSnJbUmGiOTdWddPhqzrEscHq9Ls6sqRDPB9WptckyjTUyx70JOOAaDLkFff8gManZNN3hllQ4aQInnQyq/Z/A==" - }, - "Grpc.Auth": { - "type": "Transitive", - "resolved": "2.71.0", - "contentHash": "t2aGh/pMgqmc3GimtYfC7VcgVY/VSbk6SLH+61wewsgK45tzxxD9nYYItT5bpLn7fbebirmHXfgJcVKIArd0cg==", - "dependencies": { - "Google.Apis.Auth": "1.69.0", - "Grpc.Core.Api": "2.71.0" - } - }, - "Grpc.Core.Api": { - "type": "Transitive", - "resolved": "2.71.0", - "contentHash": "QquqUC37yxsDzd1QaDRsH2+uuznWPTS8CVE2Yzwl3CvU4geTNkolQXoVN812M2IwT6zpv3jsZRc9ExJFNFslTg==" - }, - "Grpc.Net.Client": { - "type": "Transitive", - "resolved": "2.71.0", - "contentHash": "U1vr20r5ngoT9nlb7wejF28EKN+taMhJsV9XtK9MkiepTZwnKxxiarriiMfCHuDAfPUm9XUjFMn/RIuJ4YY61w==", - "dependencies": { - "Grpc.Net.Common": "2.71.0", - "Microsoft.Extensions.Logging.Abstractions": "6.0.0" - } - }, - "Grpc.Net.Common": { - "type": "Transitive", - "resolved": "2.71.0", - "contentHash": "v0c8R97TwRYwNXlC8GyRXwYTCNufpDfUtj9la+wUrZFzVWkFJuNAltU+c0yI3zu0jl54k7en6u2WKgZgd57r2Q==", - "dependencies": { - "Grpc.Core.Api": "2.71.0" - } - }, - "MedallionTopologicalSort": { - "type": "Transitive", - "resolved": "1.0.0", - "contentHash": "dcAqM8TcyZQ/T466CvqNMUUn/G0FQE+4R7l62ngXH7hLFP9yA7yoP/ySsLgiXx3pGUQC3J+cUvXmJOOR/eC+oQ==" - }, - "Microsoft.AspNetCore.Cryptography.Internal": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "T/kOT3kAVZU1B0QlpRxASpdbAJ/o5DLFW7bWS6vyE44uMqPmojEcaFENt6ww1xaLH++ZNwsEJ1YUOwPK050lNQ==" - }, - "Microsoft.AspNetCore.Cryptography.KeyDerivation": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "w6P461MvhJrttEcyGfN00tf8rdwQJFK+s0pebR44jiTzAa+PUZ804xzbGZQpR6klSFd212M4DIIROSaW0Acifg==", - "dependencies": { - "Microsoft.AspNetCore.Cryptography.Internal": "10.0.10" - } - }, - "Microsoft.Azure.Amqp": { - "type": "Transitive", - "resolved": "2.7.0", - "contentHash": "gm/AEakujttMzrDhZ5QpRz3fICVkYDn/oDG9SmxDP+J7R8JDBXYU9WWG7hr6wQy40mY+wjUF0yUGXDPRDRNJwQ==" - }, - "Microsoft.Bcl.AsyncInterfaces": { - "type": "Transitive", - "resolved": "10.0.9", - "contentHash": "Aq7M8lG6BrHeatqKqncVm9m55ec34k6nnfPRLe/PvGg+b/pAsRM2ejofeKmCLjTXMa+5NGXm382f8CG/D5WDow==" - }, - "Microsoft.Data.SqlClient": { - "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" - } - }, - "Microsoft.Data.SqlClient.SNI.runtime": { - "type": "Transitive", - "resolved": "6.0.2", - "contentHash": "f+pRODTWX7Y67jXO3T5S2dIPZ9qMJNySjlZT/TKmWVNWe19N8jcWmHaqHnnchaq3gxEKv1SWVY5EFzOD06l41w==" - }, - "Microsoft.EntityFrameworkCore.Analyzers": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "2gLDordUCGf3aNOOuqtTbP5mxhiP9nk6TnvGiE3RnqT891O+Zf/qKu1PIREubs1M16A0SImr4vULBfU5BTDs1Q==" - }, - "Microsoft.EntityFrameworkCore.SqlServer.Abstractions": { - "type": "Transitive", - "resolved": "10.0.3", - "contentHash": "K73jOafOjF8oMLrPhXz3er6csmXCOGBQbeXsFPXrtz7/4QJJYalcOHQzoppEhl1gwLEZNnJMUDlOWcQ1FeW27Q==", - "dependencies": { - "Microsoft.SqlServer.Types": "160.1000.6" - } - }, - "Microsoft.EntityFrameworkCore.SqlServer.HierarchyId": { - "type": "Transitive", - "resolved": "10.0.3", - "contentHash": "tkiCR+rJMb9pib0jlJH1nItw36SlFj0l8sD/PQSd7sj1cvKhW1qmA7hahrp3WOvp7ZsIIXgMDUltryzinNOMTw==", - "dependencies": { - "Microsoft.Data.SqlClient": "6.1.1", - "Microsoft.EntityFrameworkCore.SqlServer": "10.0.3", - "Microsoft.EntityFrameworkCore.SqlServer.Abstractions": "10.0.3", - "Microsoft.Extensions.Caching.Memory": "10.0.3", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.3", - "Microsoft.Extensions.Logging": "10.0.3", - "Microsoft.SqlServer.Types": "160.1000.6" - } - }, - "Microsoft.Extensions.Caching.Abstractions": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "4ZFBNE+jzR+CrWWlhOesnmywCW7pYKT0dxyAQRdL11yJwxe4jvcAu31eorFtEkoFeCDcUTeNssgPv2yaRRptaQ==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.Caching.Memory": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "N1w5H7uK6gCTnCBZAWzE0/EQYSPysij/uYwDqntqBVvBa6bjMmBKitsnEFd6yh/SX3wLm67nO6+OnZ84K+gZWg==", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "10.0.10", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.Compliance.Abstractions": { - "type": "Transitive", - "resolved": "10.8.0", - "contentHash": "7I0DXMTCqpXpXg+SLLDlfedtv6DN5Lgiv+PR3MclzqKPOHNB17YP42KMNI61ckSrffh0xsuIqQyCIjvWc6vUuw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.ObjectPool": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.CommandLine": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "33cBeR2HRbzHUTtmcmLdNOApneNGcymwwL4arHuotgVK9Frba8kcDTrvVTj7cSCmF1R9OiSbZH0KxNOwab3HUg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.EnvironmentVariables": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "KRfFSSCV58vEdU7mPED/YMzeovIWF5P0g8s9K8n9HEfy0/WzMq37SrPdXdFN5/dFT/rPMHpF7AvpoXHckbcBFg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.FileExtensions": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "ZOhZYwvbXGTgGVRwswIirofEMVHuWdxjdh0JeUZXwaF9cgcjXdz/t0ELtgaevw7ezTyv47yPNCgGreWtLkn3IQ==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Physical": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.UserSecrets": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "1s1sKFTk/Foam64JY6+m/diH8drL3Wx6V3gtSd5v1IEZtszZYyc1pW8uRnMblzpNiR0l0t8gGk7tXj3xHzFgdg==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.Json": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Physical": "10.0.10" - } - }, - "Microsoft.Extensions.Diagnostics": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "Kr/e7lUf4+N8tacbqJ2Ctwe/HarKdAc9ZkgKVVqvtJDBKbez+T/KnUwu82KSlnBp/SrpBcxc7u7xkE2oUZT/5Q==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.10", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10" - } - }, - "Microsoft.Extensions.Diagnostics.Abstractions": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "9uWiKpeOVac355STyChWR/pliFX/5CeLqChW9kKsaxyDH4EUTZxMkT4Jwp/J/peLm0GBFmSX5c0WCse3yCnq1Q==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Extensions.Diagnostics.HealthChecks": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "R0O5oG+zAJeBSM8nNTa+Ycj2Zobyr/v6Ilo7Dha0sNB2Vq/XXoLdoecj9DAWGbN8YrPaW6u8+osTQ5Ypj7ZF0w==", - "dependencies": { - "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": "10.0.10", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "6euxgVR7NS83y0a2wLRAxfYXusLQJ2e1ah0MpQgYTYMs5lYrmdNP79C6T8uvRZdP87n5mcCcp6+w0EyWAidKZw==" - }, - "Microsoft.Extensions.FileProviders.Abstractions": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "c5zqFCY9DiIpMovLd7/d/CTiEtrMOuQ639dhv3PABtKQIKNQikSHwQt8+N679uii9q+B55lgK28Uv64FOwEu8w==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.FileProviders.Physical": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "jhJAyo38kSrH3ARvWUk0h8itogVnQu2DCZuPo+s0Z+tXes0ugTxMPaHYzap85785eHQmPFqD9TYERqBbtGxn/w==", - "dependencies": { - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.FileSystemGlobbing": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.FileSystemGlobbing": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "jSOCVxEwCd4Aq925kJVz1kSO1EpX2OHYKL04qVREXkDU7Ce3pVDdHPYm+fEy8y/th2kJf/DAstRHpJAqoNWP8w==" - }, - "Microsoft.Extensions.Logging.Configuration": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "cLrqxkuEfcilZ8SjK+9KAnpLk9lOoMPaOokF+wRUYie+iUEcdX4/p/+gJkt0BYgWLthjpBUCkVTBI6Kxg0nsOw==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.Binder": "10.0.10", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.Console": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "VIlNzPwPS0GeQVSmCqqo36ugryX3LpE9ul6gEkks5VLET3weH/XMLeWmclwfoGn4Nxi2mwVibB+OZBVJ9tDqvg==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging.Configuration": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.Debug": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "8+TZBnV5fgBXoVNJ5ROSErUwYogk4hOgV7c2HWK1u5cqKGmiUTUn7+KqZ35iQu8e/B7Ykccyz5OTjdXcidNZ9g==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.EventLog": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "0RE4951AzQ+YD4gVrvbq0BhdsiBgSDo44yM7+QBZ2mrmMJeNjY+teCIYfUjqDPVYnKs0HR6SkkhgrX1YgXZq3Q==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "System.Diagnostics.EventLog": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.EventSource": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "85SAPwXhJtdBInzN2k7SChiFiBGh3KOWay5AfoY+GREF6P7oZA98+ST2p7Z9384iLKYjkZSKIZ/FqIO5aojtNw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.ObjectPool": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "Tx0R6PY9MNSh0mDKSxbpHLuuec93IxF1cel+1ithQnMNr/vbfLSSHOQHGHIppAJCGfPcEo/wO1Ylj+QpXtzo3A==" - }, - "Microsoft.Extensions.Options.ConfigurationExtensions": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "tnBmu/LwF25ZQK+HBNCu2xrwnkKoB/XEbJyooGGoYxHrhvxbSKi7eOFiJ4AXBy/QU4vtCvCJfoi8k9Ej72qzOQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.Binder": "10.0.10", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.Primitives": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "5wu/GrYVd8mG2DVUw3vFJzF+O336TyTGg/Kmcgw9bfwYhCoFiV5lR5QeEmKecJyrW4W54nMfD3p3589E8a7czQ==" - }, - "Microsoft.Extensions.Telemetry.Abstractions": { - "type": "Transitive", - "resolved": "10.8.0", - "contentHash": "XHlOerNKjVrPJqbuFi196tyFhS7eNMoPUC800xJmCGsSiruE/goGoKyBKzS1HeelAGnoFPFrS+LgNitXNeEYRQ==", - "dependencies": { - "Microsoft.Extensions.Compliance.Abstractions": "10.8.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.ObjectPool": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Identity.Client": { - "type": "Transitive", - "resolved": "4.84.2", - "contentHash": "Va9FjmABSgj/lcUfHH0pBNQkmS7SNyepz2ERV7Yynp6QgEYpFdSqR6Vzy1WWipN8GS5pBHuXoZbqaDWuARCrHQ==", - "dependencies": { - "Microsoft.IdentityModel.Abstractions": "8.14.0" - } - }, - "Microsoft.Identity.Client.Extensions.Msal": { - "type": "Transitive", - "resolved": "4.84.2", - "contentHash": "+D98LaU3dOu/Nzs6kgbBJapMvH7iwYcAeC99XwSkpmEadsPv6rozecOl9P6m4A3RfpOuPt9e6J6TwwUUp3+M4w==", - "dependencies": { - "Microsoft.Identity.Client": "4.84.2", - "System.Security.Cryptography.ProtectedData": "4.5.0" - } - }, - "Microsoft.IdentityModel.Abstractions": { - "type": "Transitive", - "resolved": "8.14.0", - "contentHash": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==" - }, - "Microsoft.IdentityModel.JsonWebTokens": { - "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "3Izi75UCUssvo8LPx3OVnEeZay58qaFicrtSnbtUt7q8qQi0gy46gh4V8VUTkMVMKXV6VMyjBVmeNNgeCUJuIw==", - "dependencies": { - "Microsoft.IdentityModel.Tokens": "7.7.1" - } - }, - "Microsoft.IdentityModel.Logging": { - "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "BZNgSq/o8gsKExdYoBKPR65fdsxW0cTF8PsdqB8y011AGUJJW300S/ZIsEUD0+sOmGc003Gwv3FYbjrVjvsLNQ==", - "dependencies": { - "Microsoft.IdentityModel.Abstractions": "7.7.1" - } - }, - "Microsoft.IdentityModel.Protocols": { - "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "h+fHHBGokepmCX+QZXJk4Ij8OApCb2n2ktoDkNX5CXteXsOxTHMNgjPGpAwdJMFvAL7TtGarUnk3o97NmBq2QQ==", - "dependencies": { - "Microsoft.IdentityModel.Tokens": "7.7.1" - } - }, - "Microsoft.IdentityModel.Protocols.OpenIdConnect": { - "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "yT2Hdj8LpPbcT9C9KlLVxXl09C8zjFaVSaApdOwuecMuoV4s6Sof/mnTDz/+F/lILPIBvrWugR9CC7iRVZgbfQ==", - "dependencies": { - "Microsoft.IdentityModel.Protocols": "7.7.1", - "System.IdentityModel.Tokens.Jwt": "7.7.1" - } - }, - "Microsoft.IdentityModel.Tokens": { - "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "fQ0VVCba75lknUHGldi3iTKAYUQqbzp1Un8+d9cm9nON0Gs8NAkXddNg8iaUB0qi/ybtAmNWizTR4avdkCJ9pQ==", - "dependencies": { - "Microsoft.IdentityModel.Logging": "7.7.1" - } - }, - "Microsoft.SqlServer.Server": { - "type": "Transitive", - "resolved": "1.0.0", - "contentHash": "N4KeF3cpcm1PUHym1RmakkzfkEv3GRMyofVv40uXsQhCQeglr2OHNcUk2WOG51AKpGO8ynGpo9M/kFXSzghwug==" - }, - "Microsoft.SqlServer.Types": { - "type": "Transitive", - "resolved": "160.1000.6", - "contentHash": "4kk+rz5vnIPr9ENzm8KttUbhBKftv0uHSSFDVjc5OuKPtRP5q0lDbYUy5ZsoYCAG3RrZdJoxPnWN2JNozZAiGA==", - "dependencies": { - "Microsoft.SqlServer.Server": "1.0.0" - } - }, - "NetTopologySuite": { - "type": "Transitive", - "resolved": "2.6.0", - "contentHash": "1B1OTacTd4QtFyBeuIOcThwSSLUdRZU3bSFIwM8vk36XiZlBMi3K36u74e4OqwwHRHUuJC1PhbDx4hyI266X1Q==" - }, - "NetTopologySuite.IO.SqlServerBytes": { - "type": "Transitive", - "resolved": "2.1.0", - "contentHash": "R4BcV19f2l6EjHSjh/EHwLhYQHrOov9vig1EW5oBm0iqlZOgaIJm5tBnlbFnYlvdYOPuf5p0Qtf8PCVwH77Wbg==", - "dependencies": { - "NetTopologySuite": "[2.0.0, 3.0.0-A)" - } - }, - "Newtonsoft.Json": { - "type": "Transitive", - "resolved": "13.0.4", - "contentHash": "pdgNNMai3zv51W5aq268sujXUyx7SNdE2bj1wZcWjAQrKMFZV260lbqYop1d2GM67JI1huLRwxo9ZqnfF/lC6A==" - }, - "Npgsql": { - "type": "Transitive", - "resolved": "10.0.3", - "contentHash": "7nb5YzXuvWWJxB0J8DiyL3we+X4FOctZrt0fIBnucOIaIevFEEwGQVZKtiu9olXdlNAK1eNgqSral6r/jlhI4w==", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "10.0.0" - } - }, - "Polly.Core": { - "type": "Transitive", - "resolved": "8.7.0", - "contentHash": "BS2t+nsBer16PIebCEPNBK5fgMisADQyRCd7K+BgkMWpFmSaiYE+rVVNpFhGRqUkJmNSLmw0uCNzHHWfgml28Q==" - }, - "System.ClientModel": { - "type": "Transitive", - "resolved": "1.14.0", - "contentHash": "yhIJHDW3Hh5kcvhHv3ww1T8qvya06Nlwo/SR/rke4/fHXtyKiqQV/9b/VDhnVI7QUcMnpfvh4pIEFhNsTDLeKQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.3", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.3", - "Microsoft.Extensions.Logging.Abstractions": "10.0.3", - "System.Memory.Data": "10.0.3" - } - }, - "System.CodeDom": { - "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "GLltyqEsE5/3IE+zYRP5sNa1l44qKl9v+bfdMcwg+M9qnQf47wK3H0SUR/T+3N4JEQXF3vV4CSuuo0rsg+nq2A==" - }, - "System.Configuration.ConfigurationManager": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "vPinosRgEk1CGjohbv0pDuz6gPprkWo5xvBTjOJjks5JOgOEWvPndq5NngGxiTcBcy1+k9GwzZ1c3Bp2fU5ezw==", - "dependencies": { - "System.Diagnostics.EventLog": "9.0.11", - "System.Security.Cryptography.ProtectedData": "9.0.11" - } - }, - "System.Diagnostics.EventLog": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" - }, - "System.IdentityModel.Tokens.Jwt": { - "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "rQkO1YbAjLwnDJSMpRhRtrc6XwIcEOcUvoEcge+evurpzSZM3UNK+MZfD3sKyTlYsvknZ6eJjSBfnmXqwOsT9Q==", - "dependencies": { - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Tokens": "7.7.1" - } - }, - "System.IO.Hashing": { - "type": "Transitive", - "resolved": "10.0.3", - "contentHash": "La6ICwsdTKhVX+LKN+pvFjQRR3LhLwq3uKdi2knjLzRyPYBSydF4cjXidYxIiTcDD6XVYdsBWQEI8ZxiZ/OdIg==" - }, - "System.Management": { - "type": "Transitive", - "resolved": "7.0.2", - "contentHash": "/qEUN91mP/MUQmJnM5y5BdT7ZoPuVrtxnFlbJ8a3kBJGhe2wCzBfnPFtK2wTtEEcf3DMGR9J00GZZfg6HRI6yA==", - "dependencies": { - "System.CodeDom": "7.0.0" - } - }, - "System.Memory.Data": { - "type": "Transitive", - "resolved": "10.0.9", - "contentHash": "YweovHiLUoEdbr2Xv8eRqCSkTu1vMms4a6xBHaQiMSFVy32PL+hXv6Vhol2NWOmLHjaVgTyhJ3R52U6JxS6w3Q==" - }, - "System.Security.Cryptography.Pkcs": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" - }, - "System.Security.Cryptography.ProtectedData": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "s8yUYuYYu+PAwvBdhLG1KyrGrk9gkYeuPxfAsXsTqqWyepwSyEw8hAaflW4nO98NG52YpYI1am2+9o+79h2RtQ==" - }, - "System.Threading.RateLimiting": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "7mu9v0QDv66ar3DpGSZHg9NuNcxDaaAcnMULuZlaTpP9+hwXhrxNGsF5GmLkSHxFdb5bBc1TzeujsRgTrPWi+Q==" - }, - "Backbone.BuildingBlocks.Application": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Common.Infrastructure": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "MediatR": "[12.5.0, 12.5.0]", - "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", - "Polly": "[8.7.0, 8.7.0]", - "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" - } - }, - "Backbone.BuildingBlocks.Application.Abstractions": { - "type": "Project", - "dependencies": { - "Backbone.DevelopmentKit.Identity": "[1.0.0, )", - "Backbone.Tooling": "[1.0.0, )", - "MediatR.Contracts": "[2.0.1, 2.0.1]", - "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]" - } - }, - "Backbone.BuildingBlocks.Domain": { - "type": "Project", - "dependencies": { - "Backbone.Tooling": "[1.0.0, )" - } - }, - "Backbone.BuildingBlocks.Infrastructure": { - "type": "Project", - "dependencies": { - "AWSSDK.S3": "[4.0.101.6, 4.0.101.6]", - "Autofac": "[9.3.2, 9.3.2]", - "Azure.Messaging.ServiceBus": "[7.20.2, 7.20.2]", - "Azure.Storage.Blobs": "[12.29.1, 12.29.1]", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "EFCore.BulkExtensions.Core": "[10.0.1, 10.0.1]", - "EFCore.BulkExtensions.PostgreSql": "[10.0.1, 10.0.1]", - "EFCore.BulkExtensions.SqlServer": "[10.0.1, 10.0.1]", - "Google.Cloud.PubSub.V1": "[3.36.0, 3.36.0]", - "Google.Cloud.Storage.V1": "[4.15.0, 4.15.0]", - "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", - "Microsoft.EntityFrameworkCore.Abstractions": "[10.0.10, 10.0.10]", - "Microsoft.EntityFrameworkCore.Proxies": "[10.0.10, 10.0.10]", - "Microsoft.EntityFrameworkCore.Relational": "[10.0.10, 10.0.10]", - "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", - "Microsoft.Extensions.Azure": "[1.14.0, 1.14.0]", - "Microsoft.Extensions.DependencyInjection": "[10.0.10, 10.0.10]", - "Microsoft.Extensions.Diagnostics.HealthChecks.Common": "[10.8.0, 10.8.0]", - "Microsoft.Extensions.Identity.Core": "[10.0.10, 10.0.10]", - "Microsoft.Extensions.Logging": "[10.0.10, 10.0.10]", - "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, 10.0.3]", - "OpenTelemetry.Api": "[1.18.0, )", - "Polly": "[8.7.0, 8.7.0]", - "RabbitMQ.Client": "[7.2.1, 7.2.1]", - "Serilog": "[4.4.0, 4.4.0]" - } - }, - "Backbone.Common.Infrastructure": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.DevelopmentKit.Identity": "[1.0.0, )", - "Dapper": "[2.1.79, 2.1.79]", - "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", - "Polly": "[8.7.0, 8.7.0]" - } - }, - "Backbone.DevelopmentKit.Identity": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )", - "SimpleBase": "[5.6.3, 5.6.3]" - } - }, - "Backbone.Modules.Announcements.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Announcements.Domain": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )", - "Backbone.DevelopmentKit.Identity": "[1.0.0, )", - "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]" - } - }, - "Backbone.Tooling": { - "type": "Project", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "[10.0.10, 10.0.10]", - "Microsoft.Extensions.Options": "[10.0.10, 10.0.10]" - } - }, - "Autofac": { - "type": "CentralTransitive", - "requested": "[9.3.2, 9.3.2]", - "resolved": "9.3.2", - "contentHash": "an3dLpmXWvb2aBP5qyA7GVEcXhoG+W/EtFRa3sBYzJdXSNDnB0aoeo4MgOQru0G5sjNDGYM3D3CnBzNFXEVOOA==" - }, - "AWSSDK.S3": { - "type": "CentralTransitive", - "requested": "[4.0.101.6, 4.0.101.6]", - "resolved": "4.0.101.6", - "contentHash": "LsVXGc3lyJuUJe+EbGubkFeR0cVmtmj4YdMChqsqSIsjZtCMzPg2BXR7cJqcrIBGoHab3q3RS6K8T9QD2tbhhQ==", - "dependencies": { - "AWSSDK.Core": "[4.0.100.9, 5.0.0)" - } - }, - "Azure.Messaging.ServiceBus": { - "type": "CentralTransitive", - "requested": "[7.20.2, 7.20.2]", - "resolved": "7.20.2", - "contentHash": "mwr5c3Qs7FWUtwzlLOtVixYDpUuA+Ln7sNirljTHZR8kDhzdr2grlqx0RRBvGV+IDCRHt1jIRb+hi0MUzjeVmw==", - "dependencies": { - "Azure.Core": "1.60.0", - "Azure.Core.Amqp": "1.3.1", - "Microsoft.Azure.Amqp": "2.7.0" - } - }, - "Azure.Storage.Blobs": { - "type": "CentralTransitive", - "requested": "[12.29.1, 12.29.1]", - "resolved": "12.29.1", - "contentHash": "pWh7xZBto8YcwiO853AB3uijTfVqs9PDte0Bu9/Zd8O9nwKiitWm0Jej1vsNkmYUzeG1552f8vJPjmtW30pBUQ==", - "dependencies": { - "Azure.Core": "1.55.0", - "Azure.Storage.Common": "12.28.0" - } - }, - "CSharpFunctionalExtensions": { - "type": "CentralTransitive", - "requested": "[3.7.0, 3.7.0]", - "resolved": "3.7.0", - "contentHash": "eMZp8tc88O96eEFutiIskF3LE8lFY3fjbNRGfNa1ca0CD9sB8A00r5ltyYDih/7UFdJdVbhVq7tGeHI8xj6DlQ==" - }, - "Dapper": { - "type": "CentralTransitive", - "requested": "[2.1.79, 2.1.79]", - "resolved": "2.1.79", - "contentHash": "8YijbzgTfmqmQOnVNorYM6K++pxqnW3nJ4aC1sRHzxUA2CcuoJ9gsTem3kgBnPRMc38zZHl4Esb6hAezXIEEuw==" - }, - "EFCore.BulkExtensions.Core": { - "type": "CentralTransitive", - "requested": "[10.0.1, 10.0.1]", - "resolved": "10.0.1", - "contentHash": "D++Wd1Qy6RM+yMy4nQ3r0nc/cSA0T+AdlFBEuKDhwl6r5bwuBQpluP5h2rvQ3i+CetUGppef6JNH9grg8lo+Bw==", - "dependencies": { - "MedallionTopologicalSort": "1.0.0", - "Microsoft.EntityFrameworkCore.Relational": "10.0.3", - "NetTopologySuite": "2.6.0" - } - }, - "EFCore.BulkExtensions.PostgreSql": { - "type": "CentralTransitive", - "requested": "[10.0.1, 10.0.1]", - "resolved": "10.0.1", - "contentHash": "iZCay5ghyULm4kA0ET6BOrL9J7AhVlgBqILpy4TUBm6yaGALIwcGc/qe6EO/VS+k9/RwJdO4qsRqWiTNrxF1Aw==", - "dependencies": { - "EFCore.BulkExtensions.Core": "10.0.1", - "Npgsql.EntityFrameworkCore.PostgreSQL": "10.0.0" - } - }, - "EFCore.BulkExtensions.SqlServer": { - "type": "CentralTransitive", - "requested": "[10.0.1, 10.0.1]", - "resolved": "10.0.1", - "contentHash": "Eg5nL1rjTvrCIjJD7ABjAH3waENRZ5mt/OZkhJe9FXgOIbovS8hzaDzy5Pqi+gwaPJLrdCeQWHfJgNjyULOVUw==", - "dependencies": { - "EFCore.BulkExtensions.Core": "10.0.1", - "Microsoft.Data.SqlClient": "6.1.4", - "Microsoft.EntityFrameworkCore.SqlServer.HierarchyId": "10.0.3", - "NetTopologySuite.IO.SqlServerBytes": "2.1.0" - } - }, - "FluentValidation": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" - }, - "Google.Cloud.PubSub.V1": { - "type": "CentralTransitive", - "requested": "[3.36.0, 3.36.0]", - "resolved": "3.36.0", - "contentHash": "69Tc+bHPvQQPXYs5cnLPhCsEMBYH5CABu/N+yccH+xS2Eforkt3r8DIhy6MUTA+O2NQYKYQSbmU/gIVXYpOBQA==", - "dependencies": { - "Google.Api.Gax.Grpc": "[4.13.1, 5.0.0)", - "Google.Cloud.Iam.V1": "[3.5.0, 4.0.0)" - } - }, - "Google.Cloud.Storage.V1": { - "type": "CentralTransitive", - "requested": "[4.15.0, 4.15.0]", - "resolved": "4.15.0", - "contentHash": "TVlJsaIkMDwHbZPCcLFFKduFcFD0yJL1jsZmV/V/FMjv5iok/eoC0oy8/VHjxfmWmNGkJLPLMAe5MrFLtY7hzg==", - "dependencies": { - "Google.Api.Gax.Rest": "[4.13.1, 5.0.0)", - "Google.Apis.Storage.v1": "[1.74.0.4115, 2.0.0)" - } - }, - "MediatR": { - "type": "CentralTransitive", - "requested": "[12.5.0, 12.5.0]", - "resolved": "12.5.0", - "contentHash": "vqm2H8/nqL5NAJHPhsG1JOPwfkmbVrPyh4svdoRzu+uZh6Ex7PRoHBGsLYC0/RWCEJFqD1ohHNpteQvql9OktA==", - "dependencies": { - "MediatR.Contracts": "[2.0.1, 3.0.0)", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" - } - }, - "MediatR.Contracts": { - "type": "CentralTransitive", - "requested": "[2.0.1, 2.0.1]", - "resolved": "2.0.1", - "contentHash": "FYv95bNT4UwcNA+G/J1oX5OpRiSUxteXaUt2BJbRSdRNiIUNbggJF69wy6mnk2wYToaanpdXZdCwVylt96MpwQ==" - }, - "Microsoft.EntityFrameworkCore": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "a0V7zj/VbYP6dTdWpUgE/r2PuLKtUGe2aJ0lVKkn/wP9ZhaxUz2kQydVfvOjCv2SKxlrqdBfHhPD4Cvlf+4ffA==", - "dependencies": { - "Microsoft.EntityFrameworkCore.Abstractions": "10.0.10", - "Microsoft.EntityFrameworkCore.Analyzers": "10.0.10", - "Microsoft.Extensions.Caching.Memory": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10" - } - }, - "Microsoft.EntityFrameworkCore.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "bOzrFCl6uZCjaSh2bG1ToRQRdx+iXvxosCg9hFyG9OWeAzOFI4xev9OqKeWfKf/kAHyox2JnbcvLVf2ceA7sqA==" - }, - "Microsoft.EntityFrameworkCore.Proxies": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "H/Fu7n1eZb8mLc6Nfj9Hr9IE3DRNhwPhflQnlMB33y+07Bc9C1B+paRWyg0DhX5PUFDdVKlXbBnNNzRMp/UEnA==", - "dependencies": { - "Castle.Core": "5.2.1", - "Microsoft.EntityFrameworkCore": "10.0.10", - "Microsoft.Extensions.Caching.Memory": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10" - } - }, - "Microsoft.EntityFrameworkCore.Relational": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "wNonj40aZxia+GtuBiiD6ZqVh4h6y5Nje1bGdmzZ8/ui0QRsAN+S0SIrLHFCEGbG9cDbeaE40sh+Lr7o9rRs6g==", - "dependencies": { - "Microsoft.EntityFrameworkCore": "10.0.10", - "Microsoft.Extensions.Caching.Memory": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10" - } - }, - "Microsoft.EntityFrameworkCore.SqlServer": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "xwAOvQ1WCfWyA4sRkoYVHyTm8UJ7NDYpRo++2oWuXGQ9g60Z1yepaQBmoPDT2nX24q4ISWnktAW9zARFTiSVvg==", - "dependencies": { - "Microsoft.Data.SqlClient": "6.1.1", - "Microsoft.EntityFrameworkCore.Relational": "10.0.10", - "Microsoft.Extensions.Caching.Memory": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10" - } - }, - "Microsoft.Extensions.Azure": { - "type": "CentralTransitive", - "requested": "[1.14.0, 1.14.0]", - "resolved": "1.14.0", - "contentHash": "g4d2TLfbAiZeXBcGkJdgIl2ZzqMcepMUbECENgg4XXqDU8uGAUwBxJb6x2DBpF6BY09vrHO0Ug3xZcH+cVbMrQ==", - "dependencies": { - "Azure.Core": "1.53.0", - "Microsoft.Extensions.Configuration.Binder": "10.0.3", - "Microsoft.Extensions.Logging": "10.0.3" - } - }, - "Microsoft.Extensions.Configuration": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "plJWK2zpWuuyxI8F8s2scx6Je7N1Ajjs6HvYUGKwRnDMWIVIz9FHwAkiT7ASgrvAOd10T0FPVlh9BzAJJME+jg==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "5Vnd2I75DmZCVEjSynIdJ/0EGafgnLQwgR3t2C2/fkjx/nRG+cLwxLLdInoHeCEpkD5K4Ov/g9ZCRYrl4TRsaA==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.Binder": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "GqmN2o1CkJvk7uWp+p4CwBYW0w/zfoEbvsiFDbO2G8l1Uz+mrDAbAcZiXhU2lufKPby1cjAUdd5GTWpebYOkOA==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.Json": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "uvJ6sHwjgrkMEJOgiC76G0mcZGXerwyyWkwX34EOjCbxKG6TCtfAoqDKAMsCvEBf9HxjlGQEgqsSMOGCmGBf+A==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.FileExtensions": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.DependencyInjection": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "ANyvsgkNBRvcJh2XLgn8veGmajf+8m0AbKK+HPWdRL1yraSNVVSmQhFntLtdz/C795jxqqup+k05cs/3jZQPOA==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "z/2xXlFw2aLGjHyEm6E0tQ+In6VfzQzTrtArbQ2c0TQE16ZbyDCMGPvaUT9I0s8rgy9sRWlU2P9waW37qV04qA==" - }, - "Microsoft.Extensions.Diagnostics.HealthChecks.Common": { - "type": "CentralTransitive", - "requested": "[10.8.0, 10.8.0]", - "resolved": "10.8.0", - "contentHash": "nyB5D+P7R2LOIrAiZyCgcUsQZcKa/n4PIGkE8eXGknlhPTfd5bivi2u4vhFVvjZYkObw/bpWRSwBllyx1ZuWGw==", - "dependencies": { - "Microsoft.Extensions.Configuration.Binder": "10.0.10", - "Microsoft.Extensions.Diagnostics": "10.0.10", - "Microsoft.Extensions.Diagnostics.HealthChecks": "10.0.10", - "Microsoft.Extensions.ObjectPool": "10.0.10", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10", - "Microsoft.Extensions.Telemetry.Abstractions": "10.8.0" - } - }, - "Microsoft.Extensions.Hosting": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "tL9FkfV64GPUDSPvwrgyw42LVzsnVAnyrqJEuZVJbODgrQ3eL63zmzEcVWoCHzfgqUhWggzbgAyUCnz/zfI3Pg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.Binder": "10.0.10", - "Microsoft.Extensions.Configuration.CommandLine": "10.0.10", - "Microsoft.Extensions.Configuration.EnvironmentVariables": "10.0.10", - "Microsoft.Extensions.Configuration.FileExtensions": "10.0.10", - "Microsoft.Extensions.Configuration.Json": "10.0.10", - "Microsoft.Extensions.Configuration.UserSecrets": "10.0.10", - "Microsoft.Extensions.DependencyInjection": "10.0.10", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Diagnostics": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Physical": "10.0.10", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging.Configuration": "10.0.10", - "Microsoft.Extensions.Logging.Console": "10.0.10", - "Microsoft.Extensions.Logging.Debug": "10.0.10", - "Microsoft.Extensions.Logging.EventLog": "10.0.10", - "Microsoft.Extensions.Logging.EventSource": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Extensions.Hosting.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "5LugpYGHk+mkn0a8IZgcyfBca8PCTAU9RQFoMrTdtOOidq88M2SI5f3px6ugnzgxC+eTkvYYJi8pzlUnG5xdAQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Identity.Core": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "ZA+9MX1D7+jm/1RF3iOOBThCps55MT1jAwLne1dryMj9cuAeOVtGS3pBegqk1Mwza+0tuVAklob+Q/EA9bHnQw==", - "dependencies": { - "Microsoft.AspNetCore.Cryptography.KeyDerivation": "10.0.10", - "Microsoft.Extensions.Diagnostics": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Extensions.Logging": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "Tf6z5HsL0VDYRTfvsoNrTGHGheCwkTsZBA2FFh5ATJUbkAwug+FFNISJK2gjpUNemlAOoWllAK52HOWCjto3EQ==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "zkFxGYUvdxAvIKTyXHrmW+Sux53D4SezD9dMyZ6hrwwzPQJNuwCRy1f5W7AvYTqacEGhWF2XderRQG1OvbV8og==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Options": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "srnhnk7nE8krBiIXp71LvBmKBtraBONWSRzdjJgRv1Ko9Mp8IVNqv4vIS9hGeVteBig8aQkva9ZG+sC+o5sVcA==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Npgsql.EntityFrameworkCore.PostgreSQL": { - "type": "CentralTransitive", - "requested": "[10.0.3, 10.0.3]", - "resolved": "10.0.3", - "contentHash": "IPGrrZnRkuW7OlHDhUESZz4G5DLkW7Nej/O3Cx+0iTsgyU5XJxBgpsvTHLloo3WWuAKKbDHXBvWPVkX1deRh1Q==", - "dependencies": { - "Microsoft.EntityFrameworkCore": "[10.0.4, 11.0.0)", - "Microsoft.EntityFrameworkCore.Relational": "[10.0.4, 11.0.0)", - "Npgsql": "10.0.3" - } - }, - "OpenTelemetry.Api": { - "type": "CentralTransitive", - "requested": "[1.18.0, )", - "resolved": "1.18.0", - "contentHash": "Dhzm5oughIY9EWckt2J1yXcEbXpki5WCL2q7prJoYxzH6C7jdkfGtPMTkUVZZ4AhjJKzQnlC+kLSIlmIVwC4Vw==" - }, - "Polly": { - "type": "CentralTransitive", - "requested": "[8.7.0, 8.7.0]", - "resolved": "8.7.0", - "contentHash": "0qR4f0OR8FeCAfLWcfwzAM7w6EmpUgwa22PgxKjcL25dEAto7sKpQQXbtxp38vVvK+V3RFkh/TeI7g/iUdoYIQ==", - "dependencies": { - "Polly.Core": "8.7.0" - } - }, - "RabbitMQ.Client": { - "type": "CentralTransitive", - "requested": "[7.2.1, 7.2.1]", - "resolved": "7.2.1", - "contentHash": "YKXEfg9fVQiTKgZlvIhAfPSFaamEgi8DsQmisCH0IAsU4FYLrtoguDrDj6JtJVGUt40QPnBLRH6fTQcAC4qsOg==", - "dependencies": { - "System.Threading.RateLimiting": "8.0.0" - } - }, - "ReHackt.Extensions.Options.Validation": { - "type": "CentralTransitive", - "requested": "[10.0.1, 10.0.1]", - "resolved": "10.0.1", - "contentHash": "/mjsZpv8DLDeHns99iDROqFa0eJ/5NU4X2kMMt3VTfVf3xYWQNLPoTs//x+wKXWYSo+pdXkA+ASvaJT/pifB2Q==", - "dependencies": { - "Microsoft.Extensions.Hosting": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Serilog": { - "type": "CentralTransitive", - "requested": "[4.4.0, 4.4.0]", - "resolved": "4.4.0", - "contentHash": "ZC6Le3rr4TVJJjS4KsQAesxeF1EhW9qcZmmG7eP5Y2G3+gTGkJEUXkq4+tZNPtyp05I0wWOxnIjwtxFweJsObw==" - }, - "SimpleBase": { - "type": "CentralTransitive", - "requested": "[5.6.3, 5.6.3]", - "resolved": "5.6.3", - "contentHash": "ayL730f1gdQVYmFFLKSX83QcoltyKSMBsV94qfCBpZHMaJz/e3ALuXKZDD8SkseWbNHxBe0HxLRBe5OOpQ9HpA==" - } - }, - "net10.0/linux-arm64": { - "Microsoft.Data.SqlClient": { - "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" - } - }, - "Microsoft.Data.SqlClient.SNI.runtime": { - "type": "Transitive", - "resolved": "6.0.2", - "contentHash": "f+pRODTWX7Y67jXO3T5S2dIPZ9qMJNySjlZT/TKmWVNWe19N8jcWmHaqHnnchaq3gxEKv1SWVY5EFzOD06l41w==" - }, - "Microsoft.SqlServer.Types": { - "type": "Transitive", - "resolved": "160.1000.6", - "contentHash": "4kk+rz5vnIPr9ENzm8KttUbhBKftv0uHSSFDVjc5OuKPtRP5q0lDbYUy5ZsoYCAG3RrZdJoxPnWN2JNozZAiGA==", - "dependencies": { - "Microsoft.SqlServer.Server": "1.0.0" - } - }, - "System.Diagnostics.EventLog": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" - }, - "System.Management": { - "type": "Transitive", - "resolved": "7.0.2", - "contentHash": "/qEUN91mP/MUQmJnM5y5BdT7ZoPuVrtxnFlbJ8a3kBJGhe2wCzBfnPFtK2wTtEEcf3DMGR9J00GZZfg6HRI6yA==", - "dependencies": { - "System.CodeDom": "7.0.0" - } - }, - "System.Security.Cryptography.Pkcs": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" - } - }, - "net10.0/linux-x64": { - "Microsoft.Data.SqlClient": { - "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" - } - }, - "Microsoft.Data.SqlClient.SNI.runtime": { - "type": "Transitive", - "resolved": "6.0.2", - "contentHash": "f+pRODTWX7Y67jXO3T5S2dIPZ9qMJNySjlZT/TKmWVNWe19N8jcWmHaqHnnchaq3gxEKv1SWVY5EFzOD06l41w==" - }, - "Microsoft.SqlServer.Types": { - "type": "Transitive", - "resolved": "160.1000.6", - "contentHash": "4kk+rz5vnIPr9ENzm8KttUbhBKftv0uHSSFDVjc5OuKPtRP5q0lDbYUy5ZsoYCAG3RrZdJoxPnWN2JNozZAiGA==", - "dependencies": { - "Microsoft.SqlServer.Server": "1.0.0" - } - }, - "System.Diagnostics.EventLog": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" - }, - "System.Management": { - "type": "Transitive", - "resolved": "7.0.2", - "contentHash": "/qEUN91mP/MUQmJnM5y5BdT7ZoPuVrtxnFlbJ8a3kBJGhe2wCzBfnPFtK2wTtEEcf3DMGR9J00GZZfg6HRI6yA==", - "dependencies": { - "System.CodeDom": "7.0.0" - } - }, - "System.Security.Cryptography.Pkcs": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" - } - }, - "net10.0/osx-arm64": { - "Microsoft.Data.SqlClient": { - "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" - } - }, - "Microsoft.Data.SqlClient.SNI.runtime": { - "type": "Transitive", - "resolved": "6.0.2", - "contentHash": "f+pRODTWX7Y67jXO3T5S2dIPZ9qMJNySjlZT/TKmWVNWe19N8jcWmHaqHnnchaq3gxEKv1SWVY5EFzOD06l41w==" - }, - "Microsoft.SqlServer.Types": { - "type": "Transitive", - "resolved": "160.1000.6", - "contentHash": "4kk+rz5vnIPr9ENzm8KttUbhBKftv0uHSSFDVjc5OuKPtRP5q0lDbYUy5ZsoYCAG3RrZdJoxPnWN2JNozZAiGA==", - "dependencies": { - "Microsoft.SqlServer.Server": "1.0.0" - } - }, - "System.Diagnostics.EventLog": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" - }, - "System.Management": { - "type": "Transitive", - "resolved": "7.0.2", - "contentHash": "/qEUN91mP/MUQmJnM5y5BdT7ZoPuVrtxnFlbJ8a3kBJGhe2wCzBfnPFtK2wTtEEcf3DMGR9J00GZZfg6HRI6yA==", - "dependencies": { - "System.CodeDom": "7.0.0" - } - }, - "System.Security.Cryptography.Pkcs": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" - } - }, - "net10.0/win-x64": { - "Microsoft.Data.SqlClient": { - "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" - } - }, - "Microsoft.Data.SqlClient.SNI.runtime": { - "type": "Transitive", - "resolved": "6.0.2", - "contentHash": "f+pRODTWX7Y67jXO3T5S2dIPZ9qMJNySjlZT/TKmWVNWe19N8jcWmHaqHnnchaq3gxEKv1SWVY5EFzOD06l41w==" - }, - "Microsoft.SqlServer.Types": { - "type": "Transitive", - "resolved": "160.1000.6", - "contentHash": "4kk+rz5vnIPr9ENzm8KttUbhBKftv0uHSSFDVjc5OuKPtRP5q0lDbYUy5ZsoYCAG3RrZdJoxPnWN2JNozZAiGA==", - "dependencies": { - "Microsoft.SqlServer.Server": "1.0.0" - } - }, - "System.Diagnostics.EventLog": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" - }, - "System.Management": { - "type": "Transitive", - "resolved": "7.0.2", - "contentHash": "/qEUN91mP/MUQmJnM5y5BdT7ZoPuVrtxnFlbJ8a3kBJGhe2wCzBfnPFtK2wTtEEcf3DMGR9J00GZZfg6HRI6yA==", - "dependencies": { - "System.CodeDom": "7.0.0" - } - }, - "System.Security.Cryptography.Pkcs": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" - } - } - } -} \ No newline at end of file diff --git a/Modules/Announcements/src/Announcements.Infrastructure.Database.Postgres/packages.lock.json b/Modules/Announcements/src/Announcements.Infrastructure.Database.Postgres/packages.lock.json index a0ae7cfb08..d2946b503f 100644 --- a/Modules/Announcements/src/Announcements.Infrastructure.Database.Postgres/packages.lock.json +++ b/Modules/Announcements/src/Announcements.Infrastructure.Database.Postgres/packages.lock.json @@ -730,12 +730,10 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Announcements.Application": { + "Backbone.Modules.Announcements.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Announcements.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Announcements.Domain": "[1.0.0, )" } }, "Backbone.Modules.Announcements.Contracts": { @@ -756,8 +754,9 @@ "Backbone.Modules.Announcements.Infrastructure": { "type": "Project", "dependencies": { + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Announcements.Application": "[1.0.0, )", + "Backbone.Modules.Announcements.Abstractions": "[1.0.0, )", "Backbone.Modules.Announcements.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -859,16 +858,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", diff --git a/Modules/Announcements/src/Announcements.Infrastructure.Database.SqlServer/packages.lock.json b/Modules/Announcements/src/Announcements.Infrastructure.Database.SqlServer/packages.lock.json index a0ae7cfb08..d2946b503f 100644 --- a/Modules/Announcements/src/Announcements.Infrastructure.Database.SqlServer/packages.lock.json +++ b/Modules/Announcements/src/Announcements.Infrastructure.Database.SqlServer/packages.lock.json @@ -730,12 +730,10 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Announcements.Application": { + "Backbone.Modules.Announcements.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Announcements.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Announcements.Domain": "[1.0.0, )" } }, "Backbone.Modules.Announcements.Contracts": { @@ -756,8 +754,9 @@ "Backbone.Modules.Announcements.Infrastructure": { "type": "Project", "dependencies": { + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Announcements.Application": "[1.0.0, )", + "Backbone.Modules.Announcements.Abstractions": "[1.0.0, )", "Backbone.Modules.Announcements.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -859,16 +858,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", diff --git a/Modules/Announcements/src/Announcements.Infrastructure/Announcements.Infrastructure.csproj b/Modules/Announcements/src/Announcements.Infrastructure/Announcements.Infrastructure.csproj index 6da0da0622..35217b3c9d 100644 --- a/Modules/Announcements/src/Announcements.Infrastructure/Announcements.Infrastructure.csproj +++ b/Modules/Announcements/src/Announcements.Infrastructure/Announcements.Infrastructure.csproj @@ -8,8 +8,9 @@ + - + diff --git a/Modules/Announcements/src/Announcements.Infrastructure/Persistence/Database/IServiceCollectionExtensions.cs b/Modules/Announcements/src/Announcements.Infrastructure/Persistence/Database/IServiceCollectionExtensions.cs index 67a0b0dcb0..596a63b4a8 100644 --- a/Modules/Announcements/src/Announcements.Infrastructure/Persistence/Database/IServiceCollectionExtensions.cs +++ b/Modules/Announcements/src/Announcements.Infrastructure/Persistence/Database/IServiceCollectionExtensions.cs @@ -1,5 +1,5 @@ using Backbone.BuildingBlocks.Infrastructure.Persistence.Database; -using Backbone.Modules.Announcements.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Announcements.Abstractions; using Backbone.Modules.Announcements.Infrastructure.Persistence.Repository; using Microsoft.Extensions.DependencyInjection; diff --git a/Modules/Announcements/src/Announcements.Infrastructure/Persistence/Repository/AnnouncementsRepository.cs b/Modules/Announcements/src/Announcements.Infrastructure/Persistence/Repository/AnnouncementsRepository.cs index a5832c15ec..bffcc4254f 100644 --- a/Modules/Announcements/src/Announcements.Infrastructure/Persistence/Repository/AnnouncementsRepository.cs +++ b/Modules/Announcements/src/Announcements.Infrastructure/Persistence/Repository/AnnouncementsRepository.cs @@ -1,6 +1,6 @@ using System.Linq.Expressions; using Backbone.BuildingBlocks.Application.Extensions; -using Backbone.Modules.Announcements.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Announcements.Abstractions; using Backbone.Modules.Announcements.Domain.Entities; using Backbone.Modules.Announcements.Infrastructure.Persistence.Database; using Microsoft.EntityFrameworkCore; diff --git a/Modules/Announcements/src/Announcements.Infrastructure/packages.lock.json b/Modules/Announcements/src/Announcements.Infrastructure/packages.lock.json index 89b14bf146..ab5448bfce 100644 --- a/Modules/Announcements/src/Announcements.Infrastructure/packages.lock.json +++ b/Modules/Announcements/src/Announcements.Infrastructure/packages.lock.json @@ -772,12 +772,10 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Announcements.Application": { + "Backbone.Modules.Announcements.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Announcements.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Announcements.Domain": "[1.0.0, )" } }, "Backbone.Modules.Announcements.Contracts": { @@ -889,16 +887,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", diff --git a/Modules/Announcements/src/Announcements.Module/Announcements.Module.csproj b/Modules/Announcements/src/Announcements.Module/Announcements.Module.csproj index faa416c77b..dbd32a917b 100644 --- a/Modules/Announcements/src/Announcements.Module/Announcements.Module.csproj +++ b/Modules/Announcements/src/Announcements.Module/Announcements.Module.csproj @@ -2,13 +2,16 @@ - + + + + diff --git a/Modules/Announcements/src/Announcements.Module/AnnouncementsEndpointExtensions.cs b/Modules/Announcements/src/Announcements.Module/AnnouncementsEndpointExtensions.cs new file mode 100644 index 0000000000..54b19119e6 --- /dev/null +++ b/Modules/Announcements/src/Announcements.Module/AnnouncementsEndpointExtensions.cs @@ -0,0 +1,16 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncementsInLanguage; +using Microsoft.AspNetCore.Routing; +using OpenIddict.Validation.AspNetCore; + +namespace Backbone.Modules.Announcements.Module; + +public static class AnnouncementsEndpointExtensions +{ + public static IEndpointRouteBuilder MapAnnouncementsEndpoints(this IEndpointRouteBuilder endpoints) + { + var group = endpoints.MapVersionedEndpointGroup("Announcements", "Announcements", 2, OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme); + group.MapListAnnouncementsInLanguageEndpoint(); + return endpoints; + } +} diff --git a/Modules/Announcements/src/Announcements.Module/AnnouncementsModule.cs b/Modules/Announcements/src/Announcements.Module/AnnouncementsModule.cs index 80a9943b3f..6f5f01a012 100644 --- a/Modules/Announcements/src/Announcements.Module/AnnouncementsModule.cs +++ b/Modules/Announcements/src/Announcements.Module/AnnouncementsModule.cs @@ -1,8 +1,6 @@ using Backbone.BuildingBlocks.API.Extensions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Module; -using Backbone.Modules.Announcements.Application; -using Backbone.Modules.Announcements.Application.Extensions; using Backbone.Modules.Announcements.Infrastructure; using Backbone.Modules.Announcements.Infrastructure.Persistence.Database; using Microsoft.Extensions.Configuration; diff --git a/Modules/Announcements/src/Announcements.Module/ApplicationConfiguration.cs b/Modules/Announcements/src/Announcements.Module/ApplicationConfiguration.cs new file mode 100644 index 0000000000..6f4a2f1999 --- /dev/null +++ b/Modules/Announcements/src/Announcements.Module/ApplicationConfiguration.cs @@ -0,0 +1,3 @@ +namespace Backbone.Modules.Announcements.Module; + +public class ApplicationConfiguration; diff --git a/Modules/Announcements/src/Announcements.Application/Extensions/IServiceCollectionExtensions.cs b/Modules/Announcements/src/Announcements.Module/ApplicationServiceCollectionExtensions.cs similarity index 67% rename from Modules/Announcements/src/Announcements.Application/Extensions/IServiceCollectionExtensions.cs rename to Modules/Announcements/src/Announcements.Module/ApplicationServiceCollectionExtensions.cs index 0d6c5b9c25..347927d08d 100644 --- a/Modules/Announcements/src/Announcements.Application/Extensions/IServiceCollectionExtensions.cs +++ b/Modules/Announcements/src/Announcements.Module/ApplicationServiceCollectionExtensions.cs @@ -1,11 +1,11 @@ -using Backbone.BuildingBlocks.Application.MediatR; -using Backbone.Modules.Announcements.Application.Announcements.Commands.CreateAnnouncement; +using Backbone.BuildingBlocks.Application.MediatR; +using Backbone.Modules.Announcements.Module.Features.Announcements.CreateAnnouncement; using FluentValidation; using Microsoft.Extensions.DependencyInjection; -namespace Backbone.Modules.Announcements.Application.Extensions; +namespace Backbone.Modules.Announcements.Module; -public static class IServiceCollectionExtensions +internal static class ApplicationServiceCollectionExtensions { public static void AddApplication(this IServiceCollection services) { diff --git a/Modules/Announcements/src/Announcements.Application/Announcements/Commands/CreateAnnouncement/CreateAnnouncementCommand.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/CreateAnnouncement/Command.cs similarity index 84% rename from Modules/Announcements/src/Announcements.Application/Announcements/Commands/CreateAnnouncement/CreateAnnouncementCommand.cs rename to Modules/Announcements/src/Announcements.Module/Features/Announcements/CreateAnnouncement/Command.cs index 6ee2075e87..1912a032f4 100644 --- a/Modules/Announcements/src/Announcements.Application/Announcements/Commands/CreateAnnouncement/CreateAnnouncementCommand.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/CreateAnnouncement/Command.cs @@ -1,8 +1,8 @@ -using Backbone.Modules.Announcements.Application.Announcements.DTOs; +using Backbone.Modules.Announcements.Module.Features.Announcements.Shared; using Backbone.Modules.Announcements.Domain.Entities; using MediatR; -namespace Backbone.Modules.Announcements.Application.Announcements.Commands.CreateAnnouncement; +namespace Backbone.Modules.Announcements.Module.Features.Announcements.CreateAnnouncement; public class CreateAnnouncementCommand : IRequest { diff --git a/Modules/Announcements/src/Announcements.Application/Announcements/Commands/CreateAnnouncement/Handler.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/CreateAnnouncement/Handler.cs similarity index 80% rename from Modules/Announcements/src/Announcements.Application/Announcements/Commands/CreateAnnouncement/Handler.cs rename to Modules/Announcements/src/Announcements.Module/Features/Announcements/CreateAnnouncement/Handler.cs index 62a4c23fca..542d26a418 100644 --- a/Modules/Announcements/src/Announcements.Application/Announcements/Commands/CreateAnnouncement/Handler.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/CreateAnnouncement/Handler.cs @@ -1,10 +1,10 @@ -using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Announcements.Application.Announcements.DTOs; -using Backbone.Modules.Announcements.Application.Infrastructure.Persistence.Repository; +using Backbone.DevelopmentKit.Identity.ValueObjects; +using Backbone.Modules.Announcements.Module.Features.Announcements.Shared; +using Backbone.Modules.Announcements.Abstractions; using Backbone.Modules.Announcements.Domain.Entities; using MediatR; -namespace Backbone.Modules.Announcements.Application.Announcements.Commands.CreateAnnouncement; +namespace Backbone.Modules.Announcements.Module.Features.Announcements.CreateAnnouncement; public class Handler : IRequestHandler { diff --git a/Modules/Announcements/src/Announcements.Application/Announcements/Commands/CreateAnnouncement/Validator.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/CreateAnnouncement/Validator.cs similarity index 94% rename from Modules/Announcements/src/Announcements.Application/Announcements/Commands/CreateAnnouncement/Validator.cs rename to Modules/Announcements/src/Announcements.Module/Features/Announcements/CreateAnnouncement/Validator.cs index 2d1791395c..ab1bb050b3 100644 --- a/Modules/Announcements/src/Announcements.Application/Announcements/Commands/CreateAnnouncement/Validator.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/CreateAnnouncement/Validator.cs @@ -1,4 +1,4 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; +using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Extensions; using Backbone.BuildingBlocks.Application.FluentValidation; using Backbone.DevelopmentKit.Identity.ValueObjects; @@ -7,7 +7,7 @@ using Backbone.Tooling.Extensions; using FluentValidation; -namespace Backbone.Modules.Announcements.Application.Announcements.Commands.CreateAnnouncement; +namespace Backbone.Modules.Announcements.Module.Features.Announcements.CreateAnnouncement; public class Validator : AbstractValidator { diff --git a/Modules/Announcements/src/Announcements.Application/Announcements/Commands/DeleteAnnouncementById/DeleteAnnouncementByIdCommand.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementById/Command.cs similarity index 54% rename from Modules/Announcements/src/Announcements.Application/Announcements/Commands/DeleteAnnouncementById/DeleteAnnouncementByIdCommand.cs rename to Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementById/Command.cs index 9b1d7a1a8a..995547d6b2 100644 --- a/Modules/Announcements/src/Announcements.Application/Announcements/Commands/DeleteAnnouncementById/DeleteAnnouncementByIdCommand.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementById/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Announcements.Application.Announcements.Commands.DeleteAnnouncementById; +namespace Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementById; public class DeleteAnnouncementByIdCommand : IRequest { diff --git a/Modules/Announcements/src/Announcements.Application/Announcements/Commands/DeleteAnnouncementById/Handler.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementById/Handler.cs similarity index 87% rename from Modules/Announcements/src/Announcements.Application/Announcements/Commands/DeleteAnnouncementById/Handler.cs rename to Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementById/Handler.cs index 3519aa80f0..b3693559eb 100644 --- a/Modules/Announcements/src/Announcements.Application/Announcements/Commands/DeleteAnnouncementById/Handler.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementById/Handler.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.Modules.Announcements.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Announcements.Abstractions; using Backbone.Modules.Announcements.Domain.Entities; using MediatR; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Announcements.Application.Announcements.Commands.DeleteAnnouncementById; +namespace Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementById; public class Handler : IRequestHandler { diff --git a/Modules/Announcements/src/Announcements.Application/Announcements/Commands/DeleteAnnouncementById/Validator.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementById/Validator.cs similarity index 76% rename from Modules/Announcements/src/Announcements.Application/Announcements/Commands/DeleteAnnouncementById/Validator.cs rename to Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementById/Validator.cs index 4aa2de21d7..40839b6f0a 100644 --- a/Modules/Announcements/src/Announcements.Application/Announcements/Commands/DeleteAnnouncementById/Validator.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementById/Validator.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Announcements.Domain.Entities; using FluentValidation; -namespace Backbone.Modules.Announcements.Application.Announcements.Commands.DeleteAnnouncementById; +namespace Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementById; public class Validator : AbstractValidator { diff --git a/Modules/Announcements/src/Announcements.Application/Announcements/Commands/DeleteAnnouncementRecipients/DeleteAnnouncementRecipientsCommand.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementRecipients/Command.cs similarity index 50% rename from Modules/Announcements/src/Announcements.Application/Announcements/Commands/DeleteAnnouncementRecipients/DeleteAnnouncementRecipientsCommand.cs rename to Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementRecipients/Command.cs index c84ef0d963..ac801a2352 100644 --- a/Modules/Announcements/src/Announcements.Application/Announcements/Commands/DeleteAnnouncementRecipients/DeleteAnnouncementRecipientsCommand.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementRecipients/Command.cs @@ -1,6 +1,6 @@ -using MediatR; +using MediatR; -namespace Backbone.Modules.Announcements.Application.Announcements.Commands.DeleteAnnouncementRecipients; +namespace Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementRecipients; public record DeleteAnnouncementRecipientsCommand : IRequest { diff --git a/Modules/Announcements/src/Announcements.Application/Announcements/Commands/DeleteAnnouncementRecipients/Handler.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementRecipients/Handler.cs similarity index 71% rename from Modules/Announcements/src/Announcements.Application/Announcements/Commands/DeleteAnnouncementRecipients/Handler.cs rename to Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementRecipients/Handler.cs index fa801877fd..245eac015c 100644 --- a/Modules/Announcements/src/Announcements.Application/Announcements/Commands/DeleteAnnouncementRecipients/Handler.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementRecipients/Handler.cs @@ -1,8 +1,8 @@ -using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Announcements.Application.Infrastructure.Persistence.Repository; +using Backbone.DevelopmentKit.Identity.ValueObjects; +using Backbone.Modules.Announcements.Abstractions; using MediatR; -namespace Backbone.Modules.Announcements.Application.Announcements.Commands.DeleteAnnouncementRecipients; +namespace Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementRecipients; public class Handler : IRequestHandler { diff --git a/Modules/Announcements/src/Announcements.Application/Announcements/Commands/DeleteAnnouncementRecipients/Validator.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementRecipients/Validator.cs similarity index 65% rename from Modules/Announcements/src/Announcements.Application/Announcements/Commands/DeleteAnnouncementRecipients/Validator.cs rename to Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementRecipients/Validator.cs index fe63d6cc4b..1355183edc 100644 --- a/Modules/Announcements/src/Announcements.Application/Announcements/Commands/DeleteAnnouncementRecipients/Validator.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementRecipients/Validator.cs @@ -1,8 +1,8 @@ -using Backbone.BuildingBlocks.Application.Extensions; +using Backbone.BuildingBlocks.Application.Extensions; using Backbone.DevelopmentKit.Identity.ValueObjects; using FluentValidation; -namespace Backbone.Modules.Announcements.Application.Announcements.Commands.DeleteAnnouncementRecipients; +namespace Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementRecipients; public class Validator : AbstractValidator { diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ExecuteHousekeeping/Command.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ExecuteHousekeeping/Command.cs new file mode 100644 index 0000000000..eba7a4b9f0 --- /dev/null +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ExecuteHousekeeping/Command.cs @@ -0,0 +1,5 @@ +using MediatR; + +namespace Backbone.Modules.Announcements.Module.Features.Announcements.ExecuteHousekeeping; + +public class ExecuteHousekeepingCommand : IRequest; diff --git a/Modules/Announcements/src/Announcements.Application/Announcements/Commands/ExecuteHousekeeping/Handler.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ExecuteHousekeeping/Handler.cs similarity index 76% rename from Modules/Announcements/src/Announcements.Application/Announcements/Commands/ExecuteHousekeeping/Handler.cs rename to Modules/Announcements/src/Announcements.Module/Features/Announcements/ExecuteHousekeeping/Handler.cs index 6bfc93c7bd..09d2143ff6 100644 --- a/Modules/Announcements/src/Announcements.Application/Announcements/Commands/ExecuteHousekeeping/Handler.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ExecuteHousekeeping/Handler.cs @@ -1,9 +1,9 @@ -using Backbone.BuildingBlocks.Application.Housekeeping; -using Backbone.Modules.Announcements.Application.Infrastructure.Persistence.Repository; +using Backbone.BuildingBlocks.Application.Housekeeping; +using Backbone.Modules.Announcements.Abstractions; using Backbone.Modules.Announcements.Domain.Entities; using MediatR; -namespace Backbone.Modules.Announcements.Application.Announcements.Commands.ExecuteHousekeeping; +namespace Backbone.Modules.Announcements.Module.Features.Announcements.ExecuteHousekeeping; public class Handler : IRequestHandler { diff --git a/Modules/Announcements/src/Announcements.Application/Announcements/Queries/GetAnnouncementById/Handler.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/GetAnnouncementById/Handler.cs similarity index 70% rename from Modules/Announcements/src/Announcements.Application/Announcements/Queries/GetAnnouncementById/Handler.cs rename to Modules/Announcements/src/Announcements.Module/Features/Announcements/GetAnnouncementById/Handler.cs index af846331ff..3ea38ff0d6 100644 --- a/Modules/Announcements/src/Announcements.Application/Announcements/Queries/GetAnnouncementById/Handler.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/GetAnnouncementById/Handler.cs @@ -1,10 +1,10 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.Modules.Announcements.Application.Announcements.DTOs; -using Backbone.Modules.Announcements.Application.Infrastructure.Persistence.Repository; +using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; +using Backbone.Modules.Announcements.Module.Features.Announcements.Shared; +using Backbone.Modules.Announcements.Abstractions; using Backbone.Modules.Announcements.Domain.Entities; using MediatR; -namespace Backbone.Modules.Announcements.Application.Announcements.Queries.GetAnnouncementById; +namespace Backbone.Modules.Announcements.Module.Features.Announcements.GetAnnouncementById; public class Handler : IRequestHandler { diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/GetAnnouncementById/Query.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/GetAnnouncementById/Query.cs new file mode 100644 index 0000000000..acf3a40feb --- /dev/null +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/GetAnnouncementById/Query.cs @@ -0,0 +1,9 @@ +using Backbone.Modules.Announcements.Module.Features.Announcements.Shared; +using MediatR; + +namespace Backbone.Modules.Announcements.Module.Features.Announcements.GetAnnouncementById; + +public class GetAnnouncementByIdQuery : IRequest +{ + public required string Id { get; init; } +} diff --git a/Modules/Announcements/src/Announcements.Application/Announcements/Queries/GetAnnouncementById/Validator.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/GetAnnouncementById/Validator.cs similarity index 63% rename from Modules/Announcements/src/Announcements.Application/Announcements/Queries/GetAnnouncementById/Validator.cs rename to Modules/Announcements/src/Announcements.Module/Features/Announcements/GetAnnouncementById/Validator.cs index 2c6497fd8b..e25b3c5c32 100644 --- a/Modules/Announcements/src/Announcements.Application/Announcements/Queries/GetAnnouncementById/Validator.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/GetAnnouncementById/Validator.cs @@ -1,8 +1,8 @@ -using Backbone.BuildingBlocks.Application.Extensions; +using Backbone.BuildingBlocks.Application.Extensions; using Backbone.Modules.Announcements.Domain.Entities; using FluentValidation; -namespace Backbone.Modules.Announcements.Application.Announcements.Queries.GetAnnouncementById; +namespace Backbone.Modules.Announcements.Module.Features.Announcements.GetAnnouncementById; public class Validator : AbstractValidator { diff --git a/Modules/Announcements/src/Announcements.Application/Announcements/Queries/ListAnnouncements/Handler.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Handler.cs similarity index 76% rename from Modules/Announcements/src/Announcements.Application/Announcements/Queries/ListAnnouncements/Handler.cs rename to Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Handler.cs index 83621281ee..77ada000e6 100644 --- a/Modules/Announcements/src/Announcements.Application/Announcements/Queries/ListAnnouncements/Handler.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Handler.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Announcements.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Announcements.Abstractions; using MediatR; -namespace Backbone.Modules.Announcements.Application.Announcements.Queries.ListAnnouncements; +namespace Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncements; public class Handler : IRequestHandler { diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Query.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Query.cs new file mode 100644 index 0000000000..50482be67e --- /dev/null +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Query.cs @@ -0,0 +1,5 @@ +using MediatR; + +namespace Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncements; + +public class ListAnnouncementsQuery : IRequest; diff --git a/Modules/Announcements/src/Announcements.Application/Announcements/Queries/ListAnnouncements/ListAllAnnouncementsResponse.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Response.cs similarity index 54% rename from Modules/Announcements/src/Announcements.Application/Announcements/Queries/ListAnnouncements/ListAllAnnouncementsResponse.cs rename to Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Response.cs index 60b17f6d42..133bcc8705 100644 --- a/Modules/Announcements/src/Announcements.Application/Announcements/Queries/ListAnnouncements/ListAllAnnouncementsResponse.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Response.cs @@ -1,8 +1,8 @@ -using Backbone.BuildingBlocks.Application.CQRS.BaseClasses; -using Backbone.Modules.Announcements.Application.Announcements.DTOs; +using Backbone.BuildingBlocks.Application.CQRS.BaseClasses; +using Backbone.Modules.Announcements.Module.Features.Announcements.Shared; using Backbone.Modules.Announcements.Domain.Entities; -namespace Backbone.Modules.Announcements.Application.Announcements.Queries.ListAnnouncements; +namespace Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncements; public class ListAnnouncementsResponse : CollectionResponseBase { diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Endpoint.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Endpoint.cs new file mode 100644 index 0000000000..a953e0b588 --- /dev/null +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Endpoint.cs @@ -0,0 +1,27 @@ +using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncementsInLanguage; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapListAnnouncementsInLanguageEndpoint(this RouteGroupBuilder group) + { + group.MapGet("", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest); + + return group; + } + + private static async Task Handle([FromQuery] string language, IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new ListAnnouncementsForActiveIdentityInLanguageQuery { Language = language }, cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Announcements/src/Announcements.Application/Announcements/Queries/ListAnnouncementsInLanguage/Handler.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Handler.cs similarity index 79% rename from Modules/Announcements/src/Announcements.Application/Announcements/Queries/ListAnnouncementsInLanguage/Handler.cs rename to Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Handler.cs index 060425a63b..be8ccbd144 100644 --- a/Modules/Announcements/src/Announcements.Application/Announcements/Queries/ListAnnouncementsInLanguage/Handler.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Handler.cs @@ -1,10 +1,10 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Announcements.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Announcements.Abstractions; using Backbone.Modules.Announcements.Domain.Entities; using MediatR; -namespace Backbone.Modules.Announcements.Application.Announcements.Queries.ListAnnouncementsInLanguage; +namespace Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncementsInLanguage; public class Handler : IRequestHandler { diff --git a/Modules/Announcements/src/Announcements.Application/Announcements/Queries/ListAnnouncementsInLanguage/ListAllAnnouncementsForActiveIdentityInLanguageQuery.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Query.cs similarity index 57% rename from Modules/Announcements/src/Announcements.Application/Announcements/Queries/ListAnnouncementsInLanguage/ListAllAnnouncementsForActiveIdentityInLanguageQuery.cs rename to Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Query.cs index d591ddcda1..03e2e540c9 100644 --- a/Modules/Announcements/src/Announcements.Application/Announcements/Queries/ListAnnouncementsInLanguage/ListAllAnnouncementsForActiveIdentityInLanguageQuery.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Query.cs @@ -1,6 +1,6 @@ -using MediatR; +using MediatR; -namespace Backbone.Modules.Announcements.Application.Announcements.Queries.ListAnnouncementsInLanguage; +namespace Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncementsInLanguage; public class ListAnnouncementsForActiveIdentityInLanguageQuery : IRequest { diff --git a/Modules/Announcements/src/Announcements.Application/Announcements/Queries/ListAnnouncementsInLanguage/ListAllAnnouncementsInLanguageResponse.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Response.cs similarity index 60% rename from Modules/Announcements/src/Announcements.Application/Announcements/Queries/ListAnnouncementsInLanguage/ListAllAnnouncementsInLanguageResponse.cs rename to Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Response.cs index f0b5d45c8d..edf886c1e3 100644 --- a/Modules/Announcements/src/Announcements.Application/Announcements/Queries/ListAnnouncementsInLanguage/ListAllAnnouncementsInLanguageResponse.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Response.cs @@ -1,8 +1,8 @@ -using Backbone.BuildingBlocks.Application.CQRS.BaseClasses; -using Backbone.Modules.Announcements.Application.Announcements.DTOs; +using Backbone.BuildingBlocks.Application.CQRS.BaseClasses; +using Backbone.Modules.Announcements.Module.Features.Announcements.Shared; using Backbone.Modules.Announcements.Domain.Entities; -namespace Backbone.Modules.Announcements.Application.Announcements.Queries.ListAnnouncementsInLanguage; +namespace Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncementsInLanguage; public class ListAnnouncementsInLanguageResponse : CollectionResponseBase { diff --git a/Modules/Announcements/src/Announcements.Application/Announcements/Queries/ListAnnouncementsInLanguage/Validator.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Validator.cs similarity index 58% rename from Modules/Announcements/src/Announcements.Application/Announcements/Queries/ListAnnouncementsInLanguage/Validator.cs rename to Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Validator.cs index 5811208e55..c952b2643f 100644 --- a/Modules/Announcements/src/Announcements.Application/Announcements/Queries/ListAnnouncementsInLanguage/Validator.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Validator.cs @@ -1,7 +1,7 @@ -using Backbone.BuildingBlocks.Application.FluentValidation; +using Backbone.BuildingBlocks.Application.FluentValidation; using FluentValidation; -namespace Backbone.Modules.Announcements.Application.Announcements.Queries.ListAnnouncementsInLanguage; +namespace Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncementsInLanguage; public class Validator : AbstractValidator { diff --git a/Modules/Announcements/src/Announcements.Application/Announcements/DTOs/AnnouncementDTO.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/Shared/AnnouncementDTO.cs similarity index 91% rename from Modules/Announcements/src/Announcements.Application/Announcements/DTOs/AnnouncementDTO.cs rename to Modules/Announcements/src/Announcements.Module/Features/Announcements/Shared/AnnouncementDTO.cs index 5c62344a45..8e0c083e92 100644 --- a/Modules/Announcements/src/Announcements.Application/Announcements/DTOs/AnnouncementDTO.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/Shared/AnnouncementDTO.cs @@ -1,6 +1,6 @@ -using Backbone.Modules.Announcements.Domain.Entities; +using Backbone.Modules.Announcements.Domain.Entities; -namespace Backbone.Modules.Announcements.Application.Announcements.DTOs; +namespace Backbone.Modules.Announcements.Module.Features.Announcements.Shared; public class AnnouncementDTO { diff --git a/Modules/Announcements/src/Announcements.Application/Announcements/DTOs/AnnouncementTextDTO.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/Shared/AnnouncementTextDTO.cs similarity index 73% rename from Modules/Announcements/src/Announcements.Application/Announcements/DTOs/AnnouncementTextDTO.cs rename to Modules/Announcements/src/Announcements.Module/Features/Announcements/Shared/AnnouncementTextDTO.cs index 5697add779..d0711ac75e 100644 --- a/Modules/Announcements/src/Announcements.Application/Announcements/DTOs/AnnouncementTextDTO.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/Shared/AnnouncementTextDTO.cs @@ -1,6 +1,6 @@ -using Backbone.Modules.Announcements.Domain.Entities; +using Backbone.Modules.Announcements.Domain.Entities; -namespace Backbone.Modules.Announcements.Application.Announcements.DTOs; +namespace Backbone.Modules.Announcements.Module.Features.Announcements.Shared; public class AnnouncementTextDTO { diff --git a/Modules/Announcements/src/Announcements.Application/Announcements/DTOs/SingleLanguageAnnouncementDTO.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/Shared/SingleLanguageAnnouncementDTO.cs similarity index 95% rename from Modules/Announcements/src/Announcements.Application/Announcements/DTOs/SingleLanguageAnnouncementDTO.cs rename to Modules/Announcements/src/Announcements.Module/Features/Announcements/Shared/SingleLanguageAnnouncementDTO.cs index 9ef8dd0711..01e0ae6bb9 100644 --- a/Modules/Announcements/src/Announcements.Application/Announcements/DTOs/SingleLanguageAnnouncementDTO.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/Shared/SingleLanguageAnnouncementDTO.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Announcements.Domain.Entities; -namespace Backbone.Modules.Announcements.Application.Announcements.DTOs; +namespace Backbone.Modules.Announcements.Module.Features.Announcements.Shared; /** * This class is used when a user's device asks for announcements. In that case we return diff --git a/Modules/Announcements/src/Announcements.Application/Announcements/IdentityDeleter.cs b/Modules/Announcements/src/Announcements.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs similarity index 74% rename from Modules/Announcements/src/Announcements.Application/Announcements/IdentityDeleter.cs rename to Modules/Announcements/src/Announcements.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs index 33d315305b..4ffec0c4e1 100644 --- a/Modules/Announcements/src/Announcements.Application/Announcements/IdentityDeleter.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs @@ -1,9 +1,9 @@ -using Backbone.BuildingBlocks.Application.Identities; +using Backbone.BuildingBlocks.Application.Identities; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Announcements.Application.Announcements.Commands.DeleteAnnouncementRecipients; +using Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementRecipients; using MediatR; -namespace Backbone.Modules.Announcements.Application.Announcements; +namespace Backbone.Modules.Announcements.Module.Features.Identities.DeleteIdentity; public class IdentityDeleter : IIdentityDeleter { diff --git a/Modules/Announcements/src/Announcements.Module/packages.lock.json b/Modules/Announcements/src/Announcements.Module/packages.lock.json index 148db3551a..06e672fc89 100644 --- a/Modules/Announcements/src/Announcements.Module/packages.lock.json +++ b/Modules/Announcements/src/Announcements.Module/packages.lock.json @@ -2,6 +2,16 @@ "version": 2, "dependencies": { "net10.0": { + "FluentValidation.DependencyInjectionExtensions": { + "type": "Direct", + "requested": "[12.1.1, 12.1.1]", + "resolved": "12.1.1", + "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", + "dependencies": { + "FluentValidation": "12.1.1", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" + } + }, "ReHackt.Extensions.Options.Validation": { "type": "Direct", "requested": "[10.0.1, 10.0.1]", @@ -1210,12 +1220,10 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Announcements.Application": { + "Backbone.Modules.Announcements.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Announcements.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Announcements.Domain": "[1.0.0, )" } }, "Backbone.Modules.Announcements.Contracts": { @@ -1236,8 +1244,9 @@ "Backbone.Modules.Announcements.Infrastructure": { "type": "Project", "dependencies": { + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Announcements.Application": "[1.0.0, )", + "Backbone.Modules.Announcements.Abstractions": "[1.0.0, )", "Backbone.Modules.Announcements.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1475,16 +1484,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", diff --git a/Modules/Announcements/test/Announcements.Application.Tests/Announcements.Application.Tests.csproj b/Modules/Announcements/test/Announcements.Module.Tests/Announcements.Module.Tests.csproj similarity index 85% rename from Modules/Announcements/test/Announcements.Application.Tests/Announcements.Application.Tests.csproj rename to Modules/Announcements/test/Announcements.Module.Tests/Announcements.Module.Tests.csproj index 79b080efac..29b165c2ab 100644 --- a/Modules/Announcements/test/Announcements.Application.Tests/Announcements.Application.Tests.csproj +++ b/Modules/Announcements/test/Announcements.Module.Tests/Announcements.Module.Tests.csproj @@ -16,7 +16,7 @@ - + diff --git a/Modules/Announcements/test/Announcements.Application.Tests/Tests/Announcements/Commands/AnonymizeRecipient/HandlerTests.cs b/Modules/Announcements/test/Announcements.Module.Tests/Tests/Announcements/Commands/AnonymizeRecipient/HandlerTests.cs similarity index 69% rename from Modules/Announcements/test/Announcements.Application.Tests/Tests/Announcements/Commands/AnonymizeRecipient/HandlerTests.cs rename to Modules/Announcements/test/Announcements.Module.Tests/Tests/Announcements/Commands/AnonymizeRecipient/HandlerTests.cs index 7adae57e23..9ed96cd831 100644 --- a/Modules/Announcements/test/Announcements.Application.Tests/Tests/Announcements/Commands/AnonymizeRecipient/HandlerTests.cs +++ b/Modules/Announcements/test/Announcements.Module.Tests/Tests/Announcements/Commands/AnonymizeRecipient/HandlerTests.cs @@ -1,10 +1,10 @@ -using System.Linq.Expressions; -using Backbone.Modules.Announcements.Application.Announcements.Commands.DeleteAnnouncementRecipients; -using Backbone.Modules.Announcements.Application.Infrastructure.Persistence.Repository; +using System.Linq.Expressions; +using Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementRecipients; +using Backbone.Modules.Announcements.Abstractions; using Backbone.Modules.Announcements.Domain.Entities; using FakeItEasy; -namespace Backbone.Modules.Announcements.Application.Tests.Tests.Announcements.Commands.AnonymizeRecipient; +namespace Backbone.Modules.Announcements.Module.Tests.Tests.Announcements.Commands.AnonymizeRecipient; public class HandlerTests : AbstractTestsBase { diff --git a/Modules/Announcements/test/Announcements.Application.Tests/Tests/Announcements/Commands/CreateAnnouncement/ValidatorTests.cs b/Modules/Announcements/test/Announcements.Module.Tests/Tests/Announcements/Commands/CreateAnnouncement/ValidatorTests.cs similarity index 95% rename from Modules/Announcements/test/Announcements.Application.Tests/Tests/Announcements/Commands/CreateAnnouncement/ValidatorTests.cs rename to Modules/Announcements/test/Announcements.Module.Tests/Tests/Announcements/Commands/CreateAnnouncement/ValidatorTests.cs index fa8c980ba7..436e79f021 100644 --- a/Modules/Announcements/test/Announcements.Application.Tests/Tests/Announcements/Commands/CreateAnnouncement/ValidatorTests.cs +++ b/Modules/Announcements/test/Announcements.Module.Tests/Tests/Announcements/Commands/CreateAnnouncement/ValidatorTests.cs @@ -1,8 +1,8 @@ -using Backbone.Modules.Announcements.Application.Announcements.Commands.CreateAnnouncement; +using Backbone.Modules.Announcements.Module.Features.Announcements.CreateAnnouncement; using Backbone.Modules.Announcements.Domain.Entities; using FluentValidation.TestHelper; -namespace Backbone.Modules.Announcements.Application.Tests.Tests.Announcements.Commands.CreateAnnouncement; +namespace Backbone.Modules.Announcements.Module.Tests.Tests.Announcements.Commands.CreateAnnouncement; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Announcements/test/Announcements.Application.Tests/Tests/Announcements/IdentityDeleterTests.cs b/Modules/Announcements/test/Announcements.Module.Tests/Tests/Announcements/IdentityDeleterTests.cs similarity index 81% rename from Modules/Announcements/test/Announcements.Application.Tests/Tests/Announcements/IdentityDeleterTests.cs rename to Modules/Announcements/test/Announcements.Module.Tests/Tests/Announcements/IdentityDeleterTests.cs index 1b9f0e3417..1f5d34da94 100644 --- a/Modules/Announcements/test/Announcements.Application.Tests/Tests/Announcements/IdentityDeleterTests.cs +++ b/Modules/Announcements/test/Announcements.Module.Tests/Tests/Announcements/IdentityDeleterTests.cs @@ -1,10 +1,10 @@ -using Backbone.BuildingBlocks.Application.Identities; -using Backbone.Modules.Announcements.Application.Announcements; -using Backbone.Modules.Announcements.Application.Announcements.Commands.DeleteAnnouncementRecipients; +using Backbone.BuildingBlocks.Application.Identities; +using Backbone.Modules.Announcements.Module.Features.Identities.DeleteIdentity; +using Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementRecipients; using FakeItEasy; using MediatR; -namespace Backbone.Modules.Announcements.Application.Tests.Tests.Announcements; +namespace Backbone.Modules.Announcements.Module.Tests.Tests.Announcements; public class IdentityDeleterTests : AbstractTestsBase { diff --git a/Modules/Announcements/test/Announcements.Application.Tests/packages.lock.json b/Modules/Announcements/test/Announcements.Module.Tests/packages.lock.json similarity index 58% rename from Modules/Announcements/test/Announcements.Application.Tests/packages.lock.json rename to Modules/Announcements/test/Announcements.Module.Tests/packages.lock.json index d8b143807f..dc316e8da7 100644 --- a/Modules/Announcements/test/Announcements.Application.Tests/packages.lock.json +++ b/Modules/Announcements/test/Announcements.Module.Tests/packages.lock.json @@ -40,6 +40,22 @@ "xunit.v3.core.mtp-v2": "[3.2.2]" } }, + "Asp.Versioning.Abstractions": { + "type": "Transitive", + "resolved": "10.1.0", + "contentHash": "RwdgC5O0baZ4pt30pAKKPQHq2CV4unBKA4HWoTeu7NY9ZwXM0dWYGf1Ipc5GK0eFBe9cMeqz4pGpPncMz4/ZNQ==", + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.0" + } + }, + "Asp.Versioning.Http": { + "type": "Transitive", + "resolved": "10.0.1", + "contentHash": "g0ayV/9ho3tGgooC6eF5p1063I1WzlxFJDYQrigcGnW+mLvui6eXrcW5hzTHhQREroUR3ZwXQrIN2SAIoi+KDw==", + "dependencies": { + "Asp.Versioning.Abstractions": "10.1.0" + } + }, "AWSSDK.Core": { "type": "Transitive", "resolved": "4.0.100.9", @@ -68,16 +84,6 @@ "System.Memory.Data": "1.0.2" } }, - "Azure.Identity": { - "type": "Transitive", - "resolved": "1.17.1", - "contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Microsoft.Identity.Client": "4.78.0", - "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" - } - }, "Azure.Storage.Common": { "type": "Transitive", "resolved": "12.28.0", @@ -237,6 +243,11 @@ "Grpc.Core.Api": "2.71.0" } }, + "libsodium": { + "type": "Transitive", + "resolved": "1.0.22", + "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" + }, "MedallionTopologicalSort": { "type": "Transitive", "resolved": "1.0.0", @@ -260,6 +271,25 @@ "Microsoft.AspNetCore.Cryptography.Internal": "10.0.10" } }, + "Microsoft.AspNetCore.DataProtection": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "5sfrNrBShTlJeXvWNxjPS7ilLY4H6MICZPMZr/2vjoDoBH5Z8sQYJwbhulqfXh4yIpxIto0TcmOQHOElvpq+iQ==", + "dependencies": { + "Microsoft.AspNetCore.Cryptography.Internal": "10.0.10", + "Microsoft.AspNetCore.DataProtection.Abstractions": "10.0.10", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", + "Microsoft.Extensions.Logging.Abstractions": "10.0.10", + "Microsoft.Extensions.Options": "10.0.10", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "Microsoft.AspNetCore.DataProtection.Abstractions": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "q2RNx0N/qrsU+JgbPE78I9pu5ekwguitAFVoeE1NCgxtkUTguvf7oTzBnn42zSQxuugJ4fmj0RSarob8Rvorrg==" + }, "Microsoft.Azure.Amqp": { "type": "Transitive", "resolved": "2.7.0", @@ -270,6 +300,11 @@ "resolved": "10.0.9", "contentHash": "Aq7M8lG6BrHeatqKqncVm9m55ec34k6nnfPRLe/PvGg+b/pAsRM2ejofeKmCLjTXMa+5NGXm382f8CG/D5WDow==" }, + "Microsoft.Bcl.Cryptography": { + "type": "Transitive", + "resolved": "10.0.2", + "contentHash": "LG9Yll3B5aNpxv0+D47g6LiOiKBIlodhcHdQwcYzo8VeexFLGqx5ymetmA2aBRyo9cCcWsQWrFsdbsr8LvmWDw==" + }, "Microsoft.CodeCoverage": { "type": "Transitive", "resolved": "18.8.1", @@ -277,22 +312,34 @@ }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, + "Microsoft.Data.SqlClient.Extensions.Abstractions": { + "type": "Transitive", + "resolved": "7.0.2", + "contentHash": "Zx7z61fG2Nc6LdDn4jA7b5Aj1ABrljkOPRE31RvVUdjF6IgbG60leDUhMCafsnWFgaheiK3iqpLe+kbf5Z5L8Q==", + "dependencies": { + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)" + } + }, + "Microsoft.Data.SqlClient.Internal.Logging": { + "type": "Transitive", + "resolved": "7.0.2", + "contentHash": "iqgYBbGSVy/DIYWjzmQOa964Kn4rs4wW5vg2IamqVK0fQqfTiILVR5hMK27XWqoyONtAZs+VxH354cPJBtSnbg==" + }, "Microsoft.Data.SqlClient.SNI.runtime": { "type": "Transitive", "resolved": "6.0.2", @@ -339,6 +386,21 @@ "Microsoft.SqlServer.Types": "160.1000.6" } }, + "Microsoft.Extensions.AmbientMetadata.Application": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "/FYCIyhRLrDwIg29tB/21/Rp7XMaEP/gWR5Cxyi4GgWcN/v/XXUpU52yhQux0s2SQy1Z0C1wnhptCMvLaaT45Q==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.10", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10" + } + }, + "Microsoft.Extensions.ApiDescription.Server": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "NCWCGiwRwje8773yzPQhvucYnnfeR+ZoB1VRIrIMp4uaeUNw7jvEPHij3HIbwCDuNCrNcphA00KSAR9yD9qmbg==" + }, "Microsoft.Extensions.Caching.Abstractions": { "type": "Transitive", "resolved": "10.0.10", @@ -409,6 +471,14 @@ "Microsoft.Extensions.FileProviders.Physical": "10.0.10" } }, + "Microsoft.Extensions.DependencyInjection.AutoActivation": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "LXwOAsnrflu2ln+Bxj7y3Zc/Pn4HquCCRzW81oOIuRsM8F75TxwA/ZpSFZ5E1+YkVpndz7BcHY4ThFSjjA4vbQ==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10" + } + }, "Microsoft.Extensions.DependencyModel": { "type": "Transitive", "resolved": "10.0.10", @@ -433,6 +503,14 @@ "Microsoft.Extensions.Options": "10.0.10" } }, + "Microsoft.Extensions.Diagnostics.ExceptionSummarization": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "tXmzwQeWgiycaLOtvSFnz0TPkJxXTyZrkwSVPTr83FgSiMj3BD/8eIbvrpGi5rzc2AgfKyegKo1ntJlJFey1Zg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10" + } + }, "Microsoft.Extensions.Diagnostics.HealthChecks": { "type": "Transitive", "resolved": "10.0.10", @@ -472,6 +550,48 @@ "resolved": "10.0.10", "contentHash": "jSOCVxEwCd4Aq925kJVz1kSO1EpX2OHYKL04qVREXkDU7Ce3pVDdHPYm+fEy8y/th2kJf/DAstRHpJAqoNWP8w==" }, + "Microsoft.Extensions.Http": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "DuEBLw2y7ZBfilnaJtlge8f2M49932v43t7j1InceXVjcZzxNrSEkobYXdgZkXuPFnFbKcbWpAS+fZgYEW1BhA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", + "Microsoft.Extensions.Diagnostics": "10.0.10", + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.Extensions.Logging.Abstractions": "10.0.10", + "Microsoft.Extensions.Options": "10.0.10" + } + }, + "Microsoft.Extensions.Http.Diagnostics": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "2pYnolFkigH7N6A5WHdGx93iZ8dIhrBnu4ZkjvB6RwbHzYmIy/iXVe12pdrViNDdeBSmKZ5FA9YP/xhwLT7q7A==", + "dependencies": { + "Microsoft.Extensions.Http": "10.0.10", + "Microsoft.Extensions.Telemetry": "10.8.0" + } + }, + "Microsoft.Extensions.Http.Polly": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "ceKyX9V/C+mtapMfXQ0ClKRkxDHAW2AAJoDgTcsh7UdOteCQKB5wRTFgHJ82Lh/3O+UlPA47LRGEZkRxtz/lCA==", + "dependencies": { + "Microsoft.Extensions.Http": "10.0.10", + "Polly": "7.2.4", + "Polly.Extensions.Http": "3.0.0" + } + }, + "Microsoft.Extensions.Http.Resilience": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "XtbZyYVxSNn1Aj2Z0PA8yauS12hPszTWDZ3GtZ5Vww7Ai3d8Pm841jMBnTvoTf1t9mRf3eSB38V5KUWxH6/4oQ==", + "dependencies": { + "Microsoft.Extensions.Http.Diagnostics": "10.8.0", + "Microsoft.Extensions.ObjectPool": "10.0.10", + "Microsoft.Extensions.Resilience": "10.8.0" + } + }, "Microsoft.Extensions.Logging.Configuration": { "type": "Transitive", "resolved": "10.0.10", @@ -555,6 +675,31 @@ "resolved": "10.0.10", "contentHash": "5wu/GrYVd8mG2DVUw3vFJzF+O336TyTGg/Kmcgw9bfwYhCoFiV5lR5QeEmKecJyrW4W54nMfD3p3589E8a7czQ==" }, + "Microsoft.Extensions.Resilience": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "RH/gv0ZcCnQ3d30lxb8+T2o661TwZq/K5eMwp488goQLX1QYqWN3i8L8XlN9DhrqP2Zcf0EtsWaKpJO3yHDUTw==", + "dependencies": { + "Microsoft.Extensions.Diagnostics": "10.0.10", + "Microsoft.Extensions.Diagnostics.ExceptionSummarization": "10.8.0", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10", + "Microsoft.Extensions.Telemetry.Abstractions": "10.8.0", + "Polly.Extensions": "8.4.2", + "Polly.RateLimiting": "8.4.2" + } + }, + "Microsoft.Extensions.Telemetry": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "IIWjDZguUJt6yNld9J4V88xuOUzpC76wBwfnRJLRmacmyTTl9jA8+KP5PuHPi7CKz/Vk/q+lQYmobiopuzapzA==", + "dependencies": { + "Microsoft.Extensions.AmbientMetadata.Application": "10.8.0", + "Microsoft.Extensions.DependencyInjection.AutoActivation": "10.8.0", + "Microsoft.Extensions.Logging.Configuration": "10.0.10", + "Microsoft.Extensions.ObjectPool": "10.0.10", + "Microsoft.Extensions.Telemetry.Abstractions": "10.8.0" + } + }, "Microsoft.Extensions.Telemetry.Abstractions": { "type": "Transitive", "resolved": "10.8.0", @@ -585,50 +730,57 @@ }, "Microsoft.IdentityModel.Abstractions": { "type": "Transitive", - "resolved": "8.14.0", - "contentHash": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==" + "resolved": "8.19.2", + "contentHash": "HJbo/lnSfNHUfphPRT910poQc4T2/9+8svFLvzuaYHGAOJ2Tu+oEDqpX0BVP3BJ4OuUM1kylEKyaiX2fCAK3Cw==" }, "Microsoft.IdentityModel.JsonWebTokens": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "3Izi75UCUssvo8LPx3OVnEeZay58qaFicrtSnbtUt7q8qQi0gy46gh4V8VUTkMVMKXV6VMyjBVmeNNgeCUJuIw==", + "resolved": "8.19.2", + "contentHash": "ui3fuBT4fs8kdKfBthI4NzLYIBIneEVS8UrL1JVBzAn80UiKmngBBi0BEByE7n/9c+EElcfFlCMFFTqpkBSLNA==", "dependencies": { - "Microsoft.IdentityModel.Tokens": "7.7.1" + "Microsoft.IdentityModel.Tokens": "8.19.2" } }, "Microsoft.IdentityModel.Logging": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "BZNgSq/o8gsKExdYoBKPR65fdsxW0cTF8PsdqB8y011AGUJJW300S/ZIsEUD0+sOmGc003Gwv3FYbjrVjvsLNQ==", + "resolved": "8.19.2", + "contentHash": "r5YLDIxGOnkVJHrqXv/iD1FM1CgGrQOdriXuvuWvTPmKbnGANhEysq9XKmN6IHjf2a+9bAGEpnoRBsAQlvJU5w==", "dependencies": { - "Microsoft.IdentityModel.Abstractions": "7.7.1" + "Microsoft.IdentityModel.Abstractions": "8.19.2" } }, "Microsoft.IdentityModel.Protocols": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "h+fHHBGokepmCX+QZXJk4Ij8OApCb2n2ktoDkNX5CXteXsOxTHMNgjPGpAwdJMFvAL7TtGarUnk3o97NmBq2QQ==", + "resolved": "8.19.2", + "contentHash": "sGxSsSrZXNmca6D+jHH2rVRyo2nNRd/g4H9CFbPmLLq0xgoH1U0orLWE5minfijw7+zq49tBs7txenbfAErRoQ==", "dependencies": { - "Microsoft.IdentityModel.Tokens": "7.7.1" + "Microsoft.IdentityModel.Tokens": "8.19.2" } }, "Microsoft.IdentityModel.Protocols.OpenIdConnect": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "yT2Hdj8LpPbcT9C9KlLVxXl09C8zjFaVSaApdOwuecMuoV4s6Sof/mnTDz/+F/lILPIBvrWugR9CC7iRVZgbfQ==", + "resolved": "8.16.0", + "contentHash": "h4yVXyJsEBBX5lg2G5ftMsi5JzcNEGAzrNphA6DQ6eOd8P0s+cDCOyPwVTYLePZvJL5unbPvYIvzrbTXzFjXnQ==", "dependencies": { - "Microsoft.IdentityModel.Protocols": "7.7.1", - "System.IdentityModel.Tokens.Jwt": "7.7.1" + "Microsoft.IdentityModel.Protocols": "8.16.0", + "System.IdentityModel.Tokens.Jwt": "8.16.0" } }, "Microsoft.IdentityModel.Tokens": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "fQ0VVCba75lknUHGldi3iTKAYUQqbzp1Un8+d9cm9nON0Gs8NAkXddNg8iaUB0qi/ybtAmNWizTR4avdkCJ9pQ==", + "resolved": "8.19.2", + "contentHash": "GtPC1S02uH1gOO4fQ+zRysIicKmEXaYFP8PIkdJYXqMyruYhopre4ozVHp0XiDSA0+GJvOZH9prxCPvgBMg4Ww==", "dependencies": { - "Microsoft.IdentityModel.Logging": "7.7.1" + "Microsoft.Bcl.Cryptography": "10.0.2", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.IdentityModel.Logging": "8.19.2" } }, + "Microsoft.OpenApi": { + "type": "Transitive", + "resolved": "2.7.5", + "contentHash": "0FA67RSnRM4tcBKqiqVu/HPdZ9+QOKbmeRjxRUGTCjPU4C0bmUhd97Dso7Yild5P7nOV6GxJ2xrK0Kv/O9xp0w==" + }, "Microsoft.SqlServer.Server": { "type": "Transitive", "resolved": "1.0.0", @@ -716,11 +868,257 @@ "Microsoft.Extensions.Logging.Abstractions": "10.0.0" } }, + "OpenIddict": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "Dih/QGs3ptgvsioSOdvn/6KMy3el5ImMimp/9SV9VX/FqTT6CxBOGoxaukfJeVqgcxQrgge1vQvFp3kWtgOKGg==", + "dependencies": { + "OpenIddict.Abstractions": "7.6.0", + "OpenIddict.Client": "7.6.0", + "OpenIddict.Client.SystemIntegration": "7.6.0", + "OpenIddict.Client.SystemNetHttp": "7.6.0", + "OpenIddict.Client.WebIntegration": "7.6.0", + "OpenIddict.Core": "7.6.0", + "OpenIddict.Server": "7.6.0", + "OpenIddict.Validation": "7.6.0", + "OpenIddict.Validation.ServerIntegration": "7.6.0", + "OpenIddict.Validation.SystemNetHttp": "7.6.0" + } + }, + "OpenIddict.Abstractions": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "Fp2MUvm6wwsqk6+ieUM/3MTMlbCL1zwSXixM0xC22FgKcl5EQB7E0vV38IRI/rSF8UGgvC/AOjMOF6FoFyks8g==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", + "Microsoft.Extensions.Primitives": "10.0.10", + "Microsoft.IdentityModel.Tokens": "8.19.2" + } + }, + "OpenIddict.Client": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "X+Sg1wRKeVOeayJuZ4/0M74zXRENvXOAl2JRPF4MaEOoS9Pj6WCWMLriWS0wwEC1ODxQmLaG3tYZfcdC9hU40g==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.IdentityModel.JsonWebTokens": "8.19.2", + "Microsoft.IdentityModel.Protocols": "8.19.2", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.Client.AspNetCore": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "XjEj75mTkvMn1sj4jONWLTRK6KzeY/Hou8218nwLnJnqYmKJ1th7UDfadNTb530KSC+WPLxfvi7grzIv0xzebw==", + "dependencies": { + "OpenIddict.Client": "7.6.0" + } + }, + "OpenIddict.Client.DataProtection": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ZVhuFSzPbAaZkiRRrr77oyJnciWhytPnTZ1ByaCGfDx1b977crbcJww2asfkMpgNzcbWWAR6SgcS05hklsQflw==", + "dependencies": { + "Microsoft.AspNetCore.DataProtection": "10.0.10", + "OpenIddict.Client": "7.6.0", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "OpenIddict.Client.SystemIntegration": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "yqnyQH6CG46+y2Rp4UcIOXNcWgDvITW43PULI9sr6xYCS34J/kO6GU6fhwOGUfUJjRdOis3Xj00WwUZxZUQ5ZQ==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", + "OpenIddict.Client": "7.6.0" + } + }, + "OpenIddict.Client.SystemNetHttp": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "HsiL7rCRCFd7D1uvi6+HLmlkw9ykbLsEJ1GJMttuLB3/C8/LcqX+wHxr1W/GXl2YXhleNMW21I5AeVtGnfd9tg==", + "dependencies": { + "Microsoft.Extensions.Http.Polly": "10.0.10", + "Microsoft.Extensions.Http.Resilience": "10.8.0", + "OpenIddict.Client": "7.6.0" + } + }, + "OpenIddict.Client.WebIntegration": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "vJzIkHZwjB8vp6Hhxa8s9ruh/L+ZgpJUszGVP+kQQoqDQ8yZygbl0xWKuAHQ4OCIk3FTeSib9xH8uetm47YPgg==", + "dependencies": { + "OpenIddict.Client": "7.6.0", + "OpenIddict.Client.SystemNetHttp": "7.6.0" + } + }, + "OpenIddict.EntityFrameworkCore.Models": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "DrWB0dLfsg3mZhWABAlqSZKXin4Q4Pn8V4S7/1JxP5T/7Ncl0y45rM9L2EWv/zdydaiTOFKi4jRDBZAgBxUjaQ==" + }, + "OpenIddict.Server": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "0c7wlRYcP2Smgjp3PWyyojZ972H26otp6irW/WAFEbg4ZylcUvtlw0lkrCr/K8s5lAnYZwrpyzguwrJhXGKPVg==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.IdentityModel.JsonWebTokens": "8.19.2", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.Server.AspNetCore": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "m2Hk2R4gaTlEYBvNHz2fvIr38p1agiR2nW2gi5WMgSByFHxeEK5uhxqVGdSB2kEHRtp9kza/zBWBgIM4TdcVqw==", + "dependencies": { + "OpenIddict.Server": "7.6.0" + } + }, + "OpenIddict.Server.DataProtection": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ScGEt6uNuk2MZ/6DzVAMi/QegZulkvYKPRMrRu5/8/uI8P5o5XbEhEvancFx9YmBHL1uGE8SIByfTfxJx8kefA==", + "dependencies": { + "Microsoft.AspNetCore.DataProtection": "10.0.10", + "OpenIddict.Server": "7.6.0", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "OpenIddict.Validation": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ovzLQJ31uWZpgLdRVuD9Gmu8wxvhvbXW32MFTglFblhfqRwj/hMcEGOo8hdl+ir3QpDr9NUDAORA+v3S7xc6IA==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.IdentityModel.JsonWebTokens": "8.19.2", + "Microsoft.IdentityModel.Protocols": "8.19.2", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.Validation.AspNetCore": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "oby5/Ymdxd+g1TGtyTGrcK5J3/NSI80aw2CJgULwwIxraiCjiIfexrBjCxkPchWqPNFe6aAdGJ/Jz6amHNfrzg==", + "dependencies": { + "OpenIddict.Validation": "7.6.0" + } + }, + "OpenIddict.Validation.DataProtection": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ckC2xcPeJ/kLSyJXNOmpmFLnA1qM6zC8RR5d2pUtoToA6caMikebkL3NmRjBgxBRVvFmi7x9lMJ7+YmrI+uAlg==", + "dependencies": { + "Microsoft.AspNetCore.DataProtection": "10.0.10", + "OpenIddict.Validation": "7.6.0", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "OpenIddict.Validation.ServerIntegration": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "0bHhKsMV45UMPM5Phh51+g/tMUJNRzOWe6p/5opKeMQV8XoO3y3J9o/ZbfZ0j4qTTbQ7pqzEKSZaS4cGs0B3nQ==", + "dependencies": { + "OpenIddict.Server": "7.6.0", + "OpenIddict.Validation": "7.6.0" + } + }, + "OpenIddict.Validation.SystemNetHttp": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "N3MHlVaik22apnhxCTsqP6TjwRB/h874+5ks/m1+wKmOWqMyJ5UjIaZCvUOrDSMtDiEVted8qkjEJRzjAe0rGQ==", + "dependencies": { + "Microsoft.Extensions.Http.Polly": "10.0.10", + "Microsoft.Extensions.Http.Resilience": "10.8.0", + "OpenIddict.Validation": "7.6.0" + } + }, + "OpenTelemetry": { + "type": "Transitive", + "resolved": "1.18.0", + "contentHash": "13AKxycK+olOLe061MjliPTNBR/DUkjyRr0b9zwUhKyMjFS8lXS7G31R85rkbM55up2YFmdykWdAw2giBDJpiQ==", + "dependencies": { + "Microsoft.Extensions.Configuration.EnvironmentVariables": "10.0.0", + "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Configuration": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "1.18.0" + } + }, + "OpenTelemetry.Api.ProviderBuilderExtensions": { + "type": "Transitive", + "resolved": "1.18.0", + "contentHash": "io6A6PJFp3vIObRGf6oPjdHsdglkinXt/0SpTDJHrVnsLxUtOzwh/QwTsnhBJ43wJ6QcGMkyNzsSSY8XEB1Q5Q==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "OpenTelemetry.Api": "1.18.0" + } + }, "Polly.Core": { "type": "Transitive", "resolved": "8.7.0", "contentHash": "BS2t+nsBer16PIebCEPNBK5fgMisADQyRCd7K+BgkMWpFmSaiYE+rVVNpFhGRqUkJmNSLmw0uCNzHHWfgml28Q==" }, + "Polly.Extensions": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "GZ9vRVmR0jV2JtZavt+pGUsQ1O1cuRKG7R7VOZI6ZDy9y6RNPvRvXK1tuS4ffUrv8L0FTea59oEuQzgS0R7zSA==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "Polly.Core": "8.4.2" + } + }, + "Polly.Extensions.Http": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "drrG+hB3pYFY7w1c3BD+lSGYvH2oIclH8GRSehgfyP5kjnFnHKQuuBhuHLv+PWyFuaTDyk/vfRpnxOzd11+J8g==", + "dependencies": { + "Polly": "7.1.0" + } + }, + "Polly.RateLimiting": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "ehTImQ/eUyO07VYW2WvwSmU9rRH200SKJ/3jku9rOkyWE0A2JxNFmAVms8dSn49QLSjmjFRRSgfNyOgr/2PSmA==", + "dependencies": { + "Polly.Core": "8.4.2", + "System.Threading.RateLimiting": "8.0.0" + } + }, + "runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "A8v6PGmk+UGbfWo5Ixup0lPM4swuSwOiayJExZwKIOjTlFFQIsu3QnDXECosBEyrWSPryxBVrdqtJyhK3BaupQ==", + "dependencies": { + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": "4.4.0" + } + }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, + "Serilog.Extensions.Logging": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "vx0kABKl2dWbBhhqAfTOk53/i8aV/5VaT3a6il9gn72Wqs2pM7EK2OB6No6xdqK2IaY6Zf9gdjLuK9BVa2rT+Q==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.0", + "Serilog": "4.2.0" + } + }, "SQLitePCLRaw.bundle_e_sqlite3": { "type": "Transitive", "resolved": "2.1.11", @@ -743,6 +1141,27 @@ "SQLitePCLRaw.core": "2.1.11" } }, + "Swashbuckle.AspNetCore.Swagger": { + "type": "Transitive", + "resolved": "10.2.3", + "contentHash": "1jUUs3WQnrS0FUtaZPLSy1yYMEwS1zlvDmvQ2/eldPHUANX0LJSLVZecCMgSMdeGiRqeaRrIXLtSz++TCiTMww==", + "dependencies": { + "Microsoft.OpenApi": "2.7.5" + } + }, + "Swashbuckle.AspNetCore.SwaggerGen": { + "type": "Transitive", + "resolved": "10.2.3", + "contentHash": "y7t4coDRAeFYChmvlMRiH2OjbiRrm9AVIDgt17fQfs3x9PVAI5PiwWYOhg+4F13R4Q36WDc9lqfoOnNa3tNbGg==", + "dependencies": { + "Swashbuckle.AspNetCore.Swagger": "10.2.3" + } + }, + "Swashbuckle.AspNetCore.SwaggerUI": { + "type": "Transitive", + "resolved": "10.2.3", + "contentHash": "nthWONRs/FJ4yyG206g1cC52WEG8EqrjuMWjGdR+5XG7lbjFto6NqcI9EMICgVFom/UivIjUVwI76ZHbHwTPfQ==" + }, "System.ClientModel": { "type": "Transitive", "resolved": "1.14.0", @@ -761,11 +1180,11 @@ }, "System.Configuration.ConfigurationManager": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "vPinosRgEk1CGjohbv0pDuz6gPprkWo5xvBTjOJjks5JOgOEWvPndq5NngGxiTcBcy1+k9GwzZ1c3Bp2fU5ezw==", + "resolved": "9.0.13", + "contentHash": "GbBrJq9S/gYpHzm7Pxx6Y5tDyfSfyxW6tlP5oiKJV38uf19Wp+GIIAnWfyL1zmNiz1+EjwVapw2WkBFvvqKQzg==", "dependencies": { - "System.Diagnostics.EventLog": "9.0.11", - "System.Security.Cryptography.ProtectedData": "9.0.11" + "System.Diagnostics.EventLog": "9.0.13", + "System.Security.Cryptography.ProtectedData": "9.0.13" } }, "System.Diagnostics.EventLog": { @@ -775,11 +1194,11 @@ }, "System.IdentityModel.Tokens.Jwt": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "rQkO1YbAjLwnDJSMpRhRtrc6XwIcEOcUvoEcge+evurpzSZM3UNK+MZfD3sKyTlYsvknZ6eJjSBfnmXqwOsT9Q==", + "resolved": "8.16.0", + "contentHash": "rrs2u7DRMXQG2yh0oVyF/vLwosfRv20Ld2iEpYcKwQWXHjfV+gFXNQsQ9p008kR9Ou4pxBs68Q6/9zC8Gi1wjg==", "dependencies": { - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Tokens": "7.7.1" + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Tokens": "8.16.0" } }, "System.IO.Hashing": { @@ -802,13 +1221,21 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "System.Security.Cryptography.ProtectedData": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "s8yUYuYYu+PAwvBdhLG1KyrGrk9gkYeuPxfAsXsTqqWyepwSyEw8hAaflW4nO98NG52YpYI1am2+9o+79h2RtQ==" + "resolved": "9.0.13", + "contentHash": "t8S9IDpjJKsLpLkeBdW8cWtcPyYqrGu93Dej1RO6WwuL/lkFSqWlan3rMJfortqz1mRIh+sys2AFsSA6jWJ3Jg==" + }, + "System.Security.Cryptography.Xml": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "Mz6Y+s+uMQKj1H2BUF0OhlmaOQkLgSG34/IrUaBDirYBQ6bgwcFvO/XtXWcoDlBLFoFB0uKqDNhybHOd+fQK1A==", + "dependencies": { + "System.Security.Cryptography.Pkcs": "10.0.10" + } }, "System.Threading.RateLimiting": { "type": "Transitive", @@ -877,6 +1304,33 @@ "xunit.v3.runner.common": "[3.2.2]" } }, + "Backbone.BuildingBlocks.API": { + "type": "Project", + "dependencies": { + "Asp.Versioning.Mvc": "[10.0.1, 10.0.1]", + "Asp.Versioning.Mvc.ApiExplorer": "[10.0.1, 10.0.1]", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Module": "[1.0.0, )", + "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", + "Backbone.Tooling": "[1.0.0, )", + "DotNetDiag.HealthChecks.NpgSql": "[10.0.10, 10.0.10]", + "DotNetDiag.HealthChecks.SqlServer": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.Relational": "[10.0.10, 10.0.10]", + "OpenTelemetry.Exporter.OpenTelemetryProtocol": "[1.18.0, )", + "OpenTelemetry.Extensions.Hosting": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.AspNetCore": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.EntityFrameworkCore": "[1.18.0-beta.1, )", + "OpenTelemetry.Instrumentation.Http": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.Runtime": "[1.18.0, 1.18.0]", + "Polly": "[8.7.0, 8.7.0]", + "Serilog.Enrichers.Sensitive": "[2.1.0, 2.1.0]", + "Serilog.Extensions.Hosting": "[10.0.0, 10.0.0]", + "Swashbuckle.AspNetCore": "[10.2.3, 10.2.3]", + "System.Data.SqlClient": "[4.9.1, 4.9.1]" + } + }, "Backbone.BuildingBlocks.Application": { "type": "Project", "dependencies": { @@ -934,6 +1388,15 @@ "Serilog": "[4.4.0, 4.4.0]" } }, + "Backbone.BuildingBlocks.Module": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Microsoft.Extensions.Configuration.Abstractions": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[10.0.10, 10.0.10]", + "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" + } + }, "Backbone.Common.Infrastructure": { "type": "Project", "dependencies": { @@ -944,6 +1407,13 @@ "Polly": "[8.7.0, 8.7.0]" } }, + "Backbone.Crypto": { + "type": "Project", + "dependencies": { + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", + "NSec.Cryptography": "[26.4.0, 26.4.0]" + } + }, "Backbone.DevelopmentKit.Identity": { "type": "Project", "dependencies": { @@ -951,12 +1421,10 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Announcements.Application": { + "Backbone.Modules.Announcements.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.Modules.Announcements.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Announcements.Domain": "[1.0.0, )" } }, "Backbone.Modules.Announcements.Contracts": { @@ -974,6 +1442,115 @@ "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]" } }, + "Backbone.Modules.Announcements.Infrastructure": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", + "Backbone.Modules.Announcements.Abstractions": "[1.0.0, )", + "Backbone.Modules.Announcements.Domain": "[1.0.0, )", + "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[10.0.10, 10.0.10]", + "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, 10.0.3]" + } + }, + "Backbone.Modules.Announcements.Infrastructure.Database.Postgres": { + "type": "Project", + "dependencies": { + "Backbone.Modules.Announcements.Infrastructure": "[1.0.0, )" + } + }, + "Backbone.Modules.Announcements.Infrastructure.Database.SqlServer": { + "type": "Project", + "dependencies": { + "Backbone.Modules.Announcements.Infrastructure": "[1.0.0, )" + } + }, + "Backbone.Modules.Announcements.Module": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.API": "[1.0.0, )", + "Backbone.BuildingBlocks.Module": "[1.0.0, )", + "Backbone.Modules.Announcements.Abstractions": "[1.0.0, )", + "Backbone.Modules.Announcements.Domain": "[1.0.0, )", + "Backbone.Modules.Announcements.Infrastructure": "[1.0.0, )", + "Backbone.Modules.Announcements.Infrastructure.Database.Postgres": "[1.0.0, )", + "Backbone.Modules.Announcements.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" + } + }, + "Backbone.Modules.Devices.Application": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.Crypto": "[1.0.0, )", + "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", + "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", + "FluentValidation": "[12.1.1, 12.1.1]", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "OpenIddict.Core": "[7.6.0, 7.6.0]", + "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", + "Polly": "[8.7.0, 8.7.0]" + } + }, + "Backbone.Modules.Devices.Contracts": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )" + } + }, + "Backbone.Modules.Devices.Domain": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )", + "Backbone.DevelopmentKit.Identity": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Tooling": "[1.0.0, )", + "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]" + } + }, + "Backbone.Modules.Devices.Infrastructure": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", + "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "FirebaseAdmin": "[3.6.0, 3.6.0]", + "JWT": "[11.1.0, 11.1.0]", + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.Relational": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.DependencyInjection": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Identity.Core": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Identity.Stores": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Logging": "[10.0.10, 10.0.10]", + "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, 10.0.3]", + "OpenIddict.AspNetCore": "[7.6.0, 7.6.0]", + "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", + "Polly": "[8.7.0, 8.7.0]" + } + }, + "Backbone.Modules.Synchronization.Contracts": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )" + } + }, + "Backbone.Modules.Tokens.Contracts": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )" + } + }, "Backbone.Tooling": { "type": "Project", "dependencies": { @@ -995,6 +1572,24 @@ "Shouldly": "[4.3.0, 4.3.0]" } }, + "Asp.Versioning.Mvc": { + "type": "CentralTransitive", + "requested": "[10.0.1, 10.0.1]", + "resolved": "10.0.1", + "contentHash": "OqoFPKKxXkNmw62H3CgXkPrf1L4PPwwyYr9QMP6itt/khKTIayqaHhK6F2e3jt6KHc4s23cWAUbu+Z5GPEeMaw==", + "dependencies": { + "Asp.Versioning.Http": "10.0.1" + } + }, + "Asp.Versioning.Mvc.ApiExplorer": { + "type": "CentralTransitive", + "requested": "[10.0.1, 10.0.1]", + "resolved": "10.0.1", + "contentHash": "ylPZe+LheFp0pt2tSMq2pPeGAkMLqWVOn5+1/xOB/eUj889n9b35Sny08bSQ0ziAGIFjp3BBTXaYsWJjRoFV4A==", + "dependencies": { + "Asp.Versioning.Mvc": "10.0.1" + } + }, "Autofac": { "type": "CentralTransitive", "requested": "[9.3.2, 9.3.2]", @@ -1031,6 +1626,12 @@ "Azure.Storage.Common": "12.28.0" } }, + "BouncyCastle.Cryptography": { + "type": "CentralTransitive", + "requested": "[2.7.0, 2.7.0]", + "resolved": "2.7.0", + "contentHash": "U+12df8UEWHgBi04YVf/Lgi2dy3SItlIYvHjjEVa/BngCQIzDCDRBk50DDByCfDvSbe5pRNFr3b7UrVK2kMcLw==" + }, "CSharpFunctionalExtensions": { "type": "CentralTransitive", "requested": "[3.7.0, 3.7.0]", @@ -1043,6 +1644,26 @@ "resolved": "2.1.79", "contentHash": "8YijbzgTfmqmQOnVNorYM6K++pxqnW3nJ4aC1sRHzxUA2CcuoJ9gsTem3kgBnPRMc38zZHl4Esb6hAezXIEEuw==" }, + "DotNetDiag.HealthChecks.NpgSql": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "lxb6wQ1YC/TpvZMVgbyeLP5dYOg/RJWLg1xlR+I0FeyfyMmukppKdwzBOrKRtZ8FHG3nV9xrVTaPdwRw0yL4Vw==", + "dependencies": { + "Microsoft.Extensions.Diagnostics.HealthChecks": "10.0.9", + "Npgsql": "10.0.3" + } + }, + "DotNetDiag.HealthChecks.SqlServer": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "6t2HP5VQR0GZDJiw8iZvzOTRC+84irUeaUuWvcqcnc4K5Mzrn/A9V0ucoyjySXOF1vGkdTHjlJMknJVYC9c2Hg==", + "dependencies": { + "Microsoft.Data.SqlClient": "7.0.2", + "Microsoft.Extensions.Diagnostics.HealthChecks": "10.0.9" + } + }, "EFCore.BulkExtensions.Core": { "type": "CentralTransitive", "requested": "[10.0.1, 10.0.1]", @@ -1085,6 +1706,16 @@ "Castle.Core": "5.2.1" } }, + "FirebaseAdmin": { + "type": "CentralTransitive", + "requested": "[3.6.0, 3.6.0]", + "resolved": "3.6.0", + "contentHash": "aP8UWyQYACDOZqnHN9WB77TS0DlB8kVj8/HB7evUaAhAgPJQ9y4NmISJ3kkYkWBG5va3PHvYN5H+ZDBhABSEFQ==", + "dependencies": { + "Google.Api.Gax.Rest": "4.13.1", + "Google.Apis.Auth": "1.73.0" + } + }, "FluentValidation": { "type": "CentralTransitive", "requested": "[12.1.1, 12.1.1]", @@ -1121,6 +1752,15 @@ "Google.Apis.Storage.v1": "[1.74.0.4115, 2.0.0)" } }, + "JWT": { + "type": "CentralTransitive", + "requested": "[11.1.0, 11.1.0]", + "resolved": "11.1.0", + "contentHash": "GbmNr2WUyY3Ma0rwuvmTDnE5tIV8gFNDWeua9Fn54HwrpvGfwQzi7HtEAnMgI4quf4MuJr0iwPkt9sKrNCq1Tg==", + "dependencies": { + "Newtonsoft.Json": "13.0.4" + } + }, "MediatR": { "type": "CentralTransitive", "requested": "[12.5.0, 12.5.0]", @@ -1137,6 +1777,16 @@ "resolved": "2.0.1", "contentHash": "FYv95bNT4UwcNA+G/J1oX5OpRiSUxteXaUt2BJbRSdRNiIUNbggJF69wy6mnk2wYToaanpdXZdCwVylt96MpwQ==" }, + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "/ZV8RMWbWob1ZGsF5f1wVJNNlFLPKCf2ba834PpQiNhirVQ/ksup5SujtuUsvByHEZgv+9dmjC/4Xdi75axmXQ==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "10.0.10", + "Microsoft.Extensions.Identity.Stores": "10.0.10" + } + }, "Microsoft.Data.Sqlite.Core": { "type": "CentralTransitive", "requested": "[10.0.10, 10.0.10]", @@ -1352,6 +2002,17 @@ "Microsoft.Extensions.Options": "10.0.10" } }, + "Microsoft.Extensions.Identity.Stores": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "WMG/9wPJPnwU2w1R/WPLO/RL2UpGpBhw9z6odAAUkFdZypzzXl620FJWEoPpuBUq6Q4GYgMg0FQVRCO6gO4MQQ==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "10.0.10", + "Microsoft.Extensions.Identity.Core": "10.0.10", + "Microsoft.Extensions.Logging": "10.0.10" + } + }, "Microsoft.Extensions.Logging": { "type": "CentralTransitive", "requested": "[10.0.10, 10.0.10]", @@ -1393,12 +2054,118 @@ "Npgsql": "10.0.3" } }, + "NSec.Cryptography": { + "type": "CentralTransitive", + "requested": "[26.4.0, 26.4.0]", + "resolved": "26.4.0", + "contentHash": "0vsCtY5f+YgQROiWNqzgWp+l2pddfk9FkWoGV/bEo0MuEYPKlJWuoA8aOfO6qp3f+EnObKE3zSJhn1PspJeJVg==", + "dependencies": { + "libsodium": "[1.0.22, 1.0.23)" + } + }, + "OpenIddict.AspNetCore": { + "type": "CentralTransitive", + "requested": "[7.6.0, 7.6.0]", + "resolved": "7.6.0", + "contentHash": "FblhXU1SzSjL1nPsK5kqi+uMofNYLg1gwBU/qqc8diOafTv/6jLOhpCzzk+wISR8OnkS7H3oFMcTjy8aaTm8ww==", + "dependencies": { + "OpenIddict": "7.6.0", + "OpenIddict.Client.AspNetCore": "7.6.0", + "OpenIddict.Client.DataProtection": "7.6.0", + "OpenIddict.Server.AspNetCore": "7.6.0", + "OpenIddict.Server.DataProtection": "7.6.0", + "OpenIddict.Validation.AspNetCore": "7.6.0", + "OpenIddict.Validation.DataProtection": "7.6.0" + } + }, + "OpenIddict.Core": { + "type": "CentralTransitive", + "requested": "[7.6.0, 7.6.0]", + "resolved": "7.6.0", + "contentHash": "LJQ+GsSY6Nfw5FZ4NzCvL2kwYU1GNz6ygiUNGvqcKP0qXwstU59RDAjNKTCGkPPq4TQGnETqr4UsJgyK+AFxeA==", + "dependencies": { + "Microsoft.Extensions.Caching.Memory": "10.0.10", + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.Extensions.Options": "10.0.10", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[7.6.0, 7.6.0]", + "resolved": "7.6.0", + "contentHash": "BWbgvgKbDcg3EuNJvmXtUzeLxg9c4bU+PfDnZetCjGwcnlCsWcASkjVexKKevtUgWxRWJTQFRchMA09OKmOF/w==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "10.0.10", + "OpenIddict.Core": "7.6.0", + "OpenIddict.EntityFrameworkCore.Models": "7.6.0" + } + }, "OpenTelemetry.Api": { "type": "CentralTransitive", "requested": "[1.18.0, )", "resolved": "1.18.0", "contentHash": "Dhzm5oughIY9EWckt2J1yXcEbXpki5WCL2q7prJoYxzH6C7jdkfGtPMTkUVZZ4AhjJKzQnlC+kLSIlmIVwC4Vw==" }, + "OpenTelemetry.Exporter.OpenTelemetryProtocol": { + "type": "CentralTransitive", + "requested": "[1.18.0, )", + "resolved": "1.18.0", + "contentHash": "Et3WAviooKGObZjUZN8d6eTsdJs1YM3ZoN+KlWSAHksTmHG1nyGi9XGo2wb0fkFMWK0g80FOPdR1njg52Dm+aw==", + "dependencies": { + "OpenTelemetry": "1.18.0" + } + }, + "OpenTelemetry.Extensions.Hosting": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "u+JMA82H65MKwMvd2qUpL8C2qE4Jux2nvX9hmy036UK/Apv2YyIRYCttF/vlX6nMPcAKI8BXkscmL4QG3C69fw==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", + "OpenTelemetry": "1.18.0" + } + }, + "OpenTelemetry.Instrumentation.AspNetCore": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "hBiMXE/CGIAHUOpi0gScNkjHB0L9XbCin5lZObL+dMBl4OmpndnHgxP3JZDnnGtU6qOzdeh8TYUV9f6Jgmmhlw==", + "dependencies": { + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[1.18.0-beta.1, )", + "resolved": "1.18.0-beta.1", + "contentHash": "n15cNXxkSl9G6KD41wZYmujjERYOBiIgn2VeesTFhLtHZ+QQQE3baLrCk7UyzidEw/uGObRcW3SKhqpyMpGe1w==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Http": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "/X57peOOa4a+9V4DSVXbuIWdsAxmU5gsxw8lu+gJU0zuewsYhC9f6qdm8GEW0VvqG9e+gxn0HdVR5G3YHcWDTw==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Runtime": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "McuXGjBJDL/Cown2PxfUQysK98MZG7ZDjO/IKUtaAx8t1m0PB0d+QtJC79RFTVipMhRIwjJiULNOp0OGfZbvwg==", + "dependencies": { + "OpenTelemetry.Api": "[1.18.0, 2.0.0)" + } + }, "Polly": { "type": "CentralTransitive", "requested": "[8.7.0, 8.7.0]", @@ -1433,6 +2200,25 @@ "resolved": "4.4.0", "contentHash": "ZC6Le3rr4TVJJjS4KsQAesxeF1EhW9qcZmmG7eP5Y2G3+gTGkJEUXkq4+tZNPtyp05I0wWOxnIjwtxFweJsObw==" }, + "Serilog.Enrichers.Sensitive": { + "type": "CentralTransitive", + "requested": "[2.1.0, 2.1.0]", + "resolved": "2.1.0", + "contentHash": "nlaEYMoHjJqncjQgc0Nv4LOIkAwUt4Nvmx3EMNjY4MKC7QqZs9zB0v/NwFnaWzLF7qztc7mna1bjn20Auohu0g==" + }, + "Serilog.Extensions.Hosting": { + "type": "CentralTransitive", + "requested": "[10.0.0, 10.0.0]", + "resolved": "10.0.0", + "contentHash": "E7juuIc+gzoGxgzFooFgAV8g9BfiSXNKsUok9NmEpyAXg2odkcPsMa/Yo4axkJRlh0se7mkYQ1GXDaBemR+b6w==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Serilog": "4.3.0", + "Serilog.Extensions.Logging": "10.0.0" + } + }, "Shouldly": { "type": "CentralTransitive", "requested": "[4.3.0, 4.3.0]", @@ -1454,25 +2240,50 @@ "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "Swashbuckle.AspNetCore": { + "type": "CentralTransitive", + "requested": "[10.2.3, 10.2.3]", + "resolved": "10.2.3", + "contentHash": "8KNh1RWvofdU6DVLyBs4Z/OpUMnmf8oNvJQc0QxpwySRbi42bwLfdVMMrXZWANg5U5KQGQq1xW6r/hlcqw99tQ==", + "dependencies": { + "Microsoft.Extensions.ApiDescription.Server": "10.0.0", + "Swashbuckle.AspNetCore.Swagger": "10.2.3", + "Swashbuckle.AspNetCore.SwaggerGen": "10.2.3", + "Swashbuckle.AspNetCore.SwaggerUI": "10.2.3" + } + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/linux-arm64": { + "libsodium": { + "type": "Transitive", + "resolved": "1.0.22", + "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" + }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1493,6 +2304,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1508,33 +2334,46 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "SQLitePCLRaw.lib.e_sqlite3": { "type": "CentralTransitive", "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/linux-x64": { + "libsodium": { + "type": "Transitive", + "resolved": "1.0.22", + "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" + }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1555,6 +2394,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1570,33 +2424,46 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "SQLitePCLRaw.lib.e_sqlite3": { "type": "CentralTransitive", "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/osx-arm64": { + "libsodium": { + "type": "Transitive", + "resolved": "1.0.22", + "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" + }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1617,6 +2484,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1632,33 +2514,46 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "SQLitePCLRaw.lib.e_sqlite3": { "type": "CentralTransitive", "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/win-x64": { + "libsodium": { + "type": "Transitive", + "resolved": "1.0.22", + "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" + }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1679,6 +2574,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1694,14 +2604,23 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "SQLitePCLRaw.lib.e_sqlite3": { "type": "CentralTransitive", "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } } } From 1482e1a230af0070e65a3703fd36e3d27e96b455 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20H=C3=BCgel?= Date: Thu, 1 Oct 2026 13:50:46 +0200 Subject: [PATCH 13/25] refactor: migrate Tokens module --- .../AdminApi/src/AdminApi/AdminApi.csproj | 1 - .../AdminApi/Controllers/TokensController.cs | 8 +- Applications/AdminApi/src/AdminApi/Dockerfile | 2 +- Applications/AdminApi/src/AdminApi/Program.cs | 3 +- .../AdminApi/src/AdminApi/packages.lock.json | 15 +- .../packages.lock.json | 16 +- .../AdminCli/src/AdminCli/AdminCli.csproj | 1 - .../ResetAccessFailedCountOfTokenCommand.cs | 2 +- Applications/AdminCli/src/AdminCli/Dockerfile | 2 +- Applications/AdminCli/src/AdminCli/Program.cs | 3 +- .../AdminCli/src/AdminCli/packages.lock.json | 15 +- .../Controllers/Tokens/TokensController.cs | 114 -- Applications/ConsumerApi/src/Program.cs | 6 +- .../ConsumerApi/src/packages.lock.json | 15 +- .../packages.lock.json | 15 +- .../src/DatabaseMigrator/Dockerfile | 2 +- .../src/DatabaseMigrator/packages.lock.json | 11 +- .../DatabaseMigrator.Tests/packages.lock.json | 11 +- .../src/EventHandlerService/Dockerfile | 2 +- .../src/EventHandlerService/Program.cs | 3 +- .../EventHandlerService/packages.lock.json | 15 +- .../packages.lock.json | 15 +- .../Housekeeper/src/Housekeeper/Dockerfile | 2 +- .../Housekeeper/src/Housekeeper/Executor.cs | 2 +- .../Housekeeper/src/Housekeeper/Program.cs | 5 +- .../src/Housekeeper/packages.lock.json | 15 +- .../src/Job.IdentityDeletion/Dockerfile | 2 +- .../Job.IdentityDeletion.csproj | 1 - .../src/Job.IdentityDeletion/Program.cs | 3 +- .../ServicesExtensions.cs | 2 +- .../Job.IdentityDeletion/packages.lock.json | 15 +- .../packages.lock.json | 16 +- .../packages.lock.json | 16 +- .../Backbone.Tests.ArchUnit.csproj | 3 +- .../VerticalSliceArchitecture.cs | 5 +- Backbone.Tests.ArchUnit/packages.lock.json | 40 +- Backbone.slnx | 4 +- .../MinimalApi/Base64QueryValue.cs | 23 + .../MinimalApi/ServiceCollectionExtensions.cs | 3 + .../MinimalApi/Base64QueryValueTests.cs | 33 + .../ITokensRepository.cs | 2 +- .../Tokens.Abstractions.csproj | 6 + .../packages.lock.json | 28 +- .../Tokens.Application.csproj | 14 - .../ExecuteHousekeepingCommand.cs | 5 - .../packages.lock.json | 21 +- .../packages.lock.json | 21 +- .../IServiceCollectionExtensions.cs | 2 +- .../Repository/TokensRepository.cs | 2 +- .../Tokens.Infrastructure.csproj | 4 +- .../Tokens.Infrastructure/packages.lock.json | 17 +- .../ApplicationConfiguration.cs | 2 +- .../ApplicationErrors.cs | 2 +- ...ApplicationServiceCollectionExtensions.cs} | 8 +- .../DeleteIdentity}/IdentityDeleter.cs | 8 +- .../Command.cs} | 2 +- .../Handler.cs | 4 +- .../Validator.cs | 2 +- .../AnonymizeTokensForIdentity/Command.cs} | 2 +- .../AnonymizeTokensForIdentity/Handler.cs | 4 +- .../AnonymizeTokensForIdentity/Validator.cs | 2 +- .../Features/Tokens/CreateToken/Command.cs} | 2 +- .../Features/Tokens/CreateToken/Endpoint.cs | 26 + .../Features/Tokens}/CreateToken/Handler.cs | 4 +- .../Features/Tokens/CreateToken/Response.cs} | 2 +- .../Features/Tokens}/CreateToken/Validator.cs | 2 +- .../Features/Tokens/DeleteToken/Command.cs} | 2 +- .../Features/Tokens/DeleteToken/Endpoint.cs | 27 + .../Features/Tokens}/DeleteToken/Handler.cs | 4 +- .../Features/Tokens}/DeleteToken/Validator.cs | 2 +- .../Tokens/DeleteTokensOfIdentity/Command.cs} | 2 +- .../Tokens}/DeleteTokensOfIdentity/Handler.cs | 4 +- .../DeleteTokensOfIdentity/Validator.cs | 2 +- .../Tokens/ExecuteHousekeeping/Command.cs | 5 + .../Tokens}/ExecuteHousekeeping/Handler.cs | 4 +- .../Features/Tokens/GetToken/Endpoint.cs | 32 + .../Features/Tokens}/GetToken/Handler.cs | 6 +- .../Features/Tokens/GetToken/Query.cs} | 4 +- .../Features/Tokens}/GetToken/Validator.cs | 2 +- .../Features/Tokens/ListTokens/Endpoint.cs | 37 + .../Features/Tokens}/ListTokens/Handler.cs | 6 +- .../Tokens/ListTokens/ListTokensQueryItem.cs | 17 + .../ListTokens/OpenApiOperationFilter.cs | 22 + .../Features/Tokens/ListTokens/Query.cs} | 4 +- .../Features/Tokens}/ListTokens/Validator.cs | 2 +- .../Tokens}/ListTokensByIdentity/Handler.cs | 6 +- .../Tokens/ListTokensByIdentity/Query.cs} | 4 +- .../Tokens}/ListTokensByIdentity/Validator.cs | 2 +- .../ResetAccessFailedCountOfToken/Command.cs} | 2 +- .../ResetAccessFailedCountOfToken/Handler.cs | 4 +- .../Validator.cs | 2 +- .../Tokens}/Shared/ListTokensResponse.cs | 4 +- .../Features/Tokens/Shared}/TokenDTO.cs | 2 +- .../Tokens/UpdateTokenContent/Command.cs} | 2 +- .../Tokens/UpdateTokenContent/Endpoint.cs | 27 + .../Tokens}/UpdateTokenContent/Handler.cs | 4 +- .../Tokens/UpdateTokenContent/Request.cs | 7 + .../Tokens/UpdateTokenContent/Response.cs} | 2 +- .../Tokens}/UpdateTokenContent/Validator.cs | 2 +- .../src/Tokens.Module/Tokens.Module.csproj | 4 +- .../Tokens.Module/TokensEndpointExtensions.cs | 24 + .../Tokens/src/Tokens.Module/TokensModule.cs | 2 - .../src/Tokens.Module/packages.lock.json | 49 +- .../Tests/Identities/IdentityDeleterTests.cs | 6 +- .../Tokens/CreateToken/ValidatorTests.cs | 4 +- .../DeleteTokensOfIdentity/HandlerTests.cs | 6 +- .../Tokens.Module.Tests.csproj} | 2 +- .../packages.lock.json | 1148 +++++++++++++++-- 108 files changed, 1577 insertions(+), 583 deletions(-) delete mode 100644 Applications/ConsumerApi/src/Controllers/Tokens/TokensController.cs create mode 100644 BuildingBlocks/src/BuildingBlocks.API/MinimalApi/Base64QueryValue.cs create mode 100644 BuildingBlocks/test/BuildingBlocks.API.Tests/MinimalApi/Base64QueryValueTests.cs rename Modules/Tokens/src/{Tokens.Application/Infrastructure/Persistence/Repository => Tokens.Abstractions}/ITokensRepository.cs (94%) create mode 100644 Modules/Tokens/src/Tokens.Abstractions/Tokens.Abstractions.csproj rename Modules/Tokens/src/{Tokens.Application => Tokens.Abstractions}/packages.lock.json (99%) delete mode 100644 Modules/Tokens/src/Tokens.Application/Tokens.Application.csproj delete mode 100644 Modules/Tokens/src/Tokens.Application/Tokens/Commands/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs rename Modules/Tokens/src/{Tokens.Application => Tokens.Module}/ApplicationConfiguration.cs (87%) rename Modules/Tokens/src/{Tokens.Application => Tokens.Module}/ApplicationErrors.cs (93%) rename Modules/Tokens/src/{Tokens.Application/Extensions/IServiceCollectionExtensions.cs => Tokens.Module/ApplicationServiceCollectionExtensions.cs} (65%) rename Modules/Tokens/src/{Tokens.Application/Identities => Tokens.Module/Features/Identities/DeleteIdentity}/IdentityDeleter.cs (74%) rename Modules/Tokens/src/{Tokens.Application/Tokens/Commands/AnonymizeTokenAllocationsOfIdentity/AnonymizeTokenAllocationsOfIdentityCommand.cs => Tokens.Module/Features/Tokens/AnonymizeTokenAllocationsOfIdentity/Command.cs} (60%) rename Modules/Tokens/src/{Tokens.Application/Tokens/Commands => Tokens.Module/Features/Tokens}/AnonymizeTokenAllocationsOfIdentity/Handler.cs (86%) rename Modules/Tokens/src/{Tokens.Application/Tokens/Commands => Tokens.Module/Features/Tokens}/AnonymizeTokenAllocationsOfIdentity/Validator.cs (79%) rename Modules/Tokens/src/{Tokens.Application/Tokens/Commands/AnonymizeTokensForIdentity/AnonymizeTokensForIdentityCommand.cs => Tokens.Module/Features/Tokens/AnonymizeTokensForIdentity/Command.cs} (60%) rename Modules/Tokens/src/{Tokens.Application/Tokens/Commands => Tokens.Module/Features/Tokens}/AnonymizeTokensForIdentity/Handler.cs (86%) rename Modules/Tokens/src/{Tokens.Application/Tokens/Commands => Tokens.Module/Features/Tokens}/AnonymizeTokensForIdentity/Validator.cs (80%) rename Modules/Tokens/src/{Tokens.Application/Tokens/Commands/CreateToken/CreateTokenCommand.cs => Tokens.Module/Features/Tokens/CreateToken/Command.cs} (82%) create mode 100644 Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Endpoint.cs rename Modules/Tokens/src/{Tokens.Application/Tokens/Commands => Tokens.Module/Features/Tokens}/CreateToken/Handler.cs (87%) rename Modules/Tokens/src/{Tokens.Application/Tokens/Commands/CreateToken/CreateTokenResponse.cs => Tokens.Module/Features/Tokens/CreateToken/Response.cs} (78%) rename Modules/Tokens/src/{Tokens.Application/Tokens/Commands => Tokens.Module/Features/Tokens}/CreateToken/Validator.cs (95%) rename Modules/Tokens/src/{Tokens.Application/Tokens/Commands/DeleteToken/DeleteTokenCommand.cs => Tokens.Module/Features/Tokens/DeleteToken/Command.cs} (59%) create mode 100644 Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Endpoint.cs rename Modules/Tokens/src/{Tokens.Application/Tokens/Commands => Tokens.Module/Features/Tokens}/DeleteToken/Handler.cs (86%) rename Modules/Tokens/src/{Tokens.Application/Tokens/Commands => Tokens.Module/Features/Tokens}/DeleteToken/Validator.cs (80%) rename Modules/Tokens/src/{Tokens.Application/Tokens/Commands/DeleteTokensOfIdentity/DeleteTokensOfIdentityCommand.cs => Tokens.Module/Features/Tokens/DeleteTokensOfIdentity/Command.cs} (61%) rename Modules/Tokens/src/{Tokens.Application/Tokens/Commands => Tokens.Module/Features/Tokens}/DeleteTokensOfIdentity/Handler.cs (75%) rename Modules/Tokens/src/{Tokens.Application/Tokens/Commands => Tokens.Module/Features/Tokens}/DeleteTokensOfIdentity/Validator.cs (80%) create mode 100644 Modules/Tokens/src/Tokens.Module/Features/Tokens/ExecuteHousekeeping/Command.cs rename Modules/Tokens/src/{Tokens.Application/Tokens/Commands => Tokens.Module/Features/Tokens}/ExecuteHousekeeping/Handler.cs (82%) create mode 100644 Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Endpoint.cs rename Modules/Tokens/src/{Tokens.Application/Tokens/Queries => Tokens.Module/Features/Tokens}/GetToken/Handler.cs (91%) rename Modules/Tokens/src/{Tokens.Application/Tokens/Queries/GetToken/GetTokenQuery.cs => Tokens.Module/Features/Tokens/GetToken/Query.cs} (55%) rename Modules/Tokens/src/{Tokens.Application/Tokens/Queries => Tokens.Module/Features/Tokens}/GetToken/Validator.cs (86%) create mode 100644 Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Endpoint.cs rename Modules/Tokens/src/{Tokens.Application/Tokens/Queries => Tokens.Module/Features/Tokens}/ListTokens/Handler.cs (81%) create mode 100644 Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/ListTokensQueryItem.cs create mode 100644 Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/OpenApiOperationFilter.cs rename Modules/Tokens/src/{Tokens.Application/Tokens/Queries/ListTokens/ListTokensQuery.cs => Tokens.Module/Features/Tokens/ListTokens/Query.cs} (64%) rename Modules/Tokens/src/{Tokens.Application/Tokens/Queries => Tokens.Module/Features/Tokens}/ListTokens/Validator.cs (93%) rename Modules/Tokens/src/{Tokens.Application/Tokens/Queries => Tokens.Module/Features/Tokens}/ListTokensByIdentity/Handler.cs (72%) rename Modules/Tokens/src/{Tokens.Application/Tokens/Queries/ListTokensByIdentity/ListTokensByIdentityQuery.cs => Tokens.Module/Features/Tokens/ListTokensByIdentity/Query.cs} (57%) rename Modules/Tokens/src/{Tokens.Application/Tokens/Queries => Tokens.Module/Features/Tokens}/ListTokensByIdentity/Validator.cs (89%) rename Modules/Tokens/src/{Tokens.Application/Tokens/Commands/ResetAccessFailedCountOfToken/ResetAccessFailedCountOfTokenCommand.cs => Tokens.Module/Features/Tokens/ResetAccessFailedCountOfToken/Command.cs} (59%) rename Modules/Tokens/src/{Tokens.Application/Tokens/Commands => Tokens.Module/Features/Tokens}/ResetAccessFailedCountOfToken/Handler.cs (81%) rename Modules/Tokens/src/{Tokens.Application/Tokens/Commands => Tokens.Module/Features/Tokens}/ResetAccessFailedCountOfToken/Validator.cs (78%) rename Modules/Tokens/src/{Tokens.Application/Tokens/Queries => Tokens.Module/Features/Tokens}/Shared/ListTokensResponse.cs (79%) rename Modules/Tokens/src/{Tokens.Application/Tokens/DTOs => Tokens.Module/Features/Tokens/Shared}/TokenDTO.cs (92%) rename Modules/Tokens/src/{Tokens.Application/Tokens/Commands/UpdateTokenContent/UpdateTokenContentCommand.cs => Tokens.Module/Features/Tokens/UpdateTokenContent/Command.cs} (75%) create mode 100644 Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Endpoint.cs rename Modules/Tokens/src/{Tokens.Application/Tokens/Commands => Tokens.Module/Features/Tokens}/UpdateTokenContent/Handler.cs (93%) create mode 100644 Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Request.cs rename Modules/Tokens/src/{Tokens.Application/Tokens/Commands/UpdateTokenContent/UpdateTokenContentResponse.cs => Tokens.Module/Features/Tokens/UpdateTokenContent/Response.cs} (90%) rename Modules/Tokens/src/{Tokens.Application/Tokens/Commands => Tokens.Module/Features/Tokens}/UpdateTokenContent/Validator.cs (87%) create mode 100644 Modules/Tokens/src/Tokens.Module/TokensEndpointExtensions.cs rename Modules/Tokens/test/{Tokens.Application.Tests => Tokens.Module.Tests}/Tests/Identities/IdentityDeleterTests.cs (86%) rename Modules/Tokens/test/{Tokens.Application.Tests => Tokens.Module.Tests}/Tests/Tokens/CreateToken/ValidatorTests.cs (97%) rename Modules/Tokens/test/{Tokens.Application.Tests => Tokens.Module.Tests}/Tests/Tokens/DeleteTokensOfIdentity/HandlerTests.cs (75%) rename Modules/Tokens/test/{Tokens.Application.Tests/Tokens.Application.Tests.csproj => Tokens.Module.Tests/Tokens.Module.Tests.csproj} (88%) rename Modules/Tokens/test/{Tokens.Application.Tests => Tokens.Module.Tests}/packages.lock.json (58%) diff --git a/Applications/AdminApi/src/AdminApi/AdminApi.csproj b/Applications/AdminApi/src/AdminApi/AdminApi.csproj index 3ce3012f32..ba47d9c213 100644 --- a/Applications/AdminApi/src/AdminApi/AdminApi.csproj +++ b/Applications/AdminApi/src/AdminApi/AdminApi.csproj @@ -34,7 +34,6 @@ - diff --git a/Applications/AdminApi/src/AdminApi/Controllers/TokensController.cs b/Applications/AdminApi/src/AdminApi/Controllers/TokensController.cs index ada32af782..bb59d645e8 100644 --- a/Applications/AdminApi/src/AdminApi/Controllers/TokensController.cs +++ b/Applications/AdminApi/src/AdminApi/Controllers/TokensController.cs @@ -4,10 +4,10 @@ using Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.Modules.Tokens.Application; -using Backbone.Modules.Tokens.Application.Tokens.Commands.ResetAccessFailedCountOfToken; -using Backbone.Modules.Tokens.Application.Tokens.Queries.ListTokensByIdentity; -using Backbone.Modules.Tokens.Application.Tokens.Queries.Shared; +using Backbone.Modules.Tokens.Module; +using Backbone.Modules.Tokens.Module.Features.Tokens.ResetAccessFailedCountOfToken; +using Backbone.Modules.Tokens.Module.Features.Tokens.ListTokensByIdentity; +using Backbone.Modules.Tokens.Module.Features.Tokens.Shared; using MediatR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; diff --git a/Applications/AdminApi/src/AdminApi/Dockerfile b/Applications/AdminApi/src/AdminApi/Dockerfile index 6c8f577954..e9a894a3f9 100644 --- a/Applications/AdminApi/src/AdminApi/Dockerfile +++ b/Applications/AdminApi/src/AdminApi/Dockerfile @@ -63,7 +63,7 @@ COPY ["Modules/Quotas/src/Quotas.Module/Quotas.Module.csproj", "Modules/Quotas/s COPY ["Modules/Quotas/src/Quotas.Infrastructure.Database.Postgres/Quotas.Infrastructure.Database.Postgres.csproj", "Modules/Quotas/src/Quotas.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Quotas/src/Quotas.Infrastructure.Database.Postgres/"] COPY ["Modules/Quotas/src/Quotas.Infrastructure.Database.SqlServer/Quotas.Infrastructure.Database.SqlServer.csproj", "Modules/Quotas/src/Quotas.Infrastructure.Database.SqlServer/packages.lock.json*", "Modules/Quotas/src/Quotas.Infrastructure.Database.SqlServer/"] -COPY ["Modules/Tokens/src/Tokens.Application/Tokens.Application.csproj", "Modules/Tokens/src/Tokens.Application/packages.lock.json*", "Modules/Tokens/src/Tokens.Application/"] +COPY ["Modules/Tokens/src/Tokens.Abstractions/Tokens.Abstractions.csproj", "Modules/Tokens/src/Tokens.Abstractions/packages.lock.json*", "Modules/Tokens/src/Tokens.Abstractions/"] COPY ["Modules/Tokens/src/Tokens.Domain/Tokens.Domain.csproj", "Modules/Tokens/src/Tokens.Domain/packages.lock.json*", "Modules/Tokens/src/Tokens.Domain/"] COPY ["Modules/Tokens/src/Tokens.Infrastructure/Tokens.Infrastructure.csproj", "Modules/Tokens/src/Tokens.Infrastructure/packages.lock.json*", "Modules/Tokens/src/Tokens.Infrastructure/"] COPY ["Modules/Tokens/src/Tokens.Module/Tokens.Module.csproj", "Modules/Tokens/src/Tokens.Module/packages.lock.json*", "Modules/Tokens/src/Tokens.Module/"] diff --git a/Applications/AdminApi/src/AdminApi/Program.cs b/Applications/AdminApi/src/AdminApi/Program.cs index b6d924ae57..a3e2fc844a 100644 --- a/Applications/AdminApi/src/AdminApi/Program.cs +++ b/Applications/AdminApi/src/AdminApi/Program.cs @@ -16,7 +16,6 @@ using Backbone.Modules.Devices.Infrastructure.Persistence.Database; using Backbone.Modules.Devices.Module; using Backbone.Modules.Quotas.Module; -using Backbone.Modules.Tokens.Application; using Backbone.Modules.Tokens.Module; using Backbone.Tooling.Extensions; using Microsoft.AspNetCore.Diagnostics.HealthChecks; @@ -115,7 +114,7 @@ static void ConfigureServices(IServiceCollection services, IConfiguration config .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) - .AddModule(configuration); + .AddModule(configuration); services .AddOpenIddict() diff --git a/Applications/AdminApi/src/AdminApi/packages.lock.json b/Applications/AdminApi/src/AdminApi/packages.lock.json index 63b9ac6999..032f65a763 100644 --- a/Applications/AdminApi/src/AdminApi/packages.lock.json +++ b/Applications/AdminApi/src/AdminApi/packages.lock.json @@ -1376,14 +1376,11 @@ "Backbone.BuildingBlocks.Domain": "[1.0.0, )" } }, - "Backbone.Modules.Tokens.Application": { + "Backbone.Modules.Tokens.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Tokens.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Tokens.Domain": "[1.0.0, )" } }, "Backbone.Modules.Tokens.Contracts": { @@ -1403,9 +1400,9 @@ "Backbone.Modules.Tokens.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", + "Backbone.Modules.Tokens.Abstractions": "[1.0.0, )", "Backbone.Modules.Tokens.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1432,11 +1429,13 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", + "Backbone.Modules.Tokens.Abstractions": "[1.0.0, )", "Backbone.Modules.Tokens.Domain": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "Polly": "[8.7.0, 8.7.0]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/AdminApi/test/AdminApi.Tests.Integration/packages.lock.json b/Applications/AdminApi/test/AdminApi.Tests.Integration/packages.lock.json index b7e52c39a8..140e0ccb02 100644 --- a/Applications/AdminApi/test/AdminApi.Tests.Integration/packages.lock.json +++ b/Applications/AdminApi/test/AdminApi.Tests.Integration/packages.lock.json @@ -1563,7 +1563,6 @@ "Backbone.Modules.Quotas.Application": "[1.0.0, )", "Backbone.Modules.Quotas.Infrastructure": "[1.0.0, )", "Backbone.Modules.Quotas.Module": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure": "[1.0.0, )", "Backbone.Modules.Tokens.Module": "[1.0.0, )", "DotNetDiag.HealthChecks.NpgSql": "[10.0.10, 10.0.10]", @@ -2016,14 +2015,11 @@ "Backbone.BuildingBlocks.Domain": "[1.0.0, )" } }, - "Backbone.Modules.Tokens.Application": { + "Backbone.Modules.Tokens.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Tokens.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Tokens.Domain": "[1.0.0, )" } }, "Backbone.Modules.Tokens.Contracts": { @@ -2043,9 +2039,9 @@ "Backbone.Modules.Tokens.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", + "Backbone.Modules.Tokens.Abstractions": "[1.0.0, )", "Backbone.Modules.Tokens.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -2072,11 +2068,13 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", + "Backbone.Modules.Tokens.Abstractions": "[1.0.0, )", "Backbone.Modules.Tokens.Domain": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "Polly": "[8.7.0, 8.7.0]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/AdminCli/src/AdminCli/AdminCli.csproj b/Applications/AdminCli/src/AdminCli/AdminCli.csproj index 779ec5e63c..f3d04df7b4 100644 --- a/Applications/AdminCli/src/AdminCli/AdminCli.csproj +++ b/Applications/AdminCli/src/AdminCli/AdminCli.csproj @@ -19,7 +19,6 @@ - diff --git a/Applications/AdminCli/src/AdminCli/Commands/Tokens/ResetAccessFailedCountOfTokenCommand.cs b/Applications/AdminCli/src/AdminCli/Commands/Tokens/ResetAccessFailedCountOfTokenCommand.cs index bc0a86bca5..c64d2fecd6 100644 --- a/Applications/AdminCli/src/AdminCli/Commands/Tokens/ResetAccessFailedCountOfTokenCommand.cs +++ b/Applications/AdminCli/src/AdminCli/Commands/Tokens/ResetAccessFailedCountOfTokenCommand.cs @@ -26,7 +26,7 @@ public ResetAccessFailedCountOfTokenCommand(IMediator mediator) : base(mediator, private async Task ResetAccessFailedCount(string tokenId) { - await _mediator.Send(new Modules.Tokens.Application.Tokens.Commands.ResetAccessFailedCountOfToken.ResetAccessFailedCountOfTokenCommand { TokenId = tokenId }, CancellationToken.None); + await _mediator.Send(new Modules.Tokens.Module.Features.Tokens.ResetAccessFailedCountOfToken.ResetAccessFailedCountOfTokenCommand { TokenId = tokenId }, CancellationToken.None); Console.WriteLine(@"Access failed count has been reset."); } diff --git a/Applications/AdminCli/src/AdminCli/Dockerfile b/Applications/AdminCli/src/AdminCli/Dockerfile index ee238411b1..1b48c7e6e1 100644 --- a/Applications/AdminCli/src/AdminCli/Dockerfile +++ b/Applications/AdminCli/src/AdminCli/Dockerfile @@ -47,7 +47,7 @@ COPY ["Modules/Devices/src/Devices.Module/Devices.Module.csproj", "Modules/Devic COPY ["Modules/Devices/src/Devices.Infrastructure.Database.Postgres/Devices.Infrastructure.Database.Postgres.csproj", "Modules/Devices/src/Devices.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Devices/src/Devices.Infrastructure.Database.Postgres/"] COPY ["Modules/Devices/src/Devices.Infrastructure.Database.SqlServer/Devices.Infrastructure.Database.SqlServer.csproj", "Modules/Devices/src/Devices.Infrastructure.Database.SqlServer/packages.lock.json*", "Modules/Devices/src/Devices.Infrastructure.Database.SqlServer/"] -COPY ["Modules/Tokens/src/Tokens.Application/Tokens.Application.csproj", "Modules/Tokens/src/Tokens.Application/packages.lock.json*", "Modules/Tokens/src/Tokens.Application/"] +COPY ["Modules/Tokens/src/Tokens.Abstractions/Tokens.Abstractions.csproj", "Modules/Tokens/src/Tokens.Abstractions/packages.lock.json*", "Modules/Tokens/src/Tokens.Abstractions/"] COPY ["Modules/Tokens/src/Tokens.Infrastructure/Tokens.Infrastructure.csproj", "Modules/Tokens/src/Tokens.Infrastructure/packages.lock.json*", "Modules/Tokens/src/Tokens.Infrastructure/"] COPY ["Modules/Tokens/src/Tokens.Domain/Tokens.Domain.csproj", "Modules/Tokens/src/Tokens.Domain/packages.lock.json*", "Modules/Tokens/src/Tokens.Domain/"] COPY ["Modules/Tokens/src/Tokens.Module/Tokens.Module.csproj", "Modules/Tokens/src/Tokens.Module/packages.lock.json*", "Modules/Tokens/src/Tokens.Module/"] diff --git a/Applications/AdminCli/src/AdminCli/Program.cs b/Applications/AdminCli/src/AdminCli/Program.cs index f1f7500b98..8103fecb17 100644 --- a/Applications/AdminCli/src/AdminCli/Program.cs +++ b/Applications/AdminCli/src/AdminCli/Program.cs @@ -9,7 +9,6 @@ using Backbone.Modules.Devices.Infrastructure.OpenIddict; using Backbone.Modules.Devices.Infrastructure.Persistence.Database; using Backbone.Modules.Devices.Module; -using Backbone.Modules.Tokens.Application; using Backbone.Modules.Tokens.Module; using Microsoft.AspNetCore.Identity; using Microsoft.Extensions.Configuration; @@ -70,7 +69,7 @@ private static IServiceProvider BuildServiceProvider(IConfiguration configuratio services .AddModule(configuration) .AddModule(configuration) - .AddModule(configuration); + .AddModule(configuration); #pragma warning disable ASP0000 // We retrieve the Configuration via IOptions here so that it is validated var parsedConfiguration = services.BuildServiceProvider().GetRequiredService>().Value; diff --git a/Applications/AdminCli/src/AdminCli/packages.lock.json b/Applications/AdminCli/src/AdminCli/packages.lock.json index 825ef38e30..a8b8f6e8cd 100644 --- a/Applications/AdminCli/src/AdminCli/packages.lock.json +++ b/Applications/AdminCli/src/AdminCli/packages.lock.json @@ -1384,14 +1384,11 @@ "Backbone.BuildingBlocks.Domain": "[1.0.0, )" } }, - "Backbone.Modules.Tokens.Application": { + "Backbone.Modules.Tokens.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Tokens.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Tokens.Domain": "[1.0.0, )" } }, "Backbone.Modules.Tokens.Contracts": { @@ -1411,9 +1408,9 @@ "Backbone.Modules.Tokens.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", + "Backbone.Modules.Tokens.Abstractions": "[1.0.0, )", "Backbone.Modules.Tokens.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1440,11 +1437,13 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", + "Backbone.Modules.Tokens.Abstractions": "[1.0.0, )", "Backbone.Modules.Tokens.Domain": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "Polly": "[8.7.0, 8.7.0]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/ConsumerApi/src/Controllers/Tokens/TokensController.cs b/Applications/ConsumerApi/src/Controllers/Tokens/TokensController.cs deleted file mode 100644 index 78db0c05a7..0000000000 --- a/Applications/ConsumerApi/src/Controllers/Tokens/TokensController.cs +++ /dev/null @@ -1,114 +0,0 @@ -using Backbone.BuildingBlocks.API; -using Backbone.BuildingBlocks.API.Mvc; -using Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; -using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.ConsumerApi.Versions; -using Backbone.Modules.Tokens.Application; -using Backbone.Modules.Tokens.Application.Tokens.Commands.CreateToken; -using Backbone.Modules.Tokens.Application.Tokens.Commands.DeleteToken; -using Backbone.Modules.Tokens.Application.Tokens.Commands.UpdateTokenContent; -using Backbone.Modules.Tokens.Application.Tokens.DTOs; -using Backbone.Modules.Tokens.Application.Tokens.Queries.GetToken; -using Backbone.Modules.Tokens.Application.Tokens.Queries.ListTokens; -using MediatR; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Options; -using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; - -namespace Backbone.ConsumerApi.Controllers.Tokens; - -[V2] -[Route("api/v{v:apiVersion}/[controller]")] -[Authorize("OpenIddict.Validation.AspNetCore")] -public class TokensController : ApiControllerBase -{ - private readonly ApplicationConfiguration _configuration; - - public TokensController(IMediator mediator, IOptions options) : base(mediator) - { - _configuration = options.Value; - } - - [HttpPost] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status201Created)] - [AllowAnonymous] - public async Task CreateToken(CreateTokenCommand request, CancellationToken cancellationToken) - { - var response = await _mediator.Send(request, cancellationToken); - return CreatedAtAction(nameof(GetToken), new { id = response.Id }, response); - } - - [HttpGet("{id}")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status404NotFound)] - [AllowAnonymous] - public async Task GetToken([FromRoute] string id, [FromQuery] byte[]? password, CancellationToken cancellationToken) - { - var response = await _mediator.Send(new GetTokenQuery { Id = id, Password = password }, cancellationToken); - return Ok(response); - } - - [HttpGet] - [ProducesResponseType(typeof(PagedHttpResponseEnvelope), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - public async Task ListTokens([FromQuery] PaginationFilter paginationFilter, [FromQuery] ListTokensQueryItem[]? tokens, [FromQuery] List ids, - CancellationToken cancellationToken) - { - // We keep this code for backwards compatibility reasons. In a few months the `ids` - // parameter will become required again, and the fallback to `tokens` will be removed. - ids = ids.Count != 0 ? ids : tokens?.Select(t => t.Id).ToList() ?? []; - - var request = new ListTokensQuery { PaginationFilter = paginationFilter, Ids = ids }; - - paginationFilter.PageSize ??= _configuration.Pagination.DefaultPageSize; - - if (paginationFilter.PageSize > _configuration.Pagination.MaxPageSize) - throw new ApplicationException(GenericApplicationErrors.Validation.InvalidPageSize(_configuration.Pagination.MaxPageSize)); - - var response = await _mediator.Send(request, cancellationToken); - - return Paged(response); - } - - [HttpDelete("{id}")] - [ProducesResponseType(StatusCodes.Status204NoContent)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status404NotFound)] - public async Task DeleteToken([FromRoute] string id, CancellationToken cancellationToken) - { - await _mediator.Send(new DeleteTokenCommand { Id = id }, cancellationToken); - return NoContent(); - } - - [HttpPost("{id}/UpdateContent")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status404NotFound)] - public async Task UpdateTokenContent([FromRoute] string id, [FromBody] UpdateTokenContentRequest request, CancellationToken cancellationToken) - { - var command = new UpdateTokenContentCommand - { - TokenId = id, - NewContent = request.NewContent, - Password = request.Password - }; - - var response = await _mediator.Send(command, cancellationToken); - - return Ok(response); - } -} - -public class UpdateTokenContentRequest -{ - public required byte[] NewContent { get; init; } - public byte[]? Password { get; init; } -} - -public class ListTokensQueryItem -{ - public required string Id { get; set; } -} diff --git a/Applications/ConsumerApi/src/Program.cs b/Applications/ConsumerApi/src/Program.cs index 7cf7f8e1e8..fd18e82f93 100644 --- a/Applications/ConsumerApi/src/Program.cs +++ b/Applications/ConsumerApi/src/Program.cs @@ -28,9 +28,8 @@ using Backbone.Modules.Synchronization.Infrastructure.Persistence.Database; using Backbone.Modules.Synchronization.Module; using Backbone.Modules.Tags.Module; -using Backbone.Modules.Tokens.Application; -using Backbone.Modules.Tokens.Infrastructure.Persistence.Database; using Backbone.Modules.Tokens.Module; +using Backbone.Modules.Tokens.Infrastructure.Persistence.Database; using Backbone.Tooling.Extensions; using Microsoft.AspNetCore.Diagnostics.HealthChecks; using Microsoft.AspNetCore.HttpOverrides; @@ -145,7 +144,7 @@ static void ConfigureServices(IServiceCollection services, IConfiguration config .AddModule(configuration) .AddModule(configuration) - .AddModule(configuration); + .AddModule(configuration); #pragma warning disable ASP0000 // We retrieve the BackboneConfiguration via IOptions here so that it is validated var parsedBackboneConfiguration = services.BuildServiceProvider().GetRequiredService>().Value; @@ -218,6 +217,7 @@ static void Configure(WebApplication app, ConsumerApiConfiguration configuration app.MapTagsEndpoints(); app.MapChallengesEndpoints(); app.MapAnnouncementsEndpoints(); + app.MapTokensEndpoints(); app.MapControllers(); app.MapHealthChecks("/health", new HealthCheckOptions { diff --git a/Applications/ConsumerApi/src/packages.lock.json b/Applications/ConsumerApi/src/packages.lock.json index 434fdf5137..ee2cd15e7d 100644 --- a/Applications/ConsumerApi/src/packages.lock.json +++ b/Applications/ConsumerApi/src/packages.lock.json @@ -1594,14 +1594,11 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Tokens.Application": { + "Backbone.Modules.Tokens.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Tokens.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Tokens.Domain": "[1.0.0, )" } }, "Backbone.Modules.Tokens.Contracts": { @@ -1621,9 +1618,9 @@ "Backbone.Modules.Tokens.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", + "Backbone.Modules.Tokens.Abstractions": "[1.0.0, )", "Backbone.Modules.Tokens.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1650,11 +1647,13 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", + "Backbone.Modules.Tokens.Abstractions": "[1.0.0, )", "Backbone.Modules.Tokens.Domain": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "Polly": "[8.7.0, 8.7.0]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/packages.lock.json b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/packages.lock.json index 3e54bac63b..04ed1e0eb7 100644 --- a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/packages.lock.json +++ b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/packages.lock.json @@ -2222,14 +2222,11 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Tokens.Application": { + "Backbone.Modules.Tokens.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Tokens.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Tokens.Domain": "[1.0.0, )" } }, "Backbone.Modules.Tokens.Contracts": { @@ -2249,9 +2246,9 @@ "Backbone.Modules.Tokens.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", + "Backbone.Modules.Tokens.Abstractions": "[1.0.0, )", "Backbone.Modules.Tokens.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -2278,11 +2275,13 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", + "Backbone.Modules.Tokens.Abstractions": "[1.0.0, )", "Backbone.Modules.Tokens.Domain": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "Polly": "[8.7.0, 8.7.0]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/DatabaseMigrator/src/DatabaseMigrator/Dockerfile b/Applications/DatabaseMigrator/src/DatabaseMigrator/Dockerfile index d272732560..bafff204a7 100644 --- a/Applications/DatabaseMigrator/src/DatabaseMigrator/Dockerfile +++ b/Applications/DatabaseMigrator/src/DatabaseMigrator/Dockerfile @@ -88,7 +88,7 @@ COPY ["Modules/Synchronization/src/Synchronization.Infrastructure.Database.Postg COPY ["Modules/Tokens/src/Tokens.Infrastructure.Database.SqlServer/Tokens.Infrastructure.Database.SqlServer.csproj", "Modules/Tokens/src/Tokens.Infrastructure.Database.SqlServer/packages.lock.json*", "Modules/Tokens/src/Tokens.Infrastructure.Database.SqlServer/"] COPY ["Modules/Tokens/src/Tokens.Infrastructure/Tokens.Infrastructure.csproj", "Modules/Tokens/src/Tokens.Infrastructure/packages.lock.json*", "Modules/Tokens/src/Tokens.Infrastructure/"] -COPY ["Modules/Tokens/src/Tokens.Application/Tokens.Application.csproj", "Modules/Tokens/src/Tokens.Application/packages.lock.json*", "Modules/Tokens/src/Tokens.Application/"] +COPY ["Modules/Tokens/src/Tokens.Abstractions/Tokens.Abstractions.csproj", "Modules/Tokens/src/Tokens.Abstractions/packages.lock.json*", "Modules/Tokens/src/Tokens.Abstractions/"] COPY ["Modules/Tokens/src/Tokens.Domain/Tokens.Domain.csproj", "Modules/Tokens/src/Tokens.Domain/packages.lock.json*", "Modules/Tokens/src/Tokens.Domain/"] COPY ["Modules/Tokens/src/Tokens.Infrastructure.Database.Postgres/Tokens.Infrastructure.Database.Postgres.csproj", "Modules/Tokens/src/Tokens.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Tokens/src/Tokens.Infrastructure.Database.Postgres/"] diff --git a/Applications/DatabaseMigrator/src/DatabaseMigrator/packages.lock.json b/Applications/DatabaseMigrator/src/DatabaseMigrator/packages.lock.json index cfc45dbdfa..47e023164c 100644 --- a/Applications/DatabaseMigrator/src/DatabaseMigrator/packages.lock.json +++ b/Applications/DatabaseMigrator/src/DatabaseMigrator/packages.lock.json @@ -1970,14 +1970,11 @@ "Backbone.Modules.Synchronization.Infrastructure": "[1.0.0, )" } }, - "Backbone.Modules.Tokens.Application": { + "Backbone.Modules.Tokens.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Tokens.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Tokens.Domain": "[1.0.0, )" } }, "Backbone.Modules.Tokens.Contracts": { @@ -1997,9 +1994,9 @@ "Backbone.Modules.Tokens.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", + "Backbone.Modules.Tokens.Abstractions": "[1.0.0, )", "Backbone.Modules.Tokens.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", diff --git a/Applications/DatabaseMigrator/test/DatabaseMigrator.Tests/packages.lock.json b/Applications/DatabaseMigrator/test/DatabaseMigrator.Tests/packages.lock.json index 77a9150c3d..06cfd477b4 100644 --- a/Applications/DatabaseMigrator/test/DatabaseMigrator.Tests/packages.lock.json +++ b/Applications/DatabaseMigrator/test/DatabaseMigrator.Tests/packages.lock.json @@ -1977,14 +1977,11 @@ "Backbone.Modules.Synchronization.Infrastructure": "[1.0.0, )" } }, - "Backbone.Modules.Tokens.Application": { + "Backbone.Modules.Tokens.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Tokens.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Tokens.Domain": "[1.0.0, )" } }, "Backbone.Modules.Tokens.Contracts": { @@ -2004,9 +2001,9 @@ "Backbone.Modules.Tokens.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", + "Backbone.Modules.Tokens.Abstractions": "[1.0.0, )", "Backbone.Modules.Tokens.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", diff --git a/Applications/EventHandlerService/src/EventHandlerService/Dockerfile b/Applications/EventHandlerService/src/EventHandlerService/Dockerfile index e816a9db18..74a8d1c253 100644 --- a/Applications/EventHandlerService/src/EventHandlerService/Dockerfile +++ b/Applications/EventHandlerService/src/EventHandlerService/Dockerfile @@ -72,7 +72,7 @@ COPY ["Modules/Synchronization/src/Synchronization.Infrastructure.Database.Postg COPY ["Modules/Synchronization/src/Synchronization.Infrastructure/Synchronization.Infrastructure.csproj", "Modules/Synchronization/src/Synchronization.Infrastructure/packages.lock.json*", "Modules/Synchronization/src/Synchronization.Infrastructure/"] COPY ["Modules/Synchronization/src/Synchronization.Infrastructure.Database.SqlServer/Synchronization.Infrastructure.Database.SqlServer.csproj", "Modules/Synchronization/src/Synchronization.Infrastructure.Database.SqlServer/packages.lock.json*", "Modules/Synchronization/src/Synchronization.Infrastructure.Database.SqlServer/"] COPY ["Modules/Tokens/src/Tokens.Module/Tokens.Module.csproj", "Modules/Tokens/src/Tokens.Module/packages.lock.json*", "Modules/Tokens/src/Tokens.Module/"] -COPY ["Modules/Tokens/src/Tokens.Application/Tokens.Application.csproj", "Modules/Tokens/src/Tokens.Application/packages.lock.json*", "Modules/Tokens/src/Tokens.Application/"] +COPY ["Modules/Tokens/src/Tokens.Abstractions/Tokens.Abstractions.csproj", "Modules/Tokens/src/Tokens.Abstractions/packages.lock.json*", "Modules/Tokens/src/Tokens.Abstractions/"] COPY ["Modules/Tokens/src/Tokens.Domain/Tokens.Domain.csproj", "Modules/Tokens/src/Tokens.Domain/packages.lock.json*", "Modules/Tokens/src/Tokens.Domain/"] COPY ["Modules/Tokens/src/Tokens.Infrastructure.Database.Postgres/Tokens.Infrastructure.Database.Postgres.csproj", "Modules/Tokens/src/Tokens.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Tokens/src/Tokens.Infrastructure.Database.Postgres/"] COPY ["Modules/Tokens/src/Tokens.Infrastructure/Tokens.Infrastructure.csproj", "Modules/Tokens/src/Tokens.Infrastructure/packages.lock.json*", "Modules/Tokens/src/Tokens.Infrastructure/"] diff --git a/Applications/EventHandlerService/src/EventHandlerService/Program.cs b/Applications/EventHandlerService/src/EventHandlerService/Program.cs index 3cfc272d2a..2098393355 100644 --- a/Applications/EventHandlerService/src/EventHandlerService/Program.cs +++ b/Applications/EventHandlerService/src/EventHandlerService/Program.cs @@ -10,7 +10,6 @@ using Backbone.Modules.Quotas.Module; using Backbone.Modules.Relationships.Module; using Backbone.Modules.Synchronization.Module; -using Backbone.Modules.Tokens.Application; using Backbone.Modules.Tokens.Module; using Microsoft.Extensions.Options; using Serilog; @@ -84,7 +83,7 @@ static IHostBuilder CreateHostBuilder(string[] args) Backbone.Modules.Relationships.Infrastructure.InfrastructureConfiguration>(configuration) .AddModule(configuration) - .AddModule(configuration); + .AddModule(configuration); services.AddCustomIdentity(hostContext.HostingEnvironment); diff --git a/Applications/EventHandlerService/src/EventHandlerService/packages.lock.json b/Applications/EventHandlerService/src/EventHandlerService/packages.lock.json index 5749bb7654..0de1ff9237 100644 --- a/Applications/EventHandlerService/src/EventHandlerService/packages.lock.json +++ b/Applications/EventHandlerService/src/EventHandlerService/packages.lock.json @@ -1765,14 +1765,11 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Tokens.Application": { + "Backbone.Modules.Tokens.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Tokens.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Tokens.Domain": "[1.0.0, )" } }, "Backbone.Modules.Tokens.Contracts": { @@ -1792,9 +1789,9 @@ "Backbone.Modules.Tokens.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", + "Backbone.Modules.Tokens.Abstractions": "[1.0.0, )", "Backbone.Modules.Tokens.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1821,11 +1818,13 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", + "Backbone.Modules.Tokens.Abstractions": "[1.0.0, )", "Backbone.Modules.Tokens.Domain": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "Polly": "[8.7.0, 8.7.0]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/EventHandlerService/test/EventHandlerService.Tests/packages.lock.json b/Applications/EventHandlerService/test/EventHandlerService.Tests/packages.lock.json index 7b54a652b2..3d1ef4edcc 100644 --- a/Applications/EventHandlerService/test/EventHandlerService.Tests/packages.lock.json +++ b/Applications/EventHandlerService/test/EventHandlerService.Tests/packages.lock.json @@ -1908,14 +1908,11 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Tokens.Application": { + "Backbone.Modules.Tokens.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Tokens.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Tokens.Domain": "[1.0.0, )" } }, "Backbone.Modules.Tokens.Contracts": { @@ -1935,9 +1932,9 @@ "Backbone.Modules.Tokens.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", + "Backbone.Modules.Tokens.Abstractions": "[1.0.0, )", "Backbone.Modules.Tokens.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1964,11 +1961,13 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", + "Backbone.Modules.Tokens.Abstractions": "[1.0.0, )", "Backbone.Modules.Tokens.Domain": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "Polly": "[8.7.0, 8.7.0]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/Housekeeper/src/Housekeeper/Dockerfile b/Applications/Housekeeper/src/Housekeeper/Dockerfile index bc896a3a80..3bcc77c9f9 100644 --- a/Applications/Housekeeper/src/Housekeeper/Dockerfile +++ b/Applications/Housekeeper/src/Housekeeper/Dockerfile @@ -81,7 +81,7 @@ COPY ["Modules/Synchronization/src/Synchronization.Infrastructure.Database.SqlSe COPY ["Modules/Synchronization/src/Synchronization.Module/Synchronization.Module.csproj", "Modules/Synchronization/src/Synchronization.Module/packages.lock.json*", "Modules/Synchronization/src/Synchronization.Module/"] COPY ["Modules/Tokens/src/Tokens.Infrastructure.Database.Postgres/Tokens.Infrastructure.Database.Postgres.csproj", "Modules/Tokens/src/Tokens.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Tokens/src/Tokens.Infrastructure.Database.Postgres/"] COPY ["Modules/Tokens/src/Tokens.Infrastructure/Tokens.Infrastructure.csproj", "Modules/Tokens/src/Tokens.Infrastructure/packages.lock.json*", "Modules/Tokens/src/Tokens.Infrastructure/"] -COPY ["Modules/Tokens/src/Tokens.Application/Tokens.Application.csproj", "Modules/Tokens/src/Tokens.Application/packages.lock.json*", "Modules/Tokens/src/Tokens.Application/"] +COPY ["Modules/Tokens/src/Tokens.Abstractions/Tokens.Abstractions.csproj", "Modules/Tokens/src/Tokens.Abstractions/packages.lock.json*", "Modules/Tokens/src/Tokens.Abstractions/"] COPY ["Modules/Tokens/src/Tokens.Domain/Tokens.Domain.csproj", "Modules/Tokens/src/Tokens.Domain/packages.lock.json*", "Modules/Tokens/src/Tokens.Domain/"] COPY ["Modules/Tokens/src/Tokens.Infrastructure.Database.SqlServer/Tokens.Infrastructure.Database.SqlServer.csproj", "Modules/Tokens/src/Tokens.Infrastructure.Database.SqlServer/packages.lock.json*", "Modules/Tokens/src/Tokens.Infrastructure.Database.SqlServer/"] COPY ["Modules/Tokens/src/Tokens.Module/Tokens.Module.csproj", "Modules/Tokens/src/Tokens.Module/packages.lock.json*", "Modules/Tokens/src/Tokens.Module/"] diff --git a/Applications/Housekeeper/src/Housekeeper/Executor.cs b/Applications/Housekeeper/src/Housekeeper/Executor.cs index 12f99578e5..c944f29718 100644 --- a/Applications/Housekeeper/src/Housekeeper/Executor.cs +++ b/Applications/Housekeeper/src/Housekeeper/Executor.cs @@ -7,7 +7,7 @@ using ExecuteFilesModuleHousekeepingCommand = Backbone.Modules.Files.Application.Files.Commands.ExecuteHousekeeping.ExecuteHousekeepingCommand; using ExecuteRelationshipsModuleHousekeepingCommand = Backbone.Modules.Relationships.Application.Relationships.Commands.ExecuteHousekeeping.ExecuteHousekeepingCommand; using ExecuteSynchronizationModuleHousekeepingCommand = Backbone.Modules.Synchronization.Application.SyncRuns.Commands.ExecuteHousekeeping.ExecuteHousekeepingCommand; -using ExecuteTokensModuleHousekeepingCommand = Backbone.Modules.Tokens.Application.Tokens.Commands.ExecuteHousekeeping.ExecuteHousekeepingCommand; +using ExecuteTokensModuleHousekeepingCommand = Backbone.Modules.Tokens.Module.Features.Tokens.ExecuteHousekeeping.ExecuteHousekeepingCommand; namespace Backbone.Housekeeper; diff --git a/Applications/Housekeeper/src/Housekeeper/Program.cs b/Applications/Housekeeper/src/Housekeeper/Program.cs index 42a4cf344c..df3964d35a 100644 --- a/Applications/Housekeeper/src/Housekeeper/Program.cs +++ b/Applications/Housekeeper/src/Housekeeper/Program.cs @@ -10,9 +10,8 @@ using Backbone.Modules.Files.Module; using Backbone.Modules.Relationships.Module; using Backbone.Modules.Synchronization.Module; -using Backbone.Modules.Tokens.Application; -using Backbone.Modules.Tokens.Infrastructure; using Backbone.Modules.Tokens.Module; +using Backbone.Modules.Tokens.Infrastructure; using Microsoft.Extensions.Options; using Serilog; using Serilog.Exceptions; @@ -77,7 +76,7 @@ static HostApplicationBuilder CreateHostBuilder(string[] args) Backbone.Modules.Relationships.Infrastructure.InfrastructureConfiguration>(configuration) .AddModule(configuration) - .AddModule(configuration); + .AddModule(configuration); var parsedConfiguration = services.BuildServiceProvider().GetRequiredService>().Value; diff --git a/Applications/Housekeeper/src/Housekeeper/packages.lock.json b/Applications/Housekeeper/src/Housekeeper/packages.lock.json index 4bdc08d21c..3c4e01efa9 100644 --- a/Applications/Housekeeper/src/Housekeeper/packages.lock.json +++ b/Applications/Housekeeper/src/Housekeeper/packages.lock.json @@ -2051,14 +2051,11 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Tokens.Application": { + "Backbone.Modules.Tokens.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Tokens.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Tokens.Domain": "[1.0.0, )" } }, "Backbone.Modules.Tokens.Contracts": { @@ -2078,9 +2075,9 @@ "Backbone.Modules.Tokens.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", + "Backbone.Modules.Tokens.Abstractions": "[1.0.0, )", "Backbone.Modules.Tokens.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -2107,11 +2104,13 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", + "Backbone.Modules.Tokens.Abstractions": "[1.0.0, )", "Backbone.Modules.Tokens.Domain": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "Polly": "[8.7.0, 8.7.0]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Dockerfile b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Dockerfile index 10b1c9107c..8ef0f4b65b 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Dockerfile +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Dockerfile @@ -77,7 +77,7 @@ COPY ["Modules/Synchronization/src/Synchronization.Module/Synchronization.Module COPY ["Modules/Synchronization/src/Synchronization.Infrastructure.Database.Postgres/Synchronization.Infrastructure.Database.Postgres.csproj", "Modules/Synchronization/src/Synchronization.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Synchronization/src/Synchronization.Infrastructure.Database.Postgres/"] COPY ["Modules/Synchronization/src/Synchronization.Infrastructure/Synchronization.Infrastructure.csproj", "Modules/Synchronization/src/Synchronization.Infrastructure/packages.lock.json*", "Modules/Synchronization/src/Synchronization.Infrastructure/"] COPY ["Modules/Synchronization/src/Synchronization.Infrastructure.Database.SqlServer/Synchronization.Infrastructure.Database.SqlServer.csproj", "Modules/Synchronization/src/Synchronization.Infrastructure.Database.SqlServer/packages.lock.json*", "Modules/Synchronization/src/Synchronization.Infrastructure.Database.SqlServer/"] -COPY ["Modules/Tokens/src/Tokens.Application/Tokens.Application.csproj", "Modules/Tokens/src/Tokens.Application/packages.lock.json*", "Modules/Tokens/src/Tokens.Application/"] +COPY ["Modules/Tokens/src/Tokens.Abstractions/Tokens.Abstractions.csproj", "Modules/Tokens/src/Tokens.Abstractions/packages.lock.json*", "Modules/Tokens/src/Tokens.Abstractions/"] COPY ["Modules/Tokens/src/Tokens.Domain/Tokens.Domain.csproj", "Modules/Tokens/src/Tokens.Domain/packages.lock.json*", "Modules/Tokens/src/Tokens.Domain/"] COPY ["Modules/Tokens/src/Tokens.Module/Tokens.Module.csproj", "Modules/Tokens/src/Tokens.Module/packages.lock.json*", "Modules/Tokens/src/Tokens.Module/"] COPY ["Modules/Tokens/src/Tokens.Infrastructure.Database.Postgres/Tokens.Infrastructure.Database.Postgres.csproj", "Modules/Tokens/src/Tokens.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Tokens/src/Tokens.Infrastructure.Database.Postgres/"] diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Job.IdentityDeletion.csproj b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Job.IdentityDeletion.csproj index 5f6992bdf1..3560924e66 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Job.IdentityDeletion.csproj +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Job.IdentityDeletion.csproj @@ -32,7 +32,6 @@ - diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Program.cs b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Program.cs index a1f7e327af..968aaa29e8 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Program.cs +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Program.cs @@ -12,7 +12,6 @@ using Backbone.Modules.Quotas.Module; using Backbone.Modules.Relationships.Module; using Backbone.Modules.Synchronization.Module; -using Backbone.Modules.Tokens.Application; using Backbone.Modules.Tokens.Module; using Microsoft.Extensions.Options; using Serilog; @@ -94,7 +93,7 @@ public static IHostBuilder CreateHostBuilder(string[] args) Modules.Relationships.Infrastructure.InfrastructureConfiguration>(configuration) .AddModule(configuration) - .AddModule(configuration); + .AddModule(configuration); services.AddSingleton(); diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/ServicesExtensions.cs b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/ServicesExtensions.cs index ff58724121..893182d1d7 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/ServicesExtensions.cs +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/ServicesExtensions.cs @@ -14,7 +14,7 @@ public static IServiceCollection RegisterIdentityDeleters(this IServiceCollectio services.AddTransient(); services.AddTransient(); services.AddTransient(); - services.AddTransient(); + services.AddTransient(); return services; } diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/packages.lock.json b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/packages.lock.json index d57b8346e4..510c65be79 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/packages.lock.json +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/packages.lock.json @@ -1805,14 +1805,11 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Tokens.Application": { + "Backbone.Modules.Tokens.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Tokens.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Tokens.Domain": "[1.0.0, )" } }, "Backbone.Modules.Tokens.Contracts": { @@ -1832,9 +1829,9 @@ "Backbone.Modules.Tokens.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", + "Backbone.Modules.Tokens.Abstractions": "[1.0.0, )", "Backbone.Modules.Tokens.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1861,11 +1858,13 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", + "Backbone.Modules.Tokens.Abstractions": "[1.0.0, )", "Backbone.Modules.Tokens.Domain": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "Polly": "[8.7.0, 8.7.0]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests.Integration/packages.lock.json b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests.Integration/packages.lock.json index b816132d5f..575acc0cad 100644 --- a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests.Integration/packages.lock.json +++ b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests.Integration/packages.lock.json @@ -1432,7 +1432,6 @@ "Backbone.Modules.Relationships.Module": "[1.0.0, )", "Backbone.Modules.Synchronization.Application": "[1.0.0, )", "Backbone.Modules.Synchronization.Module": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", "Backbone.Modules.Tokens.Module": "[1.0.0, )", "Backbone.Tooling": "[1.0.0, )", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]", @@ -1964,14 +1963,11 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Tokens.Application": { + "Backbone.Modules.Tokens.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Tokens.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Tokens.Domain": "[1.0.0, )" } }, "Backbone.Modules.Tokens.Contracts": { @@ -1991,9 +1987,9 @@ "Backbone.Modules.Tokens.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", + "Backbone.Modules.Tokens.Abstractions": "[1.0.0, )", "Backbone.Modules.Tokens.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -2020,11 +2016,13 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", + "Backbone.Modules.Tokens.Abstractions": "[1.0.0, )", "Backbone.Modules.Tokens.Domain": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "Polly": "[8.7.0, 8.7.0]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/packages.lock.json b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/packages.lock.json index b816132d5f..575acc0cad 100644 --- a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/packages.lock.json +++ b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/packages.lock.json @@ -1432,7 +1432,6 @@ "Backbone.Modules.Relationships.Module": "[1.0.0, )", "Backbone.Modules.Synchronization.Application": "[1.0.0, )", "Backbone.Modules.Synchronization.Module": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", "Backbone.Modules.Tokens.Module": "[1.0.0, )", "Backbone.Tooling": "[1.0.0, )", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]", @@ -1964,14 +1963,11 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Tokens.Application": { + "Backbone.Modules.Tokens.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Tokens.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Tokens.Domain": "[1.0.0, )" } }, "Backbone.Modules.Tokens.Contracts": { @@ -1991,9 +1987,9 @@ "Backbone.Modules.Tokens.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", + "Backbone.Modules.Tokens.Abstractions": "[1.0.0, )", "Backbone.Modules.Tokens.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -2020,11 +2016,13 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", + "Backbone.Modules.Tokens.Abstractions": "[1.0.0, )", "Backbone.Modules.Tokens.Domain": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "Polly": "[8.7.0, 8.7.0]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Backbone.Tests.ArchUnit/Backbone.Tests.ArchUnit.csproj b/Backbone.Tests.ArchUnit/Backbone.Tests.ArchUnit.csproj index 8095fe82ba..aa66f72188 100644 --- a/Backbone.Tests.ArchUnit/Backbone.Tests.ArchUnit.csproj +++ b/Backbone.Tests.ArchUnit/Backbone.Tests.ArchUnit.csproj @@ -57,7 +57,8 @@ - + + diff --git a/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs b/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs index 5009546951..d422acc7ae 100644 --- a/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs +++ b/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs @@ -11,7 +11,7 @@ namespace Backbone.Backbone.Tests.ArchUnit; public class VerticalSliceArchitecture { - private static readonly string[] MIGRATED_MODULES = ["Messages", "Tags", "Challenges", "Announcements"]; + private static readonly string[] MIGRATED_MODULES = ["Messages", "Tags", "Challenges", "Announcements", "Tokens"]; [Fact] public void DomainsShouldNotDependOnOuterLayers() @@ -42,6 +42,7 @@ public void InfrastructureShouldNotDependOnModulesOrApis() [InlineData("Tags")] [InlineData("Challenges")] [InlineData("Announcements")] + [InlineData("Tokens")] public void UseCasesShouldResideInTheirModule(string module) { var useCases = Classes().That().AreAssignableTo(typeof(IBaseRequest)) @@ -60,6 +61,7 @@ public void UseCasesShouldResideInTheirModule(string module) [InlineData("Tags")] [InlineData("Challenges")] [InlineData("Announcements")] + [InlineData("Tokens")] public void UseCasesShouldNotDependOnAdapters(string module) { Classes().That().Are(UseCases(module)).Should().NotDependOnAnyTypesThat() @@ -74,6 +76,7 @@ public void UseCasesShouldNotDependOnAdapters(string module) [InlineData("Tags")] [InlineData("Challenges")] [InlineData("Announcements")] + [InlineData("Tokens")] public void ModulesShouldOnlyReferenceTheirOwnImplementationAndOtherContracts(string module) { foreach (var assembly in SolutionAssemblies().Where(assembly => assembly.GetName().Name == $"Backbone.Modules.{module}.Module")) diff --git a/Backbone.Tests.ArchUnit/packages.lock.json b/Backbone.Tests.ArchUnit/packages.lock.json index d3bb8f5210..0a20eadffe 100644 --- a/Backbone.Tests.ArchUnit/packages.lock.json +++ b/Backbone.Tests.ArchUnit/packages.lock.json @@ -1733,7 +1733,6 @@ "Backbone.Modules.Relationships.Module": "[1.0.0, )", "Backbone.Modules.Synchronization.Application": "[1.0.0, )", "Backbone.Modules.Synchronization.Module": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", "Backbone.Modules.Tokens.Module": "[1.0.0, )", "Backbone.Tooling": "[1.0.0, )", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]", @@ -2477,26 +2476,11 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Tokens.Application": { + "Backbone.Modules.Tokens.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Tokens.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "Polly": "[8.7.0, 8.7.0]" - } - }, - "Backbone.Modules.Tokens.Application.Tests": { - "type": "Project", - "dependencies": { - "Backbone.Modules.Tokens.Application": "[1.0.0, )", - "Backbone.Modules.Tokens.Infrastructure": "[1.0.0, )", - "Backbone.UnitTestTools": "[1.0.0, )", - "FakeItEasy": "[9.0.1, 9.0.1]", - "GitHubActionsTestLogger": "[3.0.5, 3.0.5]", - "Microsoft.NET.Test.Sdk": "[18.8.1, 18.8.1]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Tokens.Domain": "[1.0.0, )" } }, "Backbone.Modules.Tokens.Contracts": { @@ -2526,9 +2510,9 @@ "Backbone.Modules.Tokens.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", + "Backbone.Modules.Tokens.Abstractions": "[1.0.0, )", "Backbone.Modules.Tokens.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -2555,14 +2539,28 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", + "Backbone.Modules.Tokens.Abstractions": "[1.0.0, )", "Backbone.Modules.Tokens.Domain": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "Polly": "[8.7.0, 8.7.0]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, + "Backbone.Modules.Tokens.Module.Tests": { + "type": "Project", + "dependencies": { + "Backbone.Modules.Tokens.Infrastructure": "[1.0.0, )", + "Backbone.Modules.Tokens.Module": "[1.0.0, )", + "Backbone.UnitTestTools": "[1.0.0, )", + "FakeItEasy": "[9.0.1, 9.0.1]", + "GitHubActionsTestLogger": "[3.0.5, 3.0.5]", + "Microsoft.NET.Test.Sdk": "[18.8.1, 18.8.1]", + "Polly": "[8.7.0, 8.7.0]" + } + }, "Backbone.Tooling": { "type": "Project", "dependencies": { diff --git a/Backbone.slnx b/Backbone.slnx index 075e10513b..f8991159db 100644 --- a/Backbone.slnx +++ b/Backbone.slnx @@ -225,7 +225,7 @@ - + @@ -234,7 +234,7 @@ - + diff --git a/BuildingBlocks/src/BuildingBlocks.API/MinimalApi/Base64QueryValue.cs b/BuildingBlocks/src/BuildingBlocks.API/MinimalApi/Base64QueryValue.cs new file mode 100644 index 0000000000..d6b9aa0148 --- /dev/null +++ b/BuildingBlocks/src/BuildingBlocks.API/MinimalApi/Base64QueryValue.cs @@ -0,0 +1,23 @@ +using Backbone.Tooling; + +namespace Backbone.BuildingBlocks.API.MinimalApi; + +public readonly record struct Base64QueryValue(byte[]? Value) +{ + public static bool TryParse(string? value, out Base64QueryValue result) + { + result = default; + if (string.IsNullOrEmpty(value)) + return true; + + try + { + result = new Base64QueryValue(Base64Helper.Decode(value)); + return true; + } + catch (FormatException) + { + return false; + } + } +} diff --git a/BuildingBlocks/src/BuildingBlocks.API/MinimalApi/ServiceCollectionExtensions.cs b/BuildingBlocks/src/BuildingBlocks.API/MinimalApi/ServiceCollectionExtensions.cs index 11e0ce956d..58d30739aa 100644 --- a/BuildingBlocks/src/BuildingBlocks.API/MinimalApi/ServiceCollectionExtensions.cs +++ b/BuildingBlocks/src/BuildingBlocks.API/MinimalApi/ServiceCollectionExtensions.cs @@ -1,5 +1,7 @@ using Microsoft.AspNetCore.Routing; using Microsoft.Extensions.DependencyInjection; +using Microsoft.OpenApi; +using Swashbuckle.AspNetCore.SwaggerGen; namespace Backbone.BuildingBlocks.API.MinimalApi; @@ -8,6 +10,7 @@ public static class ServiceCollectionExtensions public static IServiceCollection AddMinimalApiErrorHandling(this IServiceCollection services) { services.AddSingleton(); + services.Configure(options => options.MapType(() => new OpenApiSchema { Type = JsonSchemaType.String, Format = "byte" })); services.Configure(options => options.ThrowOnBadRequest = true); return services; diff --git a/BuildingBlocks/test/BuildingBlocks.API.Tests/MinimalApi/Base64QueryValueTests.cs b/BuildingBlocks/test/BuildingBlocks.API.Tests/MinimalApi/Base64QueryValueTests.cs new file mode 100644 index 0000000000..b0edc4ca07 --- /dev/null +++ b/BuildingBlocks/test/BuildingBlocks.API.Tests/MinimalApi/Base64QueryValueTests.cs @@ -0,0 +1,33 @@ +using Backbone.BuildingBlocks.API.MinimalApi; + +namespace Backbone.BuildingBlocks.API.Tests.MinimalApi; + +public class Base64QueryValueTests : AbstractTestsBase +{ + [Theory] + [InlineData("+/8=")] + [InlineData("-_8=")] + [InlineData("-_8")] + public void Standard_and_url_safe_base64_are_decoded(string value) + { + Base64QueryValue.TryParse(value, out var result).ShouldBeTrue(); + result.Value.ShouldBe(new byte[] { 251, 255 }); + } + + [Theory] + [InlineData(null)] + [InlineData("")] + public void Missing_and_empty_values_remain_null(string? value) + { + Base64QueryValue.TryParse(value, out var result).ShouldBeTrue(); + result.Value.ShouldBeNull(); + } + + [Theory] + [InlineData("invalid!")] + [InlineData("a")] + public void Invalid_base64_is_a_binding_failure(string value) + { + Base64QueryValue.TryParse(value, out _).ShouldBeFalse(); + } +} diff --git a/Modules/Tokens/src/Tokens.Application/Infrastructure/Persistence/Repository/ITokensRepository.cs b/Modules/Tokens/src/Tokens.Abstractions/ITokensRepository.cs similarity index 94% rename from Modules/Tokens/src/Tokens.Application/Infrastructure/Persistence/Repository/ITokensRepository.cs rename to Modules/Tokens/src/Tokens.Abstractions/ITokensRepository.cs index 57fb03786b..5a1fce467e 100644 --- a/Modules/Tokens/src/Tokens.Application/Infrastructure/Persistence/Repository/ITokensRepository.cs +++ b/Modules/Tokens/src/Tokens.Abstractions/ITokensRepository.cs @@ -4,7 +4,7 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Tokens.Domain.Entities; -namespace Backbone.Modules.Tokens.Application.Infrastructure.Persistence.Repository; +namespace Backbone.Modules.Tokens.Abstractions; public interface ITokensRepository { diff --git a/Modules/Tokens/src/Tokens.Abstractions/Tokens.Abstractions.csproj b/Modules/Tokens/src/Tokens.Abstractions/Tokens.Abstractions.csproj new file mode 100644 index 0000000000..5d4002718b --- /dev/null +++ b/Modules/Tokens/src/Tokens.Abstractions/Tokens.Abstractions.csproj @@ -0,0 +1,6 @@ + + + + + + diff --git a/Modules/Tokens/src/Tokens.Application/packages.lock.json b/Modules/Tokens/src/Tokens.Abstractions/packages.lock.json similarity index 99% rename from Modules/Tokens/src/Tokens.Application/packages.lock.json rename to Modules/Tokens/src/Tokens.Abstractions/packages.lock.json index 1b4e66e2f2..94fb90700f 100644 --- a/Modules/Tokens/src/Tokens.Application/packages.lock.json +++ b/Modules/Tokens/src/Tokens.Abstractions/packages.lock.json @@ -2,25 +2,6 @@ "version": 2, "dependencies": { "net10.0": { - "FluentValidation.DependencyInjectionExtensions": { - "type": "Direct", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, - "Polly": { - "type": "Direct", - "requested": "[8.7.0, 8.7.0]", - "resolved": "8.7.0", - "contentHash": "0qR4f0OR8FeCAfLWcfwzAM7w6EmpUgwa22PgxKjcL25dEAto7sKpQQXbtxp38vVvK+V3RFkh/TeI7g/iUdoYIQ==", - "dependencies": { - "Polly.Core": "8.7.0" - } - }, "AWSSDK.Core": { "type": "Transitive", "resolved": "4.0.100.9", @@ -1125,6 +1106,15 @@ "resolved": "1.18.0", "contentHash": "Dhzm5oughIY9EWckt2J1yXcEbXpki5WCL2q7prJoYxzH6C7jdkfGtPMTkUVZZ4AhjJKzQnlC+kLSIlmIVwC4Vw==" }, + "Polly": { + "type": "CentralTransitive", + "requested": "[8.7.0, 8.7.0]", + "resolved": "8.7.0", + "contentHash": "0qR4f0OR8FeCAfLWcfwzAM7w6EmpUgwa22PgxKjcL25dEAto7sKpQQXbtxp38vVvK+V3RFkh/TeI7g/iUdoYIQ==", + "dependencies": { + "Polly.Core": "8.7.0" + } + }, "RabbitMQ.Client": { "type": "CentralTransitive", "requested": "[7.2.1, 7.2.1]", diff --git a/Modules/Tokens/src/Tokens.Application/Tokens.Application.csproj b/Modules/Tokens/src/Tokens.Application/Tokens.Application.csproj deleted file mode 100644 index ffd10f1486..0000000000 --- a/Modules/Tokens/src/Tokens.Application/Tokens.Application.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs b/Modules/Tokens/src/Tokens.Application/Tokens/Commands/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs deleted file mode 100644 index aa83f4d61e..0000000000 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs +++ /dev/null @@ -1,5 +0,0 @@ -using MediatR; - -namespace Backbone.Modules.Tokens.Application.Tokens.Commands.ExecuteHousekeeping; - -public class ExecuteHousekeepingCommand : IRequest; diff --git a/Modules/Tokens/src/Tokens.Infrastructure.Database.Postgres/packages.lock.json b/Modules/Tokens/src/Tokens.Infrastructure.Database.Postgres/packages.lock.json index 633b68fc4e..a8ba99807d 100644 --- a/Modules/Tokens/src/Tokens.Infrastructure.Database.Postgres/packages.lock.json +++ b/Modules/Tokens/src/Tokens.Infrastructure.Database.Postgres/packages.lock.json @@ -739,14 +739,11 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Tokens.Application": { + "Backbone.Modules.Tokens.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Tokens.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Tokens.Domain": "[1.0.0, )" } }, "Backbone.Modules.Tokens.Contracts": { @@ -766,9 +763,9 @@ "Backbone.Modules.Tokens.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", + "Backbone.Modules.Tokens.Abstractions": "[1.0.0, )", "Backbone.Modules.Tokens.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -864,16 +861,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", diff --git a/Modules/Tokens/src/Tokens.Infrastructure.Database.SqlServer/packages.lock.json b/Modules/Tokens/src/Tokens.Infrastructure.Database.SqlServer/packages.lock.json index 633b68fc4e..a8ba99807d 100644 --- a/Modules/Tokens/src/Tokens.Infrastructure.Database.SqlServer/packages.lock.json +++ b/Modules/Tokens/src/Tokens.Infrastructure.Database.SqlServer/packages.lock.json @@ -739,14 +739,11 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Tokens.Application": { + "Backbone.Modules.Tokens.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Tokens.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Tokens.Domain": "[1.0.0, )" } }, "Backbone.Modules.Tokens.Contracts": { @@ -766,9 +763,9 @@ "Backbone.Modules.Tokens.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", + "Backbone.Modules.Tokens.Abstractions": "[1.0.0, )", "Backbone.Modules.Tokens.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -864,16 +861,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", diff --git a/Modules/Tokens/src/Tokens.Infrastructure/Persistence/Repository/IServiceCollectionExtensions.cs b/Modules/Tokens/src/Tokens.Infrastructure/Persistence/Repository/IServiceCollectionExtensions.cs index 1b536261b2..7da1a32e7f 100644 --- a/Modules/Tokens/src/Tokens.Infrastructure/Persistence/Repository/IServiceCollectionExtensions.cs +++ b/Modules/Tokens/src/Tokens.Infrastructure/Persistence/Repository/IServiceCollectionExtensions.cs @@ -1,4 +1,4 @@ -using Backbone.Modules.Tokens.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Tokens.Abstractions; using Microsoft.Extensions.DependencyInjection; namespace Backbone.Modules.Tokens.Infrastructure.Persistence.Repository; diff --git a/Modules/Tokens/src/Tokens.Infrastructure/Persistence/Repository/TokensRepository.cs b/Modules/Tokens/src/Tokens.Infrastructure/Persistence/Repository/TokensRepository.cs index 8baf6da957..9dad6dedc8 100644 --- a/Modules/Tokens/src/Tokens.Infrastructure/Persistence/Repository/TokensRepository.cs +++ b/Modules/Tokens/src/Tokens.Infrastructure/Persistence/Repository/TokensRepository.cs @@ -3,7 +3,7 @@ using Backbone.BuildingBlocks.Application.Extensions; using Backbone.BuildingBlocks.Application.Pagination; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Tokens.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Tokens.Abstractions; using Backbone.Modules.Tokens.Domain.Entities; using Backbone.Modules.Tokens.Infrastructure.Persistence.Database; using Backbone.Tooling.Extensions; diff --git a/Modules/Tokens/src/Tokens.Infrastructure/Tokens.Infrastructure.csproj b/Modules/Tokens/src/Tokens.Infrastructure/Tokens.Infrastructure.csproj index 517ec4608d..3901b853a0 100644 --- a/Modules/Tokens/src/Tokens.Infrastructure/Tokens.Infrastructure.csproj +++ b/Modules/Tokens/src/Tokens.Infrastructure/Tokens.Infrastructure.csproj @@ -8,9 +8,9 @@ - + - + diff --git a/Modules/Tokens/src/Tokens.Infrastructure/packages.lock.json b/Modules/Tokens/src/Tokens.Infrastructure/packages.lock.json index d6846c9443..2e67e18b06 100644 --- a/Modules/Tokens/src/Tokens.Infrastructure/packages.lock.json +++ b/Modules/Tokens/src/Tokens.Infrastructure/packages.lock.json @@ -775,14 +775,11 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Tokens.Application": { + "Backbone.Modules.Tokens.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Tokens.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Tokens.Domain": "[1.0.0, )" } }, "Backbone.Modules.Tokens.Contracts": { @@ -887,16 +884,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", diff --git a/Modules/Tokens/src/Tokens.Application/ApplicationConfiguration.cs b/Modules/Tokens/src/Tokens.Module/ApplicationConfiguration.cs similarity index 87% rename from Modules/Tokens/src/Tokens.Application/ApplicationConfiguration.cs rename to Modules/Tokens/src/Tokens.Module/ApplicationConfiguration.cs index 87578e0bff..3514aec44b 100644 --- a/Modules/Tokens/src/Tokens.Application/ApplicationConfiguration.cs +++ b/Modules/Tokens/src/Tokens.Module/ApplicationConfiguration.cs @@ -1,7 +1,7 @@ using System.ComponentModel.DataAnnotations; using Backbone.BuildingBlocks.Application; -namespace Backbone.Modules.Tokens.Application; +namespace Backbone.Modules.Tokens.Module; public class ApplicationConfiguration { diff --git a/Modules/Tokens/src/Tokens.Application/ApplicationErrors.cs b/Modules/Tokens/src/Tokens.Module/ApplicationErrors.cs similarity index 93% rename from Modules/Tokens/src/Tokens.Application/ApplicationErrors.cs rename to Modules/Tokens/src/Tokens.Module/ApplicationErrors.cs index f0aae1efaf..798c0f27ec 100644 --- a/Modules/Tokens/src/Tokens.Application/ApplicationErrors.cs +++ b/Modules/Tokens/src/Tokens.Module/ApplicationErrors.cs @@ -1,6 +1,6 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -namespace Backbone.Modules.Tokens.Application; +namespace Backbone.Modules.Tokens.Module; public class ApplicationErrors { diff --git a/Modules/Tokens/src/Tokens.Application/Extensions/IServiceCollectionExtensions.cs b/Modules/Tokens/src/Tokens.Module/ApplicationServiceCollectionExtensions.cs similarity index 65% rename from Modules/Tokens/src/Tokens.Application/Extensions/IServiceCollectionExtensions.cs rename to Modules/Tokens/src/Tokens.Module/ApplicationServiceCollectionExtensions.cs index 1a54e73512..8f38ac9f4e 100644 --- a/Modules/Tokens/src/Tokens.Application/Extensions/IServiceCollectionExtensions.cs +++ b/Modules/Tokens/src/Tokens.Module/ApplicationServiceCollectionExtensions.cs @@ -1,11 +1,12 @@ using Backbone.BuildingBlocks.Application.MediatR; -using Backbone.Modules.Tokens.Application.Tokens.Commands.CreateToken; +using Backbone.Modules.Tokens.Module.Features.Tokens.CreateToken; using FluentValidation; using Microsoft.Extensions.DependencyInjection; +using Swashbuckle.AspNetCore.SwaggerGen; -namespace Backbone.Modules.Tokens.Application.Extensions; +namespace Backbone.Modules.Tokens.Module; -public static class IServiceCollectionExtensions +internal static class ApplicationServiceCollectionExtensions { public static void AddApplication(this IServiceCollection services) { @@ -17,5 +18,6 @@ public static void AddApplication(this IServiceCollection services) .AddOpenBehavior(typeof(DbConcurrencyBehavior<,>)) ); services.AddValidatorsFromAssembly(typeof(Validator).Assembly); + services.Configure(options => options.OperationFilter()); } } diff --git a/Modules/Tokens/src/Tokens.Application/Identities/IdentityDeleter.cs b/Modules/Tokens/src/Tokens.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs similarity index 74% rename from Modules/Tokens/src/Tokens.Application/Identities/IdentityDeleter.cs rename to Modules/Tokens/src/Tokens.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs index 82a2e7c3ae..62e3f4bd90 100644 --- a/Modules/Tokens/src/Tokens.Application/Identities/IdentityDeleter.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs @@ -1,11 +1,11 @@ using Backbone.BuildingBlocks.Application.Identities; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Tokens.Application.Tokens.Commands.AnonymizeTokenAllocationsOfIdentity; -using Backbone.Modules.Tokens.Application.Tokens.Commands.AnonymizeTokensForIdentity; -using Backbone.Modules.Tokens.Application.Tokens.Commands.DeleteTokensOfIdentity; +using Backbone.Modules.Tokens.Module.Features.Tokens.AnonymizeTokenAllocationsOfIdentity; +using Backbone.Modules.Tokens.Module.Features.Tokens.AnonymizeTokensForIdentity; +using Backbone.Modules.Tokens.Module.Features.Tokens.DeleteTokensOfIdentity; using MediatR; -namespace Backbone.Modules.Tokens.Application.Identities; +namespace Backbone.Modules.Tokens.Module.Features.Identities.DeleteIdentity; public class IdentityDeleter : IIdentityDeleter { diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/AnonymizeTokenAllocationsOfIdentity/AnonymizeTokenAllocationsOfIdentityCommand.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokenAllocationsOfIdentity/Command.cs similarity index 60% rename from Modules/Tokens/src/Tokens.Application/Tokens/Commands/AnonymizeTokenAllocationsOfIdentity/AnonymizeTokenAllocationsOfIdentityCommand.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokenAllocationsOfIdentity/Command.cs index 86a55247e9..f89fef3dde 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/AnonymizeTokenAllocationsOfIdentity/AnonymizeTokenAllocationsOfIdentityCommand.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokenAllocationsOfIdentity/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Tokens.Application.Tokens.Commands.AnonymizeTokenAllocationsOfIdentity; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.AnonymizeTokenAllocationsOfIdentity; public class AnonymizeTokenAllocationsOfIdentityCommand : IRequest { diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/AnonymizeTokenAllocationsOfIdentity/Handler.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokenAllocationsOfIdentity/Handler.cs similarity index 86% rename from Modules/Tokens/src/Tokens.Application/Tokens/Commands/AnonymizeTokenAllocationsOfIdentity/Handler.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokenAllocationsOfIdentity/Handler.cs index 42509ccf74..26fc91d0ba 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/AnonymizeTokenAllocationsOfIdentity/Handler.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokenAllocationsOfIdentity/Handler.cs @@ -1,10 +1,10 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Tokens.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Tokens.Abstractions; using Backbone.Modules.Tokens.Domain.Entities; using MediatR; using Microsoft.Extensions.Options; -namespace Backbone.Modules.Tokens.Application.Tokens.Commands.AnonymizeTokenAllocationsOfIdentity; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.AnonymizeTokenAllocationsOfIdentity; public class Handler : IRequestHandler { diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/AnonymizeTokenAllocationsOfIdentity/Validator.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokenAllocationsOfIdentity/Validator.cs similarity index 79% rename from Modules/Tokens/src/Tokens.Application/Tokens/Commands/AnonymizeTokenAllocationsOfIdentity/Validator.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokenAllocationsOfIdentity/Validator.cs index 8771f07c32..0043647115 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/AnonymizeTokenAllocationsOfIdentity/Validator.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokenAllocationsOfIdentity/Validator.cs @@ -2,7 +2,7 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; using FluentValidation; -namespace Backbone.Modules.Tokens.Application.Tokens.Commands.AnonymizeTokenAllocationsOfIdentity; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.AnonymizeTokenAllocationsOfIdentity; public class Validator : AbstractValidator { diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/AnonymizeTokensForIdentity/AnonymizeTokensForIdentityCommand.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokensForIdentity/Command.cs similarity index 60% rename from Modules/Tokens/src/Tokens.Application/Tokens/Commands/AnonymizeTokensForIdentity/AnonymizeTokensForIdentityCommand.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokensForIdentity/Command.cs index bdc46b17a1..f2102c8e51 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/AnonymizeTokensForIdentity/AnonymizeTokensForIdentityCommand.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokensForIdentity/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Tokens.Application.Tokens.Commands.AnonymizeTokensForIdentity; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.AnonymizeTokensForIdentity; public class AnonymizeTokensForIdentityCommand : IRequest { diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/AnonymizeTokensForIdentity/Handler.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokensForIdentity/Handler.cs similarity index 86% rename from Modules/Tokens/src/Tokens.Application/Tokens/Commands/AnonymizeTokensForIdentity/Handler.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokensForIdentity/Handler.cs index 025deb99c2..6c0718a35d 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/AnonymizeTokensForIdentity/Handler.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokensForIdentity/Handler.cs @@ -1,10 +1,10 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Tokens.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Tokens.Abstractions; using Backbone.Modules.Tokens.Domain.Entities; using MediatR; using Microsoft.Extensions.Options; -namespace Backbone.Modules.Tokens.Application.Tokens.Commands.AnonymizeTokensForIdentity; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.AnonymizeTokensForIdentity; public class Handler : IRequestHandler { diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/AnonymizeTokensForIdentity/Validator.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokensForIdentity/Validator.cs similarity index 80% rename from Modules/Tokens/src/Tokens.Application/Tokens/Commands/AnonymizeTokensForIdentity/Validator.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokensForIdentity/Validator.cs index f3908cc542..c6795a3f91 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/AnonymizeTokensForIdentity/Validator.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokensForIdentity/Validator.cs @@ -2,7 +2,7 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; using FluentValidation; -namespace Backbone.Modules.Tokens.Application.Tokens.Commands.AnonymizeTokensForIdentity; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.AnonymizeTokensForIdentity; public class Validator : AbstractValidator { diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/CreateToken/CreateTokenCommand.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Command.cs similarity index 82% rename from Modules/Tokens/src/Tokens.Application/Tokens/Commands/CreateToken/CreateTokenCommand.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Command.cs index 56b19aa2c2..72994e3add 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/CreateToken/CreateTokenCommand.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Command.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.Attributes; using MediatR; -namespace Backbone.Modules.Tokens.Application.Tokens.Commands.CreateToken; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.CreateToken; [ApplyQuotasForMetrics("NumberOfTokens")] public class CreateTokenCommand : IRequest diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Endpoint.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Endpoint.cs new file mode 100644 index 0000000000..b10030c3e4 --- /dev/null +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Endpoint.cs @@ -0,0 +1,26 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Tokens.Module.Features.Tokens.CreateToken; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapCreateTokenEndpoint(this RouteGroupBuilder group) + { + group.MapPost("", Handle) + .AllowAnonymous() + .Produces>(StatusCodes.Status201Created); + return group; + } + + private static async Task Handle([FromBody] CreateTokenCommand request, HttpContext context, IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(request, cancellationToken); + return EnvelopeHttpResults.CreatedAtRoute(GetToken.Endpoint.ROUTE_NAME, new { v = context.Request.RouteValues["v"], id = response.Id }, response); + } +} diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/CreateToken/Handler.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Handler.cs similarity index 87% rename from Modules/Tokens/src/Tokens.Application/Tokens/Commands/CreateToken/Handler.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Handler.cs index f19ec3ffa6..4484f6ae3d 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/CreateToken/Handler.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Handler.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Tokens.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Tokens.Abstractions; using Backbone.Modules.Tokens.Domain.Entities; using MediatR; -namespace Backbone.Modules.Tokens.Application.Tokens.Commands.CreateToken; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.CreateToken; public class Handler : IRequestHandler { diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/CreateToken/CreateTokenResponse.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Response.cs similarity index 78% rename from Modules/Tokens/src/Tokens.Application/Tokens/Commands/CreateToken/CreateTokenResponse.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Response.cs index 216e6229ac..708be2ee78 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/CreateToken/CreateTokenResponse.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Response.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Tokens.Domain.Entities; -namespace Backbone.Modules.Tokens.Application.Tokens.Commands.CreateToken; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.CreateToken; public class CreateTokenResponse { diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/CreateToken/Validator.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Validator.cs similarity index 95% rename from Modules/Tokens/src/Tokens.Application/Tokens/Commands/CreateToken/Validator.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Validator.cs index 550f38d575..a56a79bdf0 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/CreateToken/Validator.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Validator.cs @@ -7,7 +7,7 @@ using Backbone.Tooling; using FluentValidation; -namespace Backbone.Modules.Tokens.Application.Tokens.Commands.CreateToken; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.CreateToken; public class Validator : AbstractValidator { diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/DeleteToken/DeleteTokenCommand.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Command.cs similarity index 59% rename from Modules/Tokens/src/Tokens.Application/Tokens/Commands/DeleteToken/DeleteTokenCommand.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Command.cs index 39211a028e..28a836abb3 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/DeleteToken/DeleteTokenCommand.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Tokens.Application.Tokens.Commands.DeleteToken; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.DeleteToken; public class DeleteTokenCommand : IRequest { diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Endpoint.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Endpoint.cs new file mode 100644 index 0000000000..26eeba9772 --- /dev/null +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Endpoint.cs @@ -0,0 +1,27 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Tokens.Module.Features.Tokens.DeleteToken; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapDeleteTokenEndpoint(this RouteGroupBuilder group) + { + group.MapDelete("{id}", Handle) + .Produces(StatusCodes.Status204NoContent) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status404NotFound); + return group; + } + + private static async Task Handle([FromRoute] string id, IMediator mediator, CancellationToken cancellationToken) + { + await mediator.Send(new DeleteTokenCommand { Id = id }, cancellationToken); + return Results.NoContent(); + } +} diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/DeleteToken/Handler.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Handler.cs similarity index 86% rename from Modules/Tokens/src/Tokens.Application/Tokens/Commands/DeleteToken/Handler.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Handler.cs index 4dc6bdb926..ceec4a9bb5 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/DeleteToken/Handler.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Handler.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; -using Backbone.Modules.Tokens.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Tokens.Abstractions; using Backbone.Modules.Tokens.Domain.Entities; using MediatR; -namespace Backbone.Modules.Tokens.Application.Tokens.Commands.DeleteToken; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.DeleteToken; public class Handler : IRequestHandler { diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/DeleteToken/Validator.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Validator.cs similarity index 80% rename from Modules/Tokens/src/Tokens.Application/Tokens/Commands/DeleteToken/Validator.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Validator.cs index c577043804..d8415dba96 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/DeleteToken/Validator.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Validator.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Tokens.Domain.Entities; using FluentValidation; -namespace Backbone.Modules.Tokens.Application.Tokens.Commands.DeleteToken; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.DeleteToken; public class Validator : AbstractValidator { diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/DeleteTokensOfIdentity/DeleteTokensOfIdentityCommand.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteTokensOfIdentity/Command.cs similarity index 61% rename from Modules/Tokens/src/Tokens.Application/Tokens/Commands/DeleteTokensOfIdentity/DeleteTokensOfIdentityCommand.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteTokensOfIdentity/Command.cs index cf10da932b..003d2486ff 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/DeleteTokensOfIdentity/DeleteTokensOfIdentityCommand.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteTokensOfIdentity/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Tokens.Application.Tokens.Commands.DeleteTokensOfIdentity; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.DeleteTokensOfIdentity; public class DeleteTokensOfIdentityCommand : IRequest { diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/DeleteTokensOfIdentity/Handler.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteTokensOfIdentity/Handler.cs similarity index 75% rename from Modules/Tokens/src/Tokens.Application/Tokens/Commands/DeleteTokensOfIdentity/Handler.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteTokensOfIdentity/Handler.cs index c5feee3c52..0ec4212963 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/DeleteTokensOfIdentity/Handler.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteTokensOfIdentity/Handler.cs @@ -1,8 +1,8 @@ -using Backbone.Modules.Tokens.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Tokens.Abstractions; using Backbone.Modules.Tokens.Domain.Entities; using MediatR; -namespace Backbone.Modules.Tokens.Application.Tokens.Commands.DeleteTokensOfIdentity; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.DeleteTokensOfIdentity; public class Handler : IRequestHandler { diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/DeleteTokensOfIdentity/Validator.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteTokensOfIdentity/Validator.cs similarity index 80% rename from Modules/Tokens/src/Tokens.Application/Tokens/Commands/DeleteTokensOfIdentity/Validator.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteTokensOfIdentity/Validator.cs index 617815fe1c..340b740a8a 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/DeleteTokensOfIdentity/Validator.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteTokensOfIdentity/Validator.cs @@ -2,7 +2,7 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; using FluentValidation; -namespace Backbone.Modules.Tokens.Application.Tokens.Commands.DeleteTokensOfIdentity; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.DeleteTokensOfIdentity; public class Validator : AbstractValidator { diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ExecuteHousekeeping/Command.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ExecuteHousekeeping/Command.cs new file mode 100644 index 0000000000..70cda09dbd --- /dev/null +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ExecuteHousekeeping/Command.cs @@ -0,0 +1,5 @@ +using MediatR; + +namespace Backbone.Modules.Tokens.Module.Features.Tokens.ExecuteHousekeeping; + +public class ExecuteHousekeepingCommand : IRequest; diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/ExecuteHousekeeping/Handler.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ExecuteHousekeeping/Handler.cs similarity index 82% rename from Modules/Tokens/src/Tokens.Application/Tokens/Commands/ExecuteHousekeeping/Handler.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/ExecuteHousekeeping/Handler.cs index 823d6ad127..79f4bad56c 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/ExecuteHousekeeping/Handler.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ExecuteHousekeeping/Handler.cs @@ -1,9 +1,9 @@ using Backbone.BuildingBlocks.Application.Housekeeping; -using Backbone.Modules.Tokens.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Tokens.Abstractions; using Backbone.Modules.Tokens.Domain.Entities; using MediatR; -namespace Backbone.Modules.Tokens.Application.Tokens.Commands.ExecuteHousekeeping; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.ExecuteHousekeeping; public class Handler : IRequestHandler { diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Endpoint.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Endpoint.cs new file mode 100644 index 0000000000..b4713e549c --- /dev/null +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Endpoint.cs @@ -0,0 +1,32 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using Backbone.Modules.Tokens.Module.Features.Tokens.Shared; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Tokens.Module.Features.Tokens.GetToken; + +internal static class Endpoint +{ + public const string ROUTE_NAME = "ConsumerApi.Tokens.GetById"; + + public static RouteGroupBuilder MapGetTokenEndpoint(this RouteGroupBuilder group) + { + group.MapGet("{id}", Handle) + .AllowAnonymous() + .WithMetadata(new RouteNameMetadata(ROUTE_NAME)) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status404NotFound); + return group; + } + + private static async Task Handle([FromRoute] string id, [FromQuery] Base64QueryValue? password, IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new GetTokenQuery { Id = id, Password = password?.Value }, cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Queries/GetToken/Handler.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Handler.cs similarity index 91% rename from Modules/Tokens/src/Tokens.Application/Tokens/Queries/GetToken/Handler.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Handler.cs index 8e744faad3..2213d3d420 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Queries/GetToken/Handler.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Handler.cs @@ -1,12 +1,12 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; -using Backbone.Modules.Tokens.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Tokens.Application.Tokens.DTOs; +using Backbone.Modules.Tokens.Abstractions; +using Backbone.Modules.Tokens.Module.Features.Tokens.Shared; using Backbone.Modules.Tokens.Domain.Entities; using MediatR; using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; -namespace Backbone.Modules.Tokens.Application.Tokens.Queries.GetToken; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.GetToken; public class Handler : IRequestHandler { diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Queries/GetToken/GetTokenQuery.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Query.cs similarity index 55% rename from Modules/Tokens/src/Tokens.Application/Tokens/Queries/GetToken/GetTokenQuery.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Query.cs index bdd341bca5..2889097d69 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Queries/GetToken/GetTokenQuery.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Query.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Tokens.Application.Tokens.DTOs; +using Backbone.Modules.Tokens.Module.Features.Tokens.Shared; using MediatR; -namespace Backbone.Modules.Tokens.Application.Tokens.Queries.GetToken; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.GetToken; public class GetTokenQuery : IRequest { diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Queries/GetToken/Validator.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Validator.cs similarity index 86% rename from Modules/Tokens/src/Tokens.Application/Tokens/Queries/GetToken/Validator.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Validator.cs index 1791ce93f3..72cf981c56 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Queries/GetToken/Validator.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Validator.cs @@ -3,7 +3,7 @@ using Backbone.Modules.Tokens.Domain.Entities; using FluentValidation; -namespace Backbone.Modules.Tokens.Application.Tokens.Queries.GetToken; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.GetToken; public class Validator : AbstractValidator { diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Endpoint.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Endpoint.cs new file mode 100644 index 0000000000..a544412d28 --- /dev/null +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Endpoint.cs @@ -0,0 +1,37 @@ +using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; +using Backbone.BuildingBlocks.Application.Pagination; +using Backbone.Modules.Tokens.Module.Features.Tokens.Shared; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; +using Microsoft.Extensions.Options; + +namespace Backbone.Modules.Tokens.Module.Features.Tokens.ListTokens; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapListTokensEndpoint(this RouteGroupBuilder group) + { + group.MapGet("", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest); + return group; + } + + private static async Task Handle([FromQuery(Name = "PageNumber")] int? pageNumber, [FromQuery(Name = "PageSize")] int? pageSize, + [FromQuery] string[]? ids, HttpRequest request, IMediator mediator, IOptions options, CancellationToken cancellationToken) + { + var tokenIds = ids is { Length: > 0 } ? ids.ToList() : ListTokensQueryItem.ReadIds(request.Query); + var paginationFilter = new PaginationFilter { PageNumber = pageNumber ?? 1, PageSize = pageSize ?? options.Value.Pagination.DefaultPageSize }; + if (paginationFilter.PageSize > options.Value.Pagination.MaxPageSize) + throw new ApplicationException(GenericApplicationErrors.Validation.InvalidPageSize(options.Value.Pagination.MaxPageSize)); + + var response = await mediator.Send(new ListTokensQuery { PaginationFilter = paginationFilter, Ids = tokenIds }, cancellationToken); + return EnvelopeHttpResults.Paged(response); + } +} diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Queries/ListTokens/Handler.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Handler.cs similarity index 81% rename from Modules/Tokens/src/Tokens.Application/Tokens/Queries/ListTokens/Handler.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Handler.cs index 89cc8255de..10622d68c7 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Queries/ListTokens/Handler.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Handler.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Tokens.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Tokens.Application.Tokens.Queries.Shared; +using Backbone.Modules.Tokens.Abstractions; +using Backbone.Modules.Tokens.Module.Features.Tokens.Shared; using MediatR; -namespace Backbone.Modules.Tokens.Application.Tokens.Queries.ListTokens; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.ListTokens; public class Handler : IRequestHandler { diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/ListTokensQueryItem.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/ListTokensQueryItem.cs new file mode 100644 index 0000000000..7d7c0bd1fb --- /dev/null +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/ListTokensQueryItem.cs @@ -0,0 +1,17 @@ +using Microsoft.AspNetCore.Http; + +namespace Backbone.Modules.Tokens.Module.Features.Tokens.ListTokens; + +public class ListTokensQueryItem +{ + public required string Id { get; set; } + + internal static List ReadIds(IQueryCollection query) + { + // Preserve the legacy MVC complex-array syntax and its contiguous indexing. + var ids = new List(); + for (var i = 0; query.TryGetValue($"tokens.{i}.id", out var id); i++) + ids.Add(id.ToString()); + return ids; + } +} diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/OpenApiOperationFilter.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/OpenApiOperationFilter.cs new file mode 100644 index 0000000000..09ebcb45e5 --- /dev/null +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/OpenApiOperationFilter.cs @@ -0,0 +1,22 @@ +using Microsoft.OpenApi; +using Swashbuckle.AspNetCore.SwaggerGen; + +namespace Backbone.Modules.Tokens.Module.Features.Tokens.ListTokens; + +internal sealed class OpenApiOperationFilter : IOperationFilter +{ + public void Apply(OpenApiOperation operation, OperationFilterContext context) + { + if (context.MethodInfo.DeclaringType != typeof(Endpoint)) + return; + + // The legacy complex array is read from HttpRequest and still belongs in the public API description. + operation.Parameters ??= []; + operation.Parameters.Add(new OpenApiParameter + { + Name = "tokens", + In = ParameterLocation.Query, + Schema = context.SchemaGenerator.GenerateSchema(typeof(ListTokensQueryItem[]), context.SchemaRepository) + }); + } +} diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Queries/ListTokens/ListTokensQuery.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Query.cs similarity index 64% rename from Modules/Tokens/src/Tokens.Application/Tokens/Queries/ListTokens/ListTokensQuery.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Query.cs index 627a67613a..e698400f8f 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Queries/ListTokens/ListTokensQuery.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Query.cs @@ -1,8 +1,8 @@ using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.Modules.Tokens.Application.Tokens.Queries.Shared; +using Backbone.Modules.Tokens.Module.Features.Tokens.Shared; using MediatR; -namespace Backbone.Modules.Tokens.Application.Tokens.Queries.ListTokens; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.ListTokens; public class ListTokensQuery : IRequest { diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Queries/ListTokens/Validator.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Validator.cs similarity index 93% rename from Modules/Tokens/src/Tokens.Application/Tokens/Queries/ListTokens/Validator.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Validator.cs index 30826120bc..6348f6a2d0 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Queries/ListTokens/Validator.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Validator.cs @@ -5,7 +5,7 @@ using Backbone.Modules.Tokens.Domain.Entities; using FluentValidation; -namespace Backbone.Modules.Tokens.Application.Tokens.Queries.ListTokens; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.ListTokens; // ReSharper disable once UnusedMember.Global public class Validator : AbstractValidator diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Queries/ListTokensByIdentity/Handler.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokensByIdentity/Handler.cs similarity index 72% rename from Modules/Tokens/src/Tokens.Application/Tokens/Queries/ListTokensByIdentity/Handler.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokensByIdentity/Handler.cs index 9a279086b1..4b0718ee7f 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Queries/ListTokensByIdentity/Handler.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokensByIdentity/Handler.cs @@ -1,9 +1,9 @@ -using Backbone.Modules.Tokens.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Tokens.Application.Tokens.Queries.Shared; +using Backbone.Modules.Tokens.Abstractions; +using Backbone.Modules.Tokens.Module.Features.Tokens.Shared; using Backbone.Modules.Tokens.Domain.Entities; using MediatR; -namespace Backbone.Modules.Tokens.Application.Tokens.Queries.ListTokensByIdentity; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.ListTokensByIdentity; public class Handler(ITokensRepository tokensRepository) : IRequestHandler { diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Queries/ListTokensByIdentity/ListTokensByIdentityQuery.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokensByIdentity/Query.cs similarity index 57% rename from Modules/Tokens/src/Tokens.Application/Tokens/Queries/ListTokensByIdentity/ListTokensByIdentityQuery.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokensByIdentity/Query.cs index 101c363c34..29ce8e9aa4 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Queries/ListTokensByIdentity/ListTokensByIdentityQuery.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokensByIdentity/Query.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.Modules.Tokens.Application.Tokens.Queries.Shared; +using Backbone.Modules.Tokens.Module.Features.Tokens.Shared; using MediatR; -namespace Backbone.Modules.Tokens.Application.Tokens.Queries.ListTokensByIdentity; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.ListTokensByIdentity; public record ListTokensByIdentityQuery(string CreatedBy, PaginationFilter PaginationFilter) : IRequest; diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Queries/ListTokensByIdentity/Validator.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokensByIdentity/Validator.cs similarity index 89% rename from Modules/Tokens/src/Tokens.Application/Tokens/Queries/ListTokensByIdentity/Validator.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokensByIdentity/Validator.cs index 3a204fd4f8..b5f5344835 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Queries/ListTokensByIdentity/Validator.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokensByIdentity/Validator.cs @@ -2,7 +2,7 @@ using Backbone.BuildingBlocks.Application.FluentValidation; using FluentValidation; -namespace Backbone.Modules.Tokens.Application.Tokens.Queries.ListTokensByIdentity; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.ListTokensByIdentity; // ReSharper disable once UnusedMember.Global public class Validator : AbstractValidator diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/ResetAccessFailedCountOfToken/ResetAccessFailedCountOfTokenCommand.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ResetAccessFailedCountOfToken/Command.cs similarity index 59% rename from Modules/Tokens/src/Tokens.Application/Tokens/Commands/ResetAccessFailedCountOfToken/ResetAccessFailedCountOfTokenCommand.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/ResetAccessFailedCountOfToken/Command.cs index ab62334301..56af908575 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/ResetAccessFailedCountOfToken/ResetAccessFailedCountOfTokenCommand.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ResetAccessFailedCountOfToken/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Tokens.Application.Tokens.Commands.ResetAccessFailedCountOfToken; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.ResetAccessFailedCountOfToken; public class ResetAccessFailedCountOfTokenCommand : IRequest { diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/ResetAccessFailedCountOfToken/Handler.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ResetAccessFailedCountOfToken/Handler.cs similarity index 81% rename from Modules/Tokens/src/Tokens.Application/Tokens/Commands/ResetAccessFailedCountOfToken/Handler.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/ResetAccessFailedCountOfToken/Handler.cs index 0ab3ea1e09..e3b47a4622 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/ResetAccessFailedCountOfToken/Handler.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ResetAccessFailedCountOfToken/Handler.cs @@ -1,9 +1,9 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.Modules.Tokens.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Tokens.Abstractions; using Backbone.Modules.Tokens.Domain.Entities; using MediatR; -namespace Backbone.Modules.Tokens.Application.Tokens.Commands.ResetAccessFailedCountOfToken; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.ResetAccessFailedCountOfToken; public class Handler : IRequestHandler { diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/ResetAccessFailedCountOfToken/Validator.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ResetAccessFailedCountOfToken/Validator.cs similarity index 78% rename from Modules/Tokens/src/Tokens.Application/Tokens/Commands/ResetAccessFailedCountOfToken/Validator.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/ResetAccessFailedCountOfToken/Validator.cs index 8eaf37116a..360bca1422 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/ResetAccessFailedCountOfToken/Validator.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ResetAccessFailedCountOfToken/Validator.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Tokens.Domain.Entities; using FluentValidation; -namespace Backbone.Modules.Tokens.Application.Tokens.Commands.ResetAccessFailedCountOfToken; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.ResetAccessFailedCountOfToken; public class Validator : AbstractValidator { diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Queries/Shared/ListTokensResponse.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/Shared/ListTokensResponse.cs similarity index 79% rename from Modules/Tokens/src/Tokens.Application/Tokens/Queries/Shared/ListTokensResponse.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/Shared/ListTokensResponse.cs index 52ef40a374..37c99aea0d 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Queries/Shared/ListTokensResponse.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/Shared/ListTokensResponse.cs @@ -1,9 +1,9 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.Persistence.Database; using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.Modules.Tokens.Application.Tokens.DTOs; +using Backbone.Modules.Tokens.Module.Features.Tokens.Shared; using Backbone.Modules.Tokens.Domain.Entities; -namespace Backbone.Modules.Tokens.Application.Tokens.Queries.Shared; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.Shared; public class ListTokensResponse(DbPaginationResult dbPaginationResult, PaginationFilter previousPaginationFilter) : PagedResponse(dbPaginationResult.ItemsOnPage.Select(t => new TokenDTO(t)), previousPaginationFilter, dbPaginationResult.TotalNumberOfItems); diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/DTOs/TokenDTO.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/Shared/TokenDTO.cs similarity index 92% rename from Modules/Tokens/src/Tokens.Application/Tokens/DTOs/TokenDTO.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/Shared/TokenDTO.cs index 4f60e5683f..0321931153 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/DTOs/TokenDTO.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/Shared/TokenDTO.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Tokens.Domain.Entities; -namespace Backbone.Modules.Tokens.Application.Tokens.DTOs; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.Shared; public class TokenDTO { diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/UpdateTokenContent/UpdateTokenContentCommand.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Command.cs similarity index 75% rename from Modules/Tokens/src/Tokens.Application/Tokens/Commands/UpdateTokenContent/UpdateTokenContentCommand.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Command.cs index 34cc745767..91a9d75f34 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/UpdateTokenContent/UpdateTokenContentCommand.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Tokens.Application.Tokens.Commands.UpdateTokenContent; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.UpdateTokenContent; public class UpdateTokenContentCommand : IRequest { diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Endpoint.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Endpoint.cs new file mode 100644 index 0000000000..1fb838d971 --- /dev/null +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Endpoint.cs @@ -0,0 +1,27 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Tokens.Module.Features.Tokens.UpdateTokenContent; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapUpdateTokenContentEndpoint(this RouteGroupBuilder group) + { + group.MapPost("{id}/UpdateContent", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status404NotFound); + return group; + } + + private static async Task Handle([FromRoute] string id, [FromBody] UpdateTokenContentRequest request, IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new UpdateTokenContentCommand { TokenId = id, NewContent = request.NewContent, Password = request.Password }, cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/UpdateTokenContent/Handler.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Handler.cs similarity index 93% rename from Modules/Tokens/src/Tokens.Application/Tokens/Commands/UpdateTokenContent/Handler.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Handler.cs index 87495aef29..e42d36df9f 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/UpdateTokenContent/Handler.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Handler.cs @@ -1,11 +1,11 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; -using Backbone.Modules.Tokens.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Tokens.Abstractions; using Backbone.Modules.Tokens.Domain.Entities; using MediatR; using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; -namespace Backbone.Modules.Tokens.Application.Tokens.Commands.UpdateTokenContent; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.UpdateTokenContent; public class Handler : IRequestHandler { diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Request.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Request.cs new file mode 100644 index 0000000000..faae64d57d --- /dev/null +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Request.cs @@ -0,0 +1,7 @@ +namespace Backbone.Modules.Tokens.Module.Features.Tokens.UpdateTokenContent; + +public class UpdateTokenContentRequest +{ + public required byte[] NewContent { get; init; } + public byte[]? Password { get; init; } +} diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/UpdateTokenContent/UpdateTokenContentResponse.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Response.cs similarity index 90% rename from Modules/Tokens/src/Tokens.Application/Tokens/Commands/UpdateTokenContent/UpdateTokenContentResponse.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Response.cs index cdca438dd3..ab2c973318 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/UpdateTokenContent/UpdateTokenContentResponse.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Response.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Tokens.Domain.Entities; -namespace Backbone.Modules.Tokens.Application.Tokens.Commands.UpdateTokenContent; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.UpdateTokenContent; public class UpdateTokenContentResponse { diff --git a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/UpdateTokenContent/Validator.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Validator.cs similarity index 87% rename from Modules/Tokens/src/Tokens.Application/Tokens/Commands/UpdateTokenContent/Validator.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Validator.cs index 05b05b787c..0a6fbb224d 100644 --- a/Modules/Tokens/src/Tokens.Application/Tokens/Commands/UpdateTokenContent/Validator.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Validator.cs @@ -3,7 +3,7 @@ using Backbone.Modules.Tokens.Domain.Entities; using FluentValidation; -namespace Backbone.Modules.Tokens.Application.Tokens.Commands.UpdateTokenContent; +namespace Backbone.Modules.Tokens.Module.Features.Tokens.UpdateTokenContent; public class Validator : AbstractValidator { diff --git a/Modules/Tokens/src/Tokens.Module/Tokens.Module.csproj b/Modules/Tokens/src/Tokens.Module/Tokens.Module.csproj index e58ab4642f..586ddd6f2f 100644 --- a/Modules/Tokens/src/Tokens.Module/Tokens.Module.csproj +++ b/Modules/Tokens/src/Tokens.Module/Tokens.Module.csproj @@ -3,7 +3,7 @@ - + @@ -11,6 +11,8 @@ + + diff --git a/Modules/Tokens/src/Tokens.Module/TokensEndpointExtensions.cs b/Modules/Tokens/src/Tokens.Module/TokensEndpointExtensions.cs new file mode 100644 index 0000000000..0532297710 --- /dev/null +++ b/Modules/Tokens/src/Tokens.Module/TokensEndpointExtensions.cs @@ -0,0 +1,24 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.Modules.Tokens.Module.Features.Tokens.CreateToken; +using Backbone.Modules.Tokens.Module.Features.Tokens.DeleteToken; +using Backbone.Modules.Tokens.Module.Features.Tokens.GetToken; +using Backbone.Modules.Tokens.Module.Features.Tokens.ListTokens; +using Backbone.Modules.Tokens.Module.Features.Tokens.UpdateTokenContent; +using Microsoft.AspNetCore.Routing; +using OpenIddict.Validation.AspNetCore; + +namespace Backbone.Modules.Tokens.Module; + +public static class TokensEndpointExtensions +{ + public static IEndpointRouteBuilder MapTokensEndpoints(this IEndpointRouteBuilder endpoints) + { + var group = endpoints.MapVersionedEndpointGroup("Tokens", "Tokens", 2, OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme); + group.MapCreateTokenEndpoint(); + group.MapGetTokenEndpoint(); + group.MapListTokensEndpoint(); + group.MapDeleteTokenEndpoint(); + group.MapUpdateTokenContentEndpoint(); + return endpoints; + } +} diff --git a/Modules/Tokens/src/Tokens.Module/TokensModule.cs b/Modules/Tokens/src/Tokens.Module/TokensModule.cs index e8f31f3f87..2f5d296e91 100644 --- a/Modules/Tokens/src/Tokens.Module/TokensModule.cs +++ b/Modules/Tokens/src/Tokens.Module/TokensModule.cs @@ -1,8 +1,6 @@ using Backbone.BuildingBlocks.API.Extensions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Module; -using Backbone.Modules.Tokens.Application; -using Backbone.Modules.Tokens.Application.Extensions; using Backbone.Modules.Tokens.Infrastructure; using Backbone.Modules.Tokens.Infrastructure.Persistence; using Microsoft.Extensions.Configuration; diff --git a/Modules/Tokens/src/Tokens.Module/packages.lock.json b/Modules/Tokens/src/Tokens.Module/packages.lock.json index 18860871df..102694948e 100644 --- a/Modules/Tokens/src/Tokens.Module/packages.lock.json +++ b/Modules/Tokens/src/Tokens.Module/packages.lock.json @@ -2,6 +2,25 @@ "version": 2, "dependencies": { "net10.0": { + "FluentValidation.DependencyInjectionExtensions": { + "type": "Direct", + "requested": "[12.1.1, 12.1.1]", + "resolved": "12.1.1", + "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", + "dependencies": { + "FluentValidation": "12.1.1", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" + } + }, + "Polly": { + "type": "Direct", + "requested": "[8.7.0, 8.7.0]", + "resolved": "8.7.0", + "contentHash": "0qR4f0OR8FeCAfLWcfwzAM7w6EmpUgwa22PgxKjcL25dEAto7sKpQQXbtxp38vVvK+V3RFkh/TeI7g/iUdoYIQ==", + "dependencies": { + "Polly.Core": "8.7.0" + } + }, "ReHackt.Extensions.Options.Validation": { "type": "Direct", "requested": "[10.0.1, 10.0.1]", @@ -1280,14 +1299,11 @@ "Backbone.BuildingBlocks.Domain": "[1.0.0, )" } }, - "Backbone.Modules.Tokens.Application": { + "Backbone.Modules.Tokens.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Tokens.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Tokens.Domain": "[1.0.0, )" } }, "Backbone.Modules.Tokens.Contracts": { @@ -1307,9 +1323,9 @@ "Backbone.Modules.Tokens.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", + "Backbone.Modules.Tokens.Abstractions": "[1.0.0, )", "Backbone.Modules.Tokens.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1479,16 +1495,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", @@ -1899,15 +1905,6 @@ "OpenTelemetry.Api": "[1.18.0, 2.0.0)" } }, - "Polly": { - "type": "CentralTransitive", - "requested": "[8.7.0, 8.7.0]", - "resolved": "8.7.0", - "contentHash": "0qR4f0OR8FeCAfLWcfwzAM7w6EmpUgwa22PgxKjcL25dEAto7sKpQQXbtxp38vVvK+V3RFkh/TeI7g/iUdoYIQ==", - "dependencies": { - "Polly.Core": "8.7.0" - } - }, "RabbitMQ.Client": { "type": "CentralTransitive", "requested": "[7.2.1, 7.2.1]", diff --git a/Modules/Tokens/test/Tokens.Application.Tests/Tests/Identities/IdentityDeleterTests.cs b/Modules/Tokens/test/Tokens.Module.Tests/Tests/Identities/IdentityDeleterTests.cs similarity index 86% rename from Modules/Tokens/test/Tokens.Application.Tests/Tests/Identities/IdentityDeleterTests.cs rename to Modules/Tokens/test/Tokens.Module.Tests/Tests/Identities/IdentityDeleterTests.cs index 5c0d56cdb7..f0e550e5b2 100644 --- a/Modules/Tokens/test/Tokens.Application.Tests/Tests/Identities/IdentityDeleterTests.cs +++ b/Modules/Tokens/test/Tokens.Module.Tests/Tests/Identities/IdentityDeleterTests.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Identities; -using Backbone.Modules.Tokens.Application.Identities; -using Backbone.Modules.Tokens.Application.Tokens.Commands.DeleteTokensOfIdentity; +using Backbone.Modules.Tokens.Module.Features.Identities.DeleteIdentity; +using Backbone.Modules.Tokens.Module.Features.Tokens.DeleteTokensOfIdentity; using FakeItEasy; using MediatR; -namespace Backbone.Modules.Tokens.Application.Tests.Tests.Identities; +namespace Backbone.Modules.Tokens.Module.Tests.Tests.Identities; public class IdentityDeleterTests : AbstractTestsBase { diff --git a/Modules/Tokens/test/Tokens.Application.Tests/Tests/Tokens/CreateToken/ValidatorTests.cs b/Modules/Tokens/test/Tokens.Module.Tests/Tests/Tokens/CreateToken/ValidatorTests.cs similarity index 97% rename from Modules/Tokens/test/Tokens.Application.Tests/Tests/Tokens/CreateToken/ValidatorTests.cs rename to Modules/Tokens/test/Tokens.Module.Tests/Tests/Tokens/CreateToken/ValidatorTests.cs index 4c262d1ab5..dbcb04fa7c 100644 --- a/Modules/Tokens/test/Tokens.Application.Tests/Tests/Tokens/CreateToken/ValidatorTests.cs +++ b/Modules/Tokens/test/Tokens.Module.Tests/Tests/Tokens/CreateToken/ValidatorTests.cs @@ -1,12 +1,12 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; -using Backbone.Modules.Tokens.Application.Tokens.Commands.CreateToken; +using Backbone.Modules.Tokens.Module.Features.Tokens.CreateToken; using Backbone.Modules.Tokens.Domain.Entities; using Backbone.UnitTestTools.FluentValidation; using Backbone.UnitTestTools.TestDoubles; using FakeItEasy; using FluentValidation.TestHelper; -namespace Backbone.Modules.Tokens.Application.Tests.Tests.Tokens.CreateToken; +namespace Backbone.Modules.Tokens.Module.Tests.Tests.Tokens.CreateToken; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Tokens/test/Tokens.Application.Tests/Tests/Tokens/DeleteTokensOfIdentity/HandlerTests.cs b/Modules/Tokens/test/Tokens.Module.Tests/Tests/Tokens/DeleteTokensOfIdentity/HandlerTests.cs similarity index 75% rename from Modules/Tokens/test/Tokens.Application.Tests/Tests/Tokens/DeleteTokensOfIdentity/HandlerTests.cs rename to Modules/Tokens/test/Tokens.Module.Tests/Tests/Tokens/DeleteTokensOfIdentity/HandlerTests.cs index 1e3f52f719..d374eb8dfd 100644 --- a/Modules/Tokens/test/Tokens.Application.Tests/Tests/Tokens/DeleteTokensOfIdentity/HandlerTests.cs +++ b/Modules/Tokens/test/Tokens.Module.Tests/Tests/Tokens/DeleteTokensOfIdentity/HandlerTests.cs @@ -1,10 +1,10 @@ using System.Linq.Expressions; -using Backbone.Modules.Tokens.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Tokens.Application.Tokens.Commands.DeleteTokensOfIdentity; +using Backbone.Modules.Tokens.Abstractions; +using Backbone.Modules.Tokens.Module.Features.Tokens.DeleteTokensOfIdentity; using Backbone.Modules.Tokens.Domain.Entities; using FakeItEasy; -namespace Backbone.Modules.Tokens.Application.Tests.Tests.Tokens.DeleteTokensOfIdentity; +namespace Backbone.Modules.Tokens.Module.Tests.Tests.Tokens.DeleteTokensOfIdentity; public class HandlerTests : AbstractTestsBase { diff --git a/Modules/Tokens/test/Tokens.Application.Tests/Tokens.Application.Tests.csproj b/Modules/Tokens/test/Tokens.Module.Tests/Tokens.Module.Tests.csproj similarity index 88% rename from Modules/Tokens/test/Tokens.Application.Tests/Tokens.Application.Tests.csproj rename to Modules/Tokens/test/Tokens.Module.Tests/Tokens.Module.Tests.csproj index 8f9303cbe9..94846abfa9 100644 --- a/Modules/Tokens/test/Tokens.Application.Tests/Tokens.Application.Tests.csproj +++ b/Modules/Tokens/test/Tokens.Module.Tests/Tokens.Module.Tests.csproj @@ -16,7 +16,7 @@ - + diff --git a/Modules/Tokens/test/Tokens.Application.Tests/packages.lock.json b/Modules/Tokens/test/Tokens.Module.Tests/packages.lock.json similarity index 58% rename from Modules/Tokens/test/Tokens.Application.Tests/packages.lock.json rename to Modules/Tokens/test/Tokens.Module.Tests/packages.lock.json index edbbfb0fe9..5838c5a497 100644 --- a/Modules/Tokens/test/Tokens.Application.Tests/packages.lock.json +++ b/Modules/Tokens/test/Tokens.Module.Tests/packages.lock.json @@ -47,6 +47,22 @@ "xunit.v3.core.mtp-v2": "[3.2.2]" } }, + "Asp.Versioning.Abstractions": { + "type": "Transitive", + "resolved": "10.1.0", + "contentHash": "RwdgC5O0baZ4pt30pAKKPQHq2CV4unBKA4HWoTeu7NY9ZwXM0dWYGf1Ipc5GK0eFBe9cMeqz4pGpPncMz4/ZNQ==", + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.0" + } + }, + "Asp.Versioning.Http": { + "type": "Transitive", + "resolved": "10.0.1", + "contentHash": "g0ayV/9ho3tGgooC6eF5p1063I1WzlxFJDYQrigcGnW+mLvui6eXrcW5hzTHhQREroUR3ZwXQrIN2SAIoi+KDw==", + "dependencies": { + "Asp.Versioning.Abstractions": "10.1.0" + } + }, "AWSSDK.Core": { "type": "Transitive", "resolved": "4.0.100.9", @@ -75,16 +91,6 @@ "System.Memory.Data": "1.0.2" } }, - "Azure.Identity": { - "type": "Transitive", - "resolved": "1.17.1", - "contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Microsoft.Identity.Client": "4.78.0", - "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" - } - }, "Azure.Storage.Common": { "type": "Transitive", "resolved": "12.28.0", @@ -236,6 +242,11 @@ "Grpc.Core.Api": "2.71.0" } }, + "libsodium": { + "type": "Transitive", + "resolved": "1.0.22", + "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" + }, "MedallionTopologicalSort": { "type": "Transitive", "resolved": "1.0.0", @@ -259,6 +270,25 @@ "Microsoft.AspNetCore.Cryptography.Internal": "10.0.10" } }, + "Microsoft.AspNetCore.DataProtection": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "5sfrNrBShTlJeXvWNxjPS7ilLY4H6MICZPMZr/2vjoDoBH5Z8sQYJwbhulqfXh4yIpxIto0TcmOQHOElvpq+iQ==", + "dependencies": { + "Microsoft.AspNetCore.Cryptography.Internal": "10.0.10", + "Microsoft.AspNetCore.DataProtection.Abstractions": "10.0.10", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", + "Microsoft.Extensions.Logging.Abstractions": "10.0.10", + "Microsoft.Extensions.Options": "10.0.10", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "Microsoft.AspNetCore.DataProtection.Abstractions": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "q2RNx0N/qrsU+JgbPE78I9pu5ekwguitAFVoeE1NCgxtkUTguvf7oTzBnn42zSQxuugJ4fmj0RSarob8Rvorrg==" + }, "Microsoft.Azure.Amqp": { "type": "Transitive", "resolved": "2.7.0", @@ -269,6 +299,11 @@ "resolved": "10.0.9", "contentHash": "Aq7M8lG6BrHeatqKqncVm9m55ec34k6nnfPRLe/PvGg+b/pAsRM2ejofeKmCLjTXMa+5NGXm382f8CG/D5WDow==" }, + "Microsoft.Bcl.Cryptography": { + "type": "Transitive", + "resolved": "10.0.2", + "contentHash": "LG9Yll3B5aNpxv0+D47g6LiOiKBIlodhcHdQwcYzo8VeexFLGqx5ymetmA2aBRyo9cCcWsQWrFsdbsr8LvmWDw==" + }, "Microsoft.CodeCoverage": { "type": "Transitive", "resolved": "18.8.1", @@ -276,22 +311,34 @@ }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, + "Microsoft.Data.SqlClient.Extensions.Abstractions": { + "type": "Transitive", + "resolved": "7.0.2", + "contentHash": "Zx7z61fG2Nc6LdDn4jA7b5Aj1ABrljkOPRE31RvVUdjF6IgbG60leDUhMCafsnWFgaheiK3iqpLe+kbf5Z5L8Q==", + "dependencies": { + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)" + } + }, + "Microsoft.Data.SqlClient.Internal.Logging": { + "type": "Transitive", + "resolved": "7.0.2", + "contentHash": "iqgYBbGSVy/DIYWjzmQOa964Kn4rs4wW5vg2IamqVK0fQqfTiILVR5hMK27XWqoyONtAZs+VxH354cPJBtSnbg==" + }, "Microsoft.Data.SqlClient.SNI.runtime": { "type": "Transitive", "resolved": "6.0.2", @@ -338,6 +385,21 @@ "Microsoft.SqlServer.Types": "160.1000.6" } }, + "Microsoft.Extensions.AmbientMetadata.Application": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "/FYCIyhRLrDwIg29tB/21/Rp7XMaEP/gWR5Cxyi4GgWcN/v/XXUpU52yhQux0s2SQy1Z0C1wnhptCMvLaaT45Q==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.10", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10" + } + }, + "Microsoft.Extensions.ApiDescription.Server": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "NCWCGiwRwje8773yzPQhvucYnnfeR+ZoB1VRIrIMp4uaeUNw7jvEPHij3HIbwCDuNCrNcphA00KSAR9yD9qmbg==" + }, "Microsoft.Extensions.Caching.Abstractions": { "type": "Transitive", "resolved": "10.0.10", @@ -408,6 +470,14 @@ "Microsoft.Extensions.FileProviders.Physical": "10.0.10" } }, + "Microsoft.Extensions.DependencyInjection.AutoActivation": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "LXwOAsnrflu2ln+Bxj7y3Zc/Pn4HquCCRzW81oOIuRsM8F75TxwA/ZpSFZ5E1+YkVpndz7BcHY4ThFSjjA4vbQ==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10" + } + }, "Microsoft.Extensions.DependencyModel": { "type": "Transitive", "resolved": "10.0.10", @@ -432,6 +502,14 @@ "Microsoft.Extensions.Options": "10.0.10" } }, + "Microsoft.Extensions.Diagnostics.ExceptionSummarization": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "tXmzwQeWgiycaLOtvSFnz0TPkJxXTyZrkwSVPTr83FgSiMj3BD/8eIbvrpGi5rzc2AgfKyegKo1ntJlJFey1Zg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10" + } + }, "Microsoft.Extensions.Diagnostics.HealthChecks": { "type": "Transitive", "resolved": "10.0.10", @@ -471,6 +549,48 @@ "resolved": "10.0.10", "contentHash": "jSOCVxEwCd4Aq925kJVz1kSO1EpX2OHYKL04qVREXkDU7Ce3pVDdHPYm+fEy8y/th2kJf/DAstRHpJAqoNWP8w==" }, + "Microsoft.Extensions.Http": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "DuEBLw2y7ZBfilnaJtlge8f2M49932v43t7j1InceXVjcZzxNrSEkobYXdgZkXuPFnFbKcbWpAS+fZgYEW1BhA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", + "Microsoft.Extensions.Diagnostics": "10.0.10", + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.Extensions.Logging.Abstractions": "10.0.10", + "Microsoft.Extensions.Options": "10.0.10" + } + }, + "Microsoft.Extensions.Http.Diagnostics": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "2pYnolFkigH7N6A5WHdGx93iZ8dIhrBnu4ZkjvB6RwbHzYmIy/iXVe12pdrViNDdeBSmKZ5FA9YP/xhwLT7q7A==", + "dependencies": { + "Microsoft.Extensions.Http": "10.0.10", + "Microsoft.Extensions.Telemetry": "10.8.0" + } + }, + "Microsoft.Extensions.Http.Polly": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "ceKyX9V/C+mtapMfXQ0ClKRkxDHAW2AAJoDgTcsh7UdOteCQKB5wRTFgHJ82Lh/3O+UlPA47LRGEZkRxtz/lCA==", + "dependencies": { + "Microsoft.Extensions.Http": "10.0.10", + "Polly": "7.2.4", + "Polly.Extensions.Http": "3.0.0" + } + }, + "Microsoft.Extensions.Http.Resilience": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "XtbZyYVxSNn1Aj2Z0PA8yauS12hPszTWDZ3GtZ5Vww7Ai3d8Pm841jMBnTvoTf1t9mRf3eSB38V5KUWxH6/4oQ==", + "dependencies": { + "Microsoft.Extensions.Http.Diagnostics": "10.8.0", + "Microsoft.Extensions.ObjectPool": "10.0.10", + "Microsoft.Extensions.Resilience": "10.8.0" + } + }, "Microsoft.Extensions.Logging.Configuration": { "type": "Transitive", "resolved": "10.0.10", @@ -554,6 +674,31 @@ "resolved": "10.0.10", "contentHash": "5wu/GrYVd8mG2DVUw3vFJzF+O336TyTGg/Kmcgw9bfwYhCoFiV5lR5QeEmKecJyrW4W54nMfD3p3589E8a7czQ==" }, + "Microsoft.Extensions.Resilience": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "RH/gv0ZcCnQ3d30lxb8+T2o661TwZq/K5eMwp488goQLX1QYqWN3i8L8XlN9DhrqP2Zcf0EtsWaKpJO3yHDUTw==", + "dependencies": { + "Microsoft.Extensions.Diagnostics": "10.0.10", + "Microsoft.Extensions.Diagnostics.ExceptionSummarization": "10.8.0", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10", + "Microsoft.Extensions.Telemetry.Abstractions": "10.8.0", + "Polly.Extensions": "8.4.2", + "Polly.RateLimiting": "8.4.2" + } + }, + "Microsoft.Extensions.Telemetry": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "IIWjDZguUJt6yNld9J4V88xuOUzpC76wBwfnRJLRmacmyTTl9jA8+KP5PuHPi7CKz/Vk/q+lQYmobiopuzapzA==", + "dependencies": { + "Microsoft.Extensions.AmbientMetadata.Application": "10.8.0", + "Microsoft.Extensions.DependencyInjection.AutoActivation": "10.8.0", + "Microsoft.Extensions.Logging.Configuration": "10.0.10", + "Microsoft.Extensions.ObjectPool": "10.0.10", + "Microsoft.Extensions.Telemetry.Abstractions": "10.8.0" + } + }, "Microsoft.Extensions.Telemetry.Abstractions": { "type": "Transitive", "resolved": "10.8.0", @@ -584,50 +729,57 @@ }, "Microsoft.IdentityModel.Abstractions": { "type": "Transitive", - "resolved": "8.14.0", - "contentHash": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==" + "resolved": "8.19.2", + "contentHash": "HJbo/lnSfNHUfphPRT910poQc4T2/9+8svFLvzuaYHGAOJ2Tu+oEDqpX0BVP3BJ4OuUM1kylEKyaiX2fCAK3Cw==" }, "Microsoft.IdentityModel.JsonWebTokens": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "3Izi75UCUssvo8LPx3OVnEeZay58qaFicrtSnbtUt7q8qQi0gy46gh4V8VUTkMVMKXV6VMyjBVmeNNgeCUJuIw==", + "resolved": "8.19.2", + "contentHash": "ui3fuBT4fs8kdKfBthI4NzLYIBIneEVS8UrL1JVBzAn80UiKmngBBi0BEByE7n/9c+EElcfFlCMFFTqpkBSLNA==", "dependencies": { - "Microsoft.IdentityModel.Tokens": "7.7.1" + "Microsoft.IdentityModel.Tokens": "8.19.2" } }, "Microsoft.IdentityModel.Logging": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "BZNgSq/o8gsKExdYoBKPR65fdsxW0cTF8PsdqB8y011AGUJJW300S/ZIsEUD0+sOmGc003Gwv3FYbjrVjvsLNQ==", + "resolved": "8.19.2", + "contentHash": "r5YLDIxGOnkVJHrqXv/iD1FM1CgGrQOdriXuvuWvTPmKbnGANhEysq9XKmN6IHjf2a+9bAGEpnoRBsAQlvJU5w==", "dependencies": { - "Microsoft.IdentityModel.Abstractions": "7.7.1" + "Microsoft.IdentityModel.Abstractions": "8.19.2" } }, "Microsoft.IdentityModel.Protocols": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "h+fHHBGokepmCX+QZXJk4Ij8OApCb2n2ktoDkNX5CXteXsOxTHMNgjPGpAwdJMFvAL7TtGarUnk3o97NmBq2QQ==", + "resolved": "8.19.2", + "contentHash": "sGxSsSrZXNmca6D+jHH2rVRyo2nNRd/g4H9CFbPmLLq0xgoH1U0orLWE5minfijw7+zq49tBs7txenbfAErRoQ==", "dependencies": { - "Microsoft.IdentityModel.Tokens": "7.7.1" + "Microsoft.IdentityModel.Tokens": "8.19.2" } }, "Microsoft.IdentityModel.Protocols.OpenIdConnect": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "yT2Hdj8LpPbcT9C9KlLVxXl09C8zjFaVSaApdOwuecMuoV4s6Sof/mnTDz/+F/lILPIBvrWugR9CC7iRVZgbfQ==", + "resolved": "8.16.0", + "contentHash": "h4yVXyJsEBBX5lg2G5ftMsi5JzcNEGAzrNphA6DQ6eOd8P0s+cDCOyPwVTYLePZvJL5unbPvYIvzrbTXzFjXnQ==", "dependencies": { - "Microsoft.IdentityModel.Protocols": "7.7.1", - "System.IdentityModel.Tokens.Jwt": "7.7.1" + "Microsoft.IdentityModel.Protocols": "8.16.0", + "System.IdentityModel.Tokens.Jwt": "8.16.0" } }, "Microsoft.IdentityModel.Tokens": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "fQ0VVCba75lknUHGldi3iTKAYUQqbzp1Un8+d9cm9nON0Gs8NAkXddNg8iaUB0qi/ybtAmNWizTR4avdkCJ9pQ==", + "resolved": "8.19.2", + "contentHash": "GtPC1S02uH1gOO4fQ+zRysIicKmEXaYFP8PIkdJYXqMyruYhopre4ozVHp0XiDSA0+GJvOZH9prxCPvgBMg4Ww==", "dependencies": { - "Microsoft.IdentityModel.Logging": "7.7.1" + "Microsoft.Bcl.Cryptography": "10.0.2", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.IdentityModel.Logging": "8.19.2" } }, + "Microsoft.OpenApi": { + "type": "Transitive", + "resolved": "2.7.5", + "contentHash": "0FA67RSnRM4tcBKqiqVu/HPdZ9+QOKbmeRjxRUGTCjPU4C0bmUhd97Dso7Yild5P7nOV6GxJ2xrK0Kv/O9xp0w==" + }, "Microsoft.SqlServer.Server": { "type": "Transitive", "resolved": "1.0.0", @@ -715,11 +867,257 @@ "Microsoft.Extensions.Logging.Abstractions": "10.0.0" } }, + "OpenIddict": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "Dih/QGs3ptgvsioSOdvn/6KMy3el5ImMimp/9SV9VX/FqTT6CxBOGoxaukfJeVqgcxQrgge1vQvFp3kWtgOKGg==", + "dependencies": { + "OpenIddict.Abstractions": "7.6.0", + "OpenIddict.Client": "7.6.0", + "OpenIddict.Client.SystemIntegration": "7.6.0", + "OpenIddict.Client.SystemNetHttp": "7.6.0", + "OpenIddict.Client.WebIntegration": "7.6.0", + "OpenIddict.Core": "7.6.0", + "OpenIddict.Server": "7.6.0", + "OpenIddict.Validation": "7.6.0", + "OpenIddict.Validation.ServerIntegration": "7.6.0", + "OpenIddict.Validation.SystemNetHttp": "7.6.0" + } + }, + "OpenIddict.Abstractions": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "Fp2MUvm6wwsqk6+ieUM/3MTMlbCL1zwSXixM0xC22FgKcl5EQB7E0vV38IRI/rSF8UGgvC/AOjMOF6FoFyks8g==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", + "Microsoft.Extensions.Primitives": "10.0.10", + "Microsoft.IdentityModel.Tokens": "8.19.2" + } + }, + "OpenIddict.Client": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "X+Sg1wRKeVOeayJuZ4/0M74zXRENvXOAl2JRPF4MaEOoS9Pj6WCWMLriWS0wwEC1ODxQmLaG3tYZfcdC9hU40g==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.IdentityModel.JsonWebTokens": "8.19.2", + "Microsoft.IdentityModel.Protocols": "8.19.2", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.Client.AspNetCore": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "XjEj75mTkvMn1sj4jONWLTRK6KzeY/Hou8218nwLnJnqYmKJ1th7UDfadNTb530KSC+WPLxfvi7grzIv0xzebw==", + "dependencies": { + "OpenIddict.Client": "7.6.0" + } + }, + "OpenIddict.Client.DataProtection": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ZVhuFSzPbAaZkiRRrr77oyJnciWhytPnTZ1ByaCGfDx1b977crbcJww2asfkMpgNzcbWWAR6SgcS05hklsQflw==", + "dependencies": { + "Microsoft.AspNetCore.DataProtection": "10.0.10", + "OpenIddict.Client": "7.6.0", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "OpenIddict.Client.SystemIntegration": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "yqnyQH6CG46+y2Rp4UcIOXNcWgDvITW43PULI9sr6xYCS34J/kO6GU6fhwOGUfUJjRdOis3Xj00WwUZxZUQ5ZQ==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", + "OpenIddict.Client": "7.6.0" + } + }, + "OpenIddict.Client.SystemNetHttp": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "HsiL7rCRCFd7D1uvi6+HLmlkw9ykbLsEJ1GJMttuLB3/C8/LcqX+wHxr1W/GXl2YXhleNMW21I5AeVtGnfd9tg==", + "dependencies": { + "Microsoft.Extensions.Http.Polly": "10.0.10", + "Microsoft.Extensions.Http.Resilience": "10.8.0", + "OpenIddict.Client": "7.6.0" + } + }, + "OpenIddict.Client.WebIntegration": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "vJzIkHZwjB8vp6Hhxa8s9ruh/L+ZgpJUszGVP+kQQoqDQ8yZygbl0xWKuAHQ4OCIk3FTeSib9xH8uetm47YPgg==", + "dependencies": { + "OpenIddict.Client": "7.6.0", + "OpenIddict.Client.SystemNetHttp": "7.6.0" + } + }, + "OpenIddict.EntityFrameworkCore.Models": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "DrWB0dLfsg3mZhWABAlqSZKXin4Q4Pn8V4S7/1JxP5T/7Ncl0y45rM9L2EWv/zdydaiTOFKi4jRDBZAgBxUjaQ==" + }, + "OpenIddict.Server": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "0c7wlRYcP2Smgjp3PWyyojZ972H26otp6irW/WAFEbg4ZylcUvtlw0lkrCr/K8s5lAnYZwrpyzguwrJhXGKPVg==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.IdentityModel.JsonWebTokens": "8.19.2", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.Server.AspNetCore": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "m2Hk2R4gaTlEYBvNHz2fvIr38p1agiR2nW2gi5WMgSByFHxeEK5uhxqVGdSB2kEHRtp9kza/zBWBgIM4TdcVqw==", + "dependencies": { + "OpenIddict.Server": "7.6.0" + } + }, + "OpenIddict.Server.DataProtection": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ScGEt6uNuk2MZ/6DzVAMi/QegZulkvYKPRMrRu5/8/uI8P5o5XbEhEvancFx9YmBHL1uGE8SIByfTfxJx8kefA==", + "dependencies": { + "Microsoft.AspNetCore.DataProtection": "10.0.10", + "OpenIddict.Server": "7.6.0", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "OpenIddict.Validation": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ovzLQJ31uWZpgLdRVuD9Gmu8wxvhvbXW32MFTglFblhfqRwj/hMcEGOo8hdl+ir3QpDr9NUDAORA+v3S7xc6IA==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.IdentityModel.JsonWebTokens": "8.19.2", + "Microsoft.IdentityModel.Protocols": "8.19.2", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.Validation.AspNetCore": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "oby5/Ymdxd+g1TGtyTGrcK5J3/NSI80aw2CJgULwwIxraiCjiIfexrBjCxkPchWqPNFe6aAdGJ/Jz6amHNfrzg==", + "dependencies": { + "OpenIddict.Validation": "7.6.0" + } + }, + "OpenIddict.Validation.DataProtection": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ckC2xcPeJ/kLSyJXNOmpmFLnA1qM6zC8RR5d2pUtoToA6caMikebkL3NmRjBgxBRVvFmi7x9lMJ7+YmrI+uAlg==", + "dependencies": { + "Microsoft.AspNetCore.DataProtection": "10.0.10", + "OpenIddict.Validation": "7.6.0", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "OpenIddict.Validation.ServerIntegration": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "0bHhKsMV45UMPM5Phh51+g/tMUJNRzOWe6p/5opKeMQV8XoO3y3J9o/ZbfZ0j4qTTbQ7pqzEKSZaS4cGs0B3nQ==", + "dependencies": { + "OpenIddict.Server": "7.6.0", + "OpenIddict.Validation": "7.6.0" + } + }, + "OpenIddict.Validation.SystemNetHttp": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "N3MHlVaik22apnhxCTsqP6TjwRB/h874+5ks/m1+wKmOWqMyJ5UjIaZCvUOrDSMtDiEVted8qkjEJRzjAe0rGQ==", + "dependencies": { + "Microsoft.Extensions.Http.Polly": "10.0.10", + "Microsoft.Extensions.Http.Resilience": "10.8.0", + "OpenIddict.Validation": "7.6.0" + } + }, + "OpenTelemetry": { + "type": "Transitive", + "resolved": "1.18.0", + "contentHash": "13AKxycK+olOLe061MjliPTNBR/DUkjyRr0b9zwUhKyMjFS8lXS7G31R85rkbM55up2YFmdykWdAw2giBDJpiQ==", + "dependencies": { + "Microsoft.Extensions.Configuration.EnvironmentVariables": "10.0.0", + "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Configuration": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "1.18.0" + } + }, + "OpenTelemetry.Api.ProviderBuilderExtensions": { + "type": "Transitive", + "resolved": "1.18.0", + "contentHash": "io6A6PJFp3vIObRGf6oPjdHsdglkinXt/0SpTDJHrVnsLxUtOzwh/QwTsnhBJ43wJ6QcGMkyNzsSSY8XEB1Q5Q==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "OpenTelemetry.Api": "1.18.0" + } + }, "Polly.Core": { "type": "Transitive", "resolved": "8.7.0", "contentHash": "BS2t+nsBer16PIebCEPNBK5fgMisADQyRCd7K+BgkMWpFmSaiYE+rVVNpFhGRqUkJmNSLmw0uCNzHHWfgml28Q==" }, + "Polly.Extensions": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "GZ9vRVmR0jV2JtZavt+pGUsQ1O1cuRKG7R7VOZI6ZDy9y6RNPvRvXK1tuS4ffUrv8L0FTea59oEuQzgS0R7zSA==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "Polly.Core": "8.4.2" + } + }, + "Polly.Extensions.Http": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "drrG+hB3pYFY7w1c3BD+lSGYvH2oIclH8GRSehgfyP5kjnFnHKQuuBhuHLv+PWyFuaTDyk/vfRpnxOzd11+J8g==", + "dependencies": { + "Polly": "7.1.0" + } + }, + "Polly.RateLimiting": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "ehTImQ/eUyO07VYW2WvwSmU9rRH200SKJ/3jku9rOkyWE0A2JxNFmAVms8dSn49QLSjmjFRRSgfNyOgr/2PSmA==", + "dependencies": { + "Polly.Core": "8.4.2", + "System.Threading.RateLimiting": "8.0.0" + } + }, + "runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "A8v6PGmk+UGbfWo5Ixup0lPM4swuSwOiayJExZwKIOjTlFFQIsu3QnDXECosBEyrWSPryxBVrdqtJyhK3BaupQ==", + "dependencies": { + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": "4.4.0" + } + }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, + "Serilog.Extensions.Logging": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "vx0kABKl2dWbBhhqAfTOk53/i8aV/5VaT3a6il9gn72Wqs2pM7EK2OB6No6xdqK2IaY6Zf9gdjLuK9BVa2rT+Q==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.0", + "Serilog": "4.2.0" + } + }, "SQLitePCLRaw.bundle_e_sqlite3": { "type": "Transitive", "resolved": "2.1.11", @@ -742,6 +1140,27 @@ "SQLitePCLRaw.core": "2.1.11" } }, + "Swashbuckle.AspNetCore.Swagger": { + "type": "Transitive", + "resolved": "10.2.3", + "contentHash": "1jUUs3WQnrS0FUtaZPLSy1yYMEwS1zlvDmvQ2/eldPHUANX0LJSLVZecCMgSMdeGiRqeaRrIXLtSz++TCiTMww==", + "dependencies": { + "Microsoft.OpenApi": "2.7.5" + } + }, + "Swashbuckle.AspNetCore.SwaggerGen": { + "type": "Transitive", + "resolved": "10.2.3", + "contentHash": "y7t4coDRAeFYChmvlMRiH2OjbiRrm9AVIDgt17fQfs3x9PVAI5PiwWYOhg+4F13R4Q36WDc9lqfoOnNa3tNbGg==", + "dependencies": { + "Swashbuckle.AspNetCore.Swagger": "10.2.3" + } + }, + "Swashbuckle.AspNetCore.SwaggerUI": { + "type": "Transitive", + "resolved": "10.2.3", + "contentHash": "nthWONRs/FJ4yyG206g1cC52WEG8EqrjuMWjGdR+5XG7lbjFto6NqcI9EMICgVFom/UivIjUVwI76ZHbHwTPfQ==" + }, "System.ClientModel": { "type": "Transitive", "resolved": "1.14.0", @@ -760,11 +1179,11 @@ }, "System.Configuration.ConfigurationManager": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "vPinosRgEk1CGjohbv0pDuz6gPprkWo5xvBTjOJjks5JOgOEWvPndq5NngGxiTcBcy1+k9GwzZ1c3Bp2fU5ezw==", + "resolved": "9.0.13", + "contentHash": "GbBrJq9S/gYpHzm7Pxx6Y5tDyfSfyxW6tlP5oiKJV38uf19Wp+GIIAnWfyL1zmNiz1+EjwVapw2WkBFvvqKQzg==", "dependencies": { - "System.Diagnostics.EventLog": "9.0.11", - "System.Security.Cryptography.ProtectedData": "9.0.11" + "System.Diagnostics.EventLog": "9.0.13", + "System.Security.Cryptography.ProtectedData": "9.0.13" } }, "System.Diagnostics.EventLog": { @@ -774,11 +1193,11 @@ }, "System.IdentityModel.Tokens.Jwt": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "rQkO1YbAjLwnDJSMpRhRtrc6XwIcEOcUvoEcge+evurpzSZM3UNK+MZfD3sKyTlYsvknZ6eJjSBfnmXqwOsT9Q==", + "resolved": "8.16.0", + "contentHash": "rrs2u7DRMXQG2yh0oVyF/vLwosfRv20Ld2iEpYcKwQWXHjfV+gFXNQsQ9p008kR9Ou4pxBs68Q6/9zC8Gi1wjg==", "dependencies": { - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Tokens": "7.7.1" + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Tokens": "8.16.0" } }, "System.IO.Hashing": { @@ -801,13 +1220,21 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "System.Security.Cryptography.ProtectedData": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "s8yUYuYYu+PAwvBdhLG1KyrGrk9gkYeuPxfAsXsTqqWyepwSyEw8hAaflW4nO98NG52YpYI1am2+9o+79h2RtQ==" + "resolved": "9.0.13", + "contentHash": "t8S9IDpjJKsLpLkeBdW8cWtcPyYqrGu93Dej1RO6WwuL/lkFSqWlan3rMJfortqz1mRIh+sys2AFsSA6jWJ3Jg==" + }, + "System.Security.Cryptography.Xml": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "Mz6Y+s+uMQKj1H2BUF0OhlmaOQkLgSG34/IrUaBDirYBQ6bgwcFvO/XtXWcoDlBLFoFB0uKqDNhybHOd+fQK1A==", + "dependencies": { + "System.Security.Cryptography.Pkcs": "10.0.10" + } }, "System.Threading.RateLimiting": { "type": "Transitive", @@ -871,6 +1298,33 @@ "xunit.v3.runner.common": "[3.2.2]" } }, + "Backbone.BuildingBlocks.API": { + "type": "Project", + "dependencies": { + "Asp.Versioning.Mvc": "[10.0.1, 10.0.1]", + "Asp.Versioning.Mvc.ApiExplorer": "[10.0.1, 10.0.1]", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Module": "[1.0.0, )", + "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", + "Backbone.Tooling": "[1.0.0, )", + "DotNetDiag.HealthChecks.NpgSql": "[10.0.10, 10.0.10]", + "DotNetDiag.HealthChecks.SqlServer": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.Relational": "[10.0.10, 10.0.10]", + "OpenTelemetry.Exporter.OpenTelemetryProtocol": "[1.18.0, )", + "OpenTelemetry.Extensions.Hosting": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.AspNetCore": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.EntityFrameworkCore": "[1.18.0-beta.1, )", + "OpenTelemetry.Instrumentation.Http": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.Runtime": "[1.18.0, 1.18.0]", + "Polly": "[8.7.0, 8.7.0]", + "Serilog.Enrichers.Sensitive": "[2.1.0, 2.1.0]", + "Serilog.Extensions.Hosting": "[10.0.0, 10.0.0]", + "Swashbuckle.AspNetCore": "[10.2.3, 10.2.3]", + "System.Data.SqlClient": "[4.9.1, 4.9.1]" + } + }, "Backbone.BuildingBlocks.Application": { "type": "Project", "dependencies": { @@ -928,6 +1382,15 @@ "Serilog": "[4.4.0, 4.4.0]" } }, + "Backbone.BuildingBlocks.Module": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Microsoft.Extensions.Configuration.Abstractions": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[10.0.10, 10.0.10]", + "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" + } + }, "Backbone.Common.Infrastructure": { "type": "Project", "dependencies": { @@ -938,6 +1401,13 @@ "Polly": "[8.7.0, 8.7.0]" } }, + "Backbone.Crypto": { + "type": "Project", + "dependencies": { + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", + "NSec.Cryptography": "[26.4.0, 26.4.0]" + } + }, "Backbone.DevelopmentKit.Identity": { "type": "Project", "dependencies": { @@ -945,16 +1415,83 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Tokens.Application": { + "Backbone.Modules.Announcements.Contracts": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )" + } + }, + "Backbone.Modules.Devices.Application": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Tokens.Domain": "[1.0.0, )", + "Backbone.Crypto": "[1.0.0, )", + "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", + "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", + "FluentValidation": "[12.1.1, 12.1.1]", "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "OpenIddict.Core": "[7.6.0, 7.6.0]", + "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", "Polly": "[8.7.0, 8.7.0]" } }, + "Backbone.Modules.Devices.Contracts": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )" + } + }, + "Backbone.Modules.Devices.Domain": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )", + "Backbone.DevelopmentKit.Identity": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Tooling": "[1.0.0, )", + "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]" + } + }, + "Backbone.Modules.Devices.Infrastructure": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", + "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "FirebaseAdmin": "[3.6.0, 3.6.0]", + "JWT": "[11.1.0, 11.1.0]", + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.Relational": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.DependencyInjection": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Identity.Core": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Identity.Stores": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Logging": "[10.0.10, 10.0.10]", + "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, 10.0.3]", + "OpenIddict.AspNetCore": "[7.6.0, 7.6.0]", + "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", + "Polly": "[8.7.0, 8.7.0]" + } + }, + "Backbone.Modules.Synchronization.Contracts": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )" + } + }, + "Backbone.Modules.Tokens.Abstractions": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Application": "[1.0.0, )", + "Backbone.Modules.Tokens.Domain": "[1.0.0, )" + } + }, "Backbone.Modules.Tokens.Contracts": { "type": "Project", "dependencies": { @@ -972,9 +1509,9 @@ "Backbone.Modules.Tokens.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Tokens.Application": "[1.0.0, )", + "Backbone.Modules.Tokens.Abstractions": "[1.0.0, )", "Backbone.Modules.Tokens.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -982,6 +1519,35 @@ "Polly": "[8.7.0, 8.7.0]" } }, + "Backbone.Modules.Tokens.Infrastructure.Database.Postgres": { + "type": "Project", + "dependencies": { + "Backbone.Modules.Tokens.Infrastructure": "[1.0.0, )", + "Polly": "[8.7.0, 8.7.0]" + } + }, + "Backbone.Modules.Tokens.Infrastructure.Database.SqlServer": { + "type": "Project", + "dependencies": { + "Backbone.Modules.Tokens.Infrastructure": "[1.0.0, )", + "Polly": "[8.7.0, 8.7.0]" + } + }, + "Backbone.Modules.Tokens.Module": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.API": "[1.0.0, )", + "Backbone.BuildingBlocks.Module": "[1.0.0, )", + "Backbone.Modules.Tokens.Abstractions": "[1.0.0, )", + "Backbone.Modules.Tokens.Domain": "[1.0.0, )", + "Backbone.Modules.Tokens.Infrastructure": "[1.0.0, )", + "Backbone.Modules.Tokens.Infrastructure.Database.Postgres": "[1.0.0, )", + "Backbone.Modules.Tokens.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "Polly": "[8.7.0, 8.7.0]", + "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" + } + }, "Backbone.Tooling": { "type": "Project", "dependencies": { @@ -1003,6 +1569,24 @@ "Shouldly": "[4.3.0, 4.3.0]" } }, + "Asp.Versioning.Mvc": { + "type": "CentralTransitive", + "requested": "[10.0.1, 10.0.1]", + "resolved": "10.0.1", + "contentHash": "OqoFPKKxXkNmw62H3CgXkPrf1L4PPwwyYr9QMP6itt/khKTIayqaHhK6F2e3jt6KHc4s23cWAUbu+Z5GPEeMaw==", + "dependencies": { + "Asp.Versioning.Http": "10.0.1" + } + }, + "Asp.Versioning.Mvc.ApiExplorer": { + "type": "CentralTransitive", + "requested": "[10.0.1, 10.0.1]", + "resolved": "10.0.1", + "contentHash": "ylPZe+LheFp0pt2tSMq2pPeGAkMLqWVOn5+1/xOB/eUj889n9b35Sny08bSQ0ziAGIFjp3BBTXaYsWJjRoFV4A==", + "dependencies": { + "Asp.Versioning.Mvc": "10.0.1" + } + }, "Autofac": { "type": "CentralTransitive", "requested": "[9.3.2, 9.3.2]", @@ -1039,12 +1623,44 @@ "Azure.Storage.Common": "12.28.0" } }, + "BouncyCastle.Cryptography": { + "type": "CentralTransitive", + "requested": "[2.7.0, 2.7.0]", + "resolved": "2.7.0", + "contentHash": "U+12df8UEWHgBi04YVf/Lgi2dy3SItlIYvHjjEVa/BngCQIzDCDRBk50DDByCfDvSbe5pRNFr3b7UrVK2kMcLw==" + }, + "CSharpFunctionalExtensions": { + "type": "CentralTransitive", + "requested": "[3.7.0, 3.7.0]", + "resolved": "3.7.0", + "contentHash": "eMZp8tc88O96eEFutiIskF3LE8lFY3fjbNRGfNa1ca0CD9sB8A00r5ltyYDih/7UFdJdVbhVq7tGeHI8xj6DlQ==" + }, "Dapper": { "type": "CentralTransitive", "requested": "[2.1.79, 2.1.79]", "resolved": "2.1.79", "contentHash": "8YijbzgTfmqmQOnVNorYM6K++pxqnW3nJ4aC1sRHzxUA2CcuoJ9gsTem3kgBnPRMc38zZHl4Esb6hAezXIEEuw==" }, + "DotNetDiag.HealthChecks.NpgSql": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "lxb6wQ1YC/TpvZMVgbyeLP5dYOg/RJWLg1xlR+I0FeyfyMmukppKdwzBOrKRtZ8FHG3nV9xrVTaPdwRw0yL4Vw==", + "dependencies": { + "Microsoft.Extensions.Diagnostics.HealthChecks": "10.0.9", + "Npgsql": "10.0.3" + } + }, + "DotNetDiag.HealthChecks.SqlServer": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "6t2HP5VQR0GZDJiw8iZvzOTRC+84irUeaUuWvcqcnc4K5Mzrn/A9V0ucoyjySXOF1vGkdTHjlJMknJVYC9c2Hg==", + "dependencies": { + "Microsoft.Data.SqlClient": "7.0.2", + "Microsoft.Extensions.Diagnostics.HealthChecks": "10.0.9" + } + }, "EFCore.BulkExtensions.Core": { "type": "CentralTransitive", "requested": "[10.0.1, 10.0.1]", @@ -1078,6 +1694,16 @@ "NetTopologySuite.IO.SqlServerBytes": "2.1.0" } }, + "FirebaseAdmin": { + "type": "CentralTransitive", + "requested": "[3.6.0, 3.6.0]", + "resolved": "3.6.0", + "contentHash": "aP8UWyQYACDOZqnHN9WB77TS0DlB8kVj8/HB7evUaAhAgPJQ9y4NmISJ3kkYkWBG5va3PHvYN5H+ZDBhABSEFQ==", + "dependencies": { + "Google.Api.Gax.Rest": "4.13.1", + "Google.Apis.Auth": "1.73.0" + } + }, "FluentValidation": { "type": "CentralTransitive", "requested": "[12.1.1, 12.1.1]", @@ -1114,6 +1740,15 @@ "Google.Apis.Storage.v1": "[1.74.0.4115, 2.0.0)" } }, + "JWT": { + "type": "CentralTransitive", + "requested": "[11.1.0, 11.1.0]", + "resolved": "11.1.0", + "contentHash": "GbmNr2WUyY3Ma0rwuvmTDnE5tIV8gFNDWeua9Fn54HwrpvGfwQzi7HtEAnMgI4quf4MuJr0iwPkt9sKrNCq1Tg==", + "dependencies": { + "Newtonsoft.Json": "13.0.4" + } + }, "MediatR": { "type": "CentralTransitive", "requested": "[12.5.0, 12.5.0]", @@ -1130,6 +1765,16 @@ "resolved": "2.0.1", "contentHash": "FYv95bNT4UwcNA+G/J1oX5OpRiSUxteXaUt2BJbRSdRNiIUNbggJF69wy6mnk2wYToaanpdXZdCwVylt96MpwQ==" }, + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "/ZV8RMWbWob1ZGsF5f1wVJNNlFLPKCf2ba834PpQiNhirVQ/ksup5SujtuUsvByHEZgv+9dmjC/4Xdi75axmXQ==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "10.0.10", + "Microsoft.Extensions.Identity.Stores": "10.0.10" + } + }, "Microsoft.Data.Sqlite.Core": { "type": "CentralTransitive", "requested": "[10.0.10, 10.0.10]", @@ -1345,6 +1990,17 @@ "Microsoft.Extensions.Options": "10.0.10" } }, + "Microsoft.Extensions.Identity.Stores": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "WMG/9wPJPnwU2w1R/WPLO/RL2UpGpBhw9z6odAAUkFdZypzzXl620FJWEoPpuBUq6Q4GYgMg0FQVRCO6gO4MQQ==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "10.0.10", + "Microsoft.Extensions.Identity.Core": "10.0.10", + "Microsoft.Extensions.Logging": "10.0.10" + } + }, "Microsoft.Extensions.Logging": { "type": "CentralTransitive", "requested": "[10.0.10, 10.0.10]", @@ -1386,12 +2042,118 @@ "Npgsql": "10.0.3" } }, + "NSec.Cryptography": { + "type": "CentralTransitive", + "requested": "[26.4.0, 26.4.0]", + "resolved": "26.4.0", + "contentHash": "0vsCtY5f+YgQROiWNqzgWp+l2pddfk9FkWoGV/bEo0MuEYPKlJWuoA8aOfO6qp3f+EnObKE3zSJhn1PspJeJVg==", + "dependencies": { + "libsodium": "[1.0.22, 1.0.23)" + } + }, + "OpenIddict.AspNetCore": { + "type": "CentralTransitive", + "requested": "[7.6.0, 7.6.0]", + "resolved": "7.6.0", + "contentHash": "FblhXU1SzSjL1nPsK5kqi+uMofNYLg1gwBU/qqc8diOafTv/6jLOhpCzzk+wISR8OnkS7H3oFMcTjy8aaTm8ww==", + "dependencies": { + "OpenIddict": "7.6.0", + "OpenIddict.Client.AspNetCore": "7.6.0", + "OpenIddict.Client.DataProtection": "7.6.0", + "OpenIddict.Server.AspNetCore": "7.6.0", + "OpenIddict.Server.DataProtection": "7.6.0", + "OpenIddict.Validation.AspNetCore": "7.6.0", + "OpenIddict.Validation.DataProtection": "7.6.0" + } + }, + "OpenIddict.Core": { + "type": "CentralTransitive", + "requested": "[7.6.0, 7.6.0]", + "resolved": "7.6.0", + "contentHash": "LJQ+GsSY6Nfw5FZ4NzCvL2kwYU1GNz6ygiUNGvqcKP0qXwstU59RDAjNKTCGkPPq4TQGnETqr4UsJgyK+AFxeA==", + "dependencies": { + "Microsoft.Extensions.Caching.Memory": "10.0.10", + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.Extensions.Options": "10.0.10", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[7.6.0, 7.6.0]", + "resolved": "7.6.0", + "contentHash": "BWbgvgKbDcg3EuNJvmXtUzeLxg9c4bU+PfDnZetCjGwcnlCsWcASkjVexKKevtUgWxRWJTQFRchMA09OKmOF/w==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "10.0.10", + "OpenIddict.Core": "7.6.0", + "OpenIddict.EntityFrameworkCore.Models": "7.6.0" + } + }, "OpenTelemetry.Api": { "type": "CentralTransitive", "requested": "[1.18.0, )", "resolved": "1.18.0", "contentHash": "Dhzm5oughIY9EWckt2J1yXcEbXpki5WCL2q7prJoYxzH6C7jdkfGtPMTkUVZZ4AhjJKzQnlC+kLSIlmIVwC4Vw==" }, + "OpenTelemetry.Exporter.OpenTelemetryProtocol": { + "type": "CentralTransitive", + "requested": "[1.18.0, )", + "resolved": "1.18.0", + "contentHash": "Et3WAviooKGObZjUZN8d6eTsdJs1YM3ZoN+KlWSAHksTmHG1nyGi9XGo2wb0fkFMWK0g80FOPdR1njg52Dm+aw==", + "dependencies": { + "OpenTelemetry": "1.18.0" + } + }, + "OpenTelemetry.Extensions.Hosting": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "u+JMA82H65MKwMvd2qUpL8C2qE4Jux2nvX9hmy036UK/Apv2YyIRYCttF/vlX6nMPcAKI8BXkscmL4QG3C69fw==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", + "OpenTelemetry": "1.18.0" + } + }, + "OpenTelemetry.Instrumentation.AspNetCore": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "hBiMXE/CGIAHUOpi0gScNkjHB0L9XbCin5lZObL+dMBl4OmpndnHgxP3JZDnnGtU6qOzdeh8TYUV9f6Jgmmhlw==", + "dependencies": { + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[1.18.0-beta.1, )", + "resolved": "1.18.0-beta.1", + "contentHash": "n15cNXxkSl9G6KD41wZYmujjERYOBiIgn2VeesTFhLtHZ+QQQE3baLrCk7UyzidEw/uGObRcW3SKhqpyMpGe1w==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Http": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "/X57peOOa4a+9V4DSVXbuIWdsAxmU5gsxw8lu+gJU0zuewsYhC9f6qdm8GEW0VvqG9e+gxn0HdVR5G3YHcWDTw==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Runtime": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "McuXGjBJDL/Cown2PxfUQysK98MZG7ZDjO/IKUtaAx8t1m0PB0d+QtJC79RFTVipMhRIwjJiULNOp0OGfZbvwg==", + "dependencies": { + "OpenTelemetry.Api": "[1.18.0, 2.0.0)" + } + }, "RabbitMQ.Client": { "type": "CentralTransitive", "requested": "[7.2.1, 7.2.1]", @@ -1417,6 +2179,25 @@ "resolved": "4.4.0", "contentHash": "ZC6Le3rr4TVJJjS4KsQAesxeF1EhW9qcZmmG7eP5Y2G3+gTGkJEUXkq4+tZNPtyp05I0wWOxnIjwtxFweJsObw==" }, + "Serilog.Enrichers.Sensitive": { + "type": "CentralTransitive", + "requested": "[2.1.0, 2.1.0]", + "resolved": "2.1.0", + "contentHash": "nlaEYMoHjJqncjQgc0Nv4LOIkAwUt4Nvmx3EMNjY4MKC7QqZs9zB0v/NwFnaWzLF7qztc7mna1bjn20Auohu0g==" + }, + "Serilog.Extensions.Hosting": { + "type": "CentralTransitive", + "requested": "[10.0.0, 10.0.0]", + "resolved": "10.0.0", + "contentHash": "E7juuIc+gzoGxgzFooFgAV8g9BfiSXNKsUok9NmEpyAXg2odkcPsMa/Yo4axkJRlh0se7mkYQ1GXDaBemR+b6w==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Serilog": "4.3.0", + "Serilog.Extensions.Logging": "10.0.0" + } + }, "Shouldly": { "type": "CentralTransitive", "requested": "[4.3.0, 4.3.0]", @@ -1438,25 +2219,50 @@ "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "Swashbuckle.AspNetCore": { + "type": "CentralTransitive", + "requested": "[10.2.3, 10.2.3]", + "resolved": "10.2.3", + "contentHash": "8KNh1RWvofdU6DVLyBs4Z/OpUMnmf8oNvJQc0QxpwySRbi42bwLfdVMMrXZWANg5U5KQGQq1xW6r/hlcqw99tQ==", + "dependencies": { + "Microsoft.Extensions.ApiDescription.Server": "10.0.0", + "Swashbuckle.AspNetCore.Swagger": "10.2.3", + "Swashbuckle.AspNetCore.SwaggerGen": "10.2.3", + "Swashbuckle.AspNetCore.SwaggerUI": "10.2.3" + } + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/linux-arm64": { + "libsodium": { + "type": "Transitive", + "resolved": "1.0.22", + "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" + }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1477,6 +2283,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1492,33 +2313,46 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "SQLitePCLRaw.lib.e_sqlite3": { "type": "CentralTransitive", "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/linux-x64": { + "libsodium": { + "type": "Transitive", + "resolved": "1.0.22", + "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" + }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1539,6 +2373,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1554,33 +2403,46 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "SQLitePCLRaw.lib.e_sqlite3": { "type": "CentralTransitive", "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/osx-arm64": { + "libsodium": { + "type": "Transitive", + "resolved": "1.0.22", + "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" + }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1601,6 +2463,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1616,33 +2493,46 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "SQLitePCLRaw.lib.e_sqlite3": { "type": "CentralTransitive", "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/win-x64": { + "libsodium": { + "type": "Transitive", + "resolved": "1.0.22", + "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" + }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1663,6 +2553,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1678,14 +2583,23 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "SQLitePCLRaw.lib.e_sqlite3": { "type": "CentralTransitive", "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } } } From b6e5a41a729031857d95a8a54f2e2f97668d43fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20H=C3=BCgel?= Date: Fri, 2 Oct 2026 08:21:34 +0200 Subject: [PATCH 14/25] refactor: migrate Files module --- .../src/Controllers/Files/FilesController.cs | 149 --- Applications/ConsumerApi/src/Program.cs | 3 +- .../ConsumerApi/src/packages.lock.json | 13 +- .../packages.lock.json | 13 +- .../src/DatabaseMigrator/Dockerfile | 2 +- .../src/DatabaseMigrator/packages.lock.json | 10 +- .../DatabaseMigrator.Tests/packages.lock.json | 10 +- .../src/EventHandlerService/Dockerfile | 2 +- .../src/EventHandlerService/Program.cs | 2 +- .../EventHandlerService/packages.lock.json | 13 +- .../packages.lock.json | 13 +- .../Housekeeper/src/Housekeeper/Dockerfile | 2 +- .../Housekeeper/src/Housekeeper/Executor.cs | 2 +- .../Housekeeper/src/Housekeeper/Program.cs | 2 +- .../src/Housekeeper/packages.lock.json | 13 +- .../src/Job.IdentityDeletion/Dockerfile | 2 +- .../Job.IdentityDeletion.csproj | 1 - .../src/Job.IdentityDeletion/Program.cs | 2 +- .../ServicesExtensions.cs | 2 +- .../Job.IdentityDeletion/packages.lock.json | 13 +- .../packages.lock.json | 14 +- .../packages.lock.json | 14 +- .../Backbone.Tests.ArchUnit.csproj | 3 +- .../VerticalSliceArchitecture.cs | 11 +- Backbone.Tests.ArchUnit/packages.lock.json | 34 +- Backbone.slnx | 4 +- .../BlobConfiguration.cs | 2 +- .../Files.Abstractions.csproj} | 6 - .../IFilesRepository.cs | 2 +- .../packages.lock.json | 10 - .../ExecuteHousekeepingCommand.cs | 5 - .../GetFileMetadata/GetFileMetadataQuery.cs | 9 - .../Persistence/IFilesDbContext.cs | 5 - .../packages.lock.json | 20 +- .../packages.lock.json | 20 +- .../Files.Infrastructure.csproj | 4 +- .../Persistence/Database/FilesDbContext.cs | 4 +- .../Database/IServiceCollectionExtensions.cs | 4 +- .../Database/Repository/FilesRepository.cs | 3 +- .../IServiceCollectionExtensions.cs | 3 +- .../Files.Infrastructure/packages.lock.json | 16 +- .../ApplicationConfiguration.cs | 2 +- .../ApplicationErrors.cs | 2 +- ...ApplicationServiceCollectionExtensions.cs} | 6 +- .../Files/ClaimFileOwnership/Command.cs} | 2 +- .../Files/ClaimFileOwnership/Endpoint.cs | 28 + .../Files}/ClaimFileOwnership/Handler.cs | 4 +- .../Files/ClaimFileOwnership/Request.cs | 2 +- .../Files/ClaimFileOwnership/Response.cs} | 2 +- .../Files}/ClaimFileOwnership/Validator.cs | 2 +- .../Features/Files/CreateFile/Command.cs} | 2 +- .../Features/Files/CreateFile/Endpoint.cs | 62 + .../Features/Files}/CreateFile/Handler.cs | 4 +- .../CreateFile/Http/RequestFormParams.cs | 6 +- .../Http/RequestFormParamsValidator.cs | 6 +- .../Features/Files/CreateFile/Response.cs} | 2 +- .../Features/Files}/CreateFile/Validator.cs | 2 +- .../Features/Files/DeleteFile/Command.cs} | 2 +- .../Features/Files/DeleteFile/Endpoint.cs | 27 + .../Features/Files}/DeleteFile/Handler.cs | 4 +- .../Features/Files}/DeleteFile/Validator.cs | 2 +- .../Files/ExecuteHousekeeping/Command.cs | 5 + .../Files}/ExecuteHousekeeping/Handler.cs | 4 +- .../Features/Files/GetFileContent/Endpoint.cs | 31 + .../Features/Files}/GetFileContent/Handler.cs | 4 +- .../Features/Files/GetFileContent/Query.cs} | 2 +- .../Files/GetFileContent/Response.cs} | 2 +- .../Files}/GetFileContent/Validator.cs | 2 +- .../Files/GetFileMetadata/Endpoint.cs | 28 + .../Files}/GetFileMetadata/Handler.cs | 6 +- .../Features/Files/GetFileMetadata/Query.cs | 9 + .../Files}/GetFileMetadata/Validator.cs | 2 +- .../Files/ListFileMetadata/Endpoint.cs | 35 + .../Files}/ListFileMetadata/Handler.cs | 4 +- .../Features/Files/ListFileMetadata/Query.cs} | 2 +- .../Files/ListFileMetadata/Response.cs} | 4 +- .../Files}/ListFileMetadata/Validator.cs | 2 +- .../RegenerateFileOwnershipToken/Command.cs} | 2 +- .../RegenerateFileOwnershipToken/Endpoint.cs | 28 + .../RegenerateFileOwnershipToken/Handler.cs | 4 +- .../RegenerateFileOwnershipToken/Response.cs} | 2 +- .../RegenerateFileOwnershipToken/Validator.cs | 2 +- .../Features/Files/Shared}/FileMetadataDTO.cs | 2 +- .../ValidateFileOwnershipToken/Endpoint.cs | 29 + .../ValidateFileOwnershipToken/Handler.cs | 4 +- .../Http/RequestBody.cs | 2 +- .../ValidateFileOwnershipToken/Query.cs} | 2 +- .../ValidateFileOwnershipToken/Response.cs} | 2 +- .../ValidateFileOwnershipToken/Validator.cs | 2 +- .../AnonymizeCreatedByOfFiles/Command.cs} | 2 +- .../AnonymizeCreatedByOfFiles/Handler.cs | 4 +- .../AnonymizeCreatedByOfFiles/Validator.cs | 2 +- .../DeleteFilesOfIdentity/Command.cs} | 2 +- .../DeleteFilesOfIdentity/Handler.cs | 4 +- .../DeleteFilesOfIdentity/Validator.cs | 2 +- .../DeleteIdentity}/IdentityDeleter.cs | 6 +- .../src/Files.Module/Files.Module.csproj | 3 +- .../Files.Module/FilesEndpointExtensions.cs | 30 + Modules/Files/src/Files.Module/FilesModule.cs | 2 - .../Files/src/Files.Module/packages.lock.json | 30 +- .../Repositories/FilesRepositoryTests.cs | 2 +- .../packages.lock.json | 20 +- .../Files.Module.Tests.csproj} | 2 +- .../Queries/GetFileContent/ValidatorTests.cs | 4 +- .../Queries/GetFileMetadata/ValidatorTests.cs | 4 +- .../ListFileMetadata/ValidatorTests.cs | 4 +- .../DeleteFilesOfIdentity/HandlerTests.cs | 6 +- .../DeleteFilesOfIdentity/ValidatorTests.cs | 4 +- .../Tests/Identities/IdentityDeleterTests.cs | 6 +- .../packages.lock.json | 1163 +++++++++++++++-- 110 files changed, 1577 insertions(+), 579 deletions(-) delete mode 100644 Applications/ConsumerApi/src/Controllers/Files/FilesController.cs rename Modules/Files/src/{Files.Application/Infrastructure/Persistence => Files.Abstractions}/BlobConfiguration.cs (54%) rename Modules/Files/src/{Files.Application/Files.Application.csproj => Files.Abstractions/Files.Abstractions.csproj} (50%) rename Modules/Files/src/{Files.Application/Infrastructure/Persistence/Repository => Files.Abstractions}/IFilesRepository.cs (93%) rename Modules/Files/src/{Files.Application => Files.Abstractions}/packages.lock.json (99%) delete mode 100644 Modules/Files/src/Files.Application/Files/Commands/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs delete mode 100644 Modules/Files/src/Files.Application/Files/Queries/GetFileMetadata/GetFileMetadataQuery.cs delete mode 100644 Modules/Files/src/Files.Application/Infrastructure/Persistence/IFilesDbContext.cs rename Modules/Files/src/{Files.Application => Files.Module}/ApplicationConfiguration.cs (87%) rename Modules/Files/src/{Files.Application => Files.Module}/ApplicationErrors.cs (88%) rename Modules/Files/src/{Files.Application/Extensions/IServiceCollectionExtensions.cs => Files.Module/ApplicationServiceCollectionExtensions.cs} (77%) rename Modules/Files/src/{Files.Application/Files/Commands/ClaimFileOwnership/ClaimFileOwnershipCommand.cs => Files.Module/Features/Files/ClaimFileOwnership/Command.cs} (71%) create mode 100644 Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Endpoint.cs rename Modules/Files/src/{Files.Application/Files/Commands => Files.Module/Features/Files}/ClaimFileOwnership/Handler.cs (92%) rename Applications/ConsumerApi/src/Controllers/Files/DTOs/ClaimFileRequest.cs => Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Request.cs (55%) rename Modules/Files/src/{Files.Application/Files/Commands/ClaimFileOwnership/ClaimFileOwnershipResponse.cs => Files.Module/Features/Files/ClaimFileOwnership/Response.cs} (77%) rename Modules/Files/src/{Files.Application/Files/Commands => Files.Module/Features/Files}/ClaimFileOwnership/Validator.cs (89%) rename Modules/Files/src/{Files.Application/Files/Commands/CreateFile/CreateFileCommand.cs => Files.Module/Features/Files/CreateFile/Command.cs} (87%) create mode 100644 Modules/Files/src/Files.Module/Features/Files/CreateFile/Endpoint.cs rename Modules/Files/src/{Files.Application/Files/Commands => Files.Module/Features/Files}/CreateFile/Handler.cs (88%) rename Applications/ConsumerApi/src/Controllers/Files/DTOs/CreateFileDTO.cs => Modules/Files/src/Files.Module/Features/Files/CreateFile/Http/RequestFormParams.cs (67%) rename Applications/ConsumerApi/src/Controllers/Files/DTOs/Validators/CreateFileDTOValidator.cs => Modules/Files/src/Files.Module/Features/Files/CreateFile/Http/RequestFormParamsValidator.cs (64%) rename Modules/Files/src/{Files.Application/Files/Commands/CreateFile/CreateFileResponse.cs => Files.Module/Features/Files/CreateFile/Response.cs} (94%) rename Modules/Files/src/{Files.Application/Files/Commands => Files.Module/Features/Files}/CreateFile/Validator.cs (92%) rename Modules/Files/src/{Files.Application/Files/Commands/DeleteFile/DeleteFileCommand.cs => Files.Module/Features/Files/DeleteFile/Command.cs} (60%) create mode 100644 Modules/Files/src/Files.Module/Features/Files/DeleteFile/Endpoint.cs rename Modules/Files/src/{Files.Application/Files/Commands => Files.Module/Features/Files}/DeleteFile/Handler.cs (86%) rename Modules/Files/src/{Files.Application/Files/Commands => Files.Module/Features/Files}/DeleteFile/Validator.cs (81%) create mode 100644 Modules/Files/src/Files.Module/Features/Files/ExecuteHousekeeping/Command.cs rename Modules/Files/src/{Files.Application/Files/Commands => Files.Module/Features/Files}/ExecuteHousekeeping/Handler.cs (86%) create mode 100644 Modules/Files/src/Files.Module/Features/Files/GetFileContent/Endpoint.cs rename Modules/Files/src/{Files.Application/Files/Queries => Files.Module/Features/Files}/GetFileContent/Handler.cs (83%) rename Modules/Files/src/{Files.Application/Files/Queries/GetFileContent/GetFileContentQuery.cs => Files.Module/Features/Files/GetFileContent/Query.cs} (64%) rename Modules/Files/src/{Files.Application/Files/Queries/GetFileContent/GetFileContentResponse.cs => Files.Module/Features/Files/GetFileContent/Response.cs} (55%) rename Modules/Files/src/{Files.Application/Files/Queries => Files.Module/Features/Files}/GetFileContent/Validator.cs (79%) create mode 100644 Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Endpoint.cs rename Modules/Files/src/{Files.Application/Files/Queries => Files.Module/Features/Files}/GetFileMetadata/Handler.cs (78%) create mode 100644 Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Query.cs rename Modules/Files/src/{Files.Application/Files/Queries => Files.Module/Features/Files}/GetFileMetadata/Validator.cs (79%) create mode 100644 Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Endpoint.cs rename Modules/Files/src/{Files.Application/Files/Queries => Files.Module/Features/Files}/ListFileMetadata/Handler.cs (85%) rename Modules/Files/src/{Files.Application/Files/Queries/ListFileMetadata/ListFileMetadataQuery.cs => Files.Module/Features/Files/ListFileMetadata/Query.cs} (78%) rename Modules/Files/src/{Files.Application/Files/Queries/ListFileMetadata/ListFileMetadataResponse.cs => Files.Module/Features/Files/ListFileMetadata/Response.cs} (80%) rename Modules/Files/src/{Files.Application/Files/Queries => Files.Module/Features/Files}/ListFileMetadata/Validator.cs (80%) rename Modules/Files/src/{Files.Application/Files/Commands/RegenerateFileOwnershipToken/RegenerateFileOwnershipTokenCommand.cs => Files.Module/Features/Files/RegenerateFileOwnershipToken/Command.cs} (65%) create mode 100644 Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Endpoint.cs rename Modules/Files/src/{Files.Application/Files/Commands => Files.Module/Features/Files}/RegenerateFileOwnershipToken/Handler.cs (87%) rename Modules/Files/src/{Files.Application/Files/Commands/RegenerateFileOwnershipToken/RegenerateFileOwnershipTokenResponse.cs => Files.Module/Features/Files/RegenerateFileOwnershipToken/Response.cs} (76%) rename Modules/Files/src/{Files.Application/Files/Commands => Files.Module/Features/Files}/RegenerateFileOwnershipToken/Validator.cs (78%) rename Modules/Files/src/{Files.Application/Files/DTOs => Files.Module/Features/Files/Shared}/FileMetadataDTO.cs (96%) create mode 100644 Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Endpoint.cs rename Modules/Files/src/{Files.Application/Files/Queries => Files.Module/Features/Files}/ValidateFileOwnershipToken/Handler.cs (88%) rename Applications/ConsumerApi/src/Controllers/Files/DTOs/ValidateFileOwnershipTokenRequest.cs => Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Http/RequestBody.cs (55%) rename Modules/Files/src/{Files.Application/Files/Queries/ValidateFileOwnershipToken/ValidateFileOwnershipTokenQuery.cs => Files.Module/Features/Files/ValidateFileOwnershipToken/Query.cs} (71%) rename Modules/Files/src/{Files.Application/Files/Queries/ValidateFileOwnershipToken/ValidateFileOwnershipTokenResponse.cs => Files.Module/Features/Files/ValidateFileOwnershipToken/Response.cs} (53%) rename Modules/Files/src/{Files.Application/Files/Queries => Files.Module/Features/Files}/ValidateFileOwnershipToken/Validator.cs (89%) rename Modules/Files/src/{Files.Application/Identities/Commands/AnonymizeCreatedByOfFiles/AnonymizeCreatedByOfFilesCommand.cs => Files.Module/Features/Identities/AnonymizeCreatedByOfFiles/Command.cs} (60%) rename Modules/Files/src/{Files.Application/Identities/Commands => Files.Module/Features/Identities}/AnonymizeCreatedByOfFiles/Handler.cs (86%) rename Modules/Files/src/{Files.Application/Identities/Commands => Files.Module/Features/Identities}/AnonymizeCreatedByOfFiles/Validator.cs (79%) rename Modules/Files/src/{Files.Application/Identities/Commands/DeleteFilesOfIdentity/DeleteFilesOfIdentityCommand.cs => Files.Module/Features/Identities/DeleteFilesOfIdentity/Command.cs} (60%) rename Modules/Files/src/{Files.Application/Identities/Commands => Files.Module/Features/Identities}/DeleteFilesOfIdentity/Handler.cs (75%) rename Modules/Files/src/{Files.Application/Identities/Commands => Files.Module/Features/Identities}/DeleteFilesOfIdentity/Validator.cs (79%) rename Modules/Files/src/{Files.Application/Identities => Files.Module/Features/Identities/DeleteIdentity}/IdentityDeleter.cs (77%) create mode 100644 Modules/Files/src/Files.Module/FilesEndpointExtensions.cs rename Modules/Files/test/{Files.Application.Tests/Files.Application.Tests.csproj => Files.Module.Tests/Files.Module.Tests.csproj} (86%) rename Modules/Files/test/{Files.Application.Tests => Files.Module.Tests}/Tests/Files/Queries/GetFileContent/ValidatorTests.cs (84%) rename Modules/Files/test/{Files.Application.Tests => Files.Module.Tests}/Tests/Files/Queries/GetFileMetadata/ValidatorTests.cs (84%) rename Modules/Files/test/{Files.Application.Tests => Files.Module.Tests}/Tests/Files/Queries/ListFileMetadata/ValidatorTests.cs (87%) rename Modules/Files/test/{Files.Application.Tests => Files.Module.Tests}/Tests/Identities/Commands/DeleteFilesOfIdentity/HandlerTests.cs (78%) rename Modules/Files/test/{Files.Application.Tests => Files.Module.Tests}/Tests/Identities/Commands/DeleteFilesOfIdentity/ValidatorTests.cs (82%) rename Modules/Files/test/{Files.Application.Tests => Files.Module.Tests}/Tests/Identities/IdentityDeleterTests.cs (86%) rename Modules/Files/test/{Files.Application.Tests => Files.Module.Tests}/packages.lock.json (57%) diff --git a/Applications/ConsumerApi/src/Controllers/Files/FilesController.cs b/Applications/ConsumerApi/src/Controllers/Files/FilesController.cs deleted file mode 100644 index b6480e2cd3..0000000000 --- a/Applications/ConsumerApi/src/Controllers/Files/FilesController.cs +++ /dev/null @@ -1,149 +0,0 @@ -using System.Buffers.Text; -using System.Net.Mime; -using Backbone.BuildingBlocks.API; -using Backbone.BuildingBlocks.API.Mvc; -using Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; -using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.ConsumerApi.Controllers.Files.DTOs; -using Backbone.ConsumerApi.Controllers.Files.DTOs.Validators; -using Backbone.ConsumerApi.Versions; -using Backbone.Modules.Files.Application; -using Backbone.Modules.Files.Application.Files.Commands.ClaimFileOwnership; -using Backbone.Modules.Files.Application.Files.Commands.CreateFile; -using Backbone.Modules.Files.Application.Files.Commands.DeleteFile; -using Backbone.Modules.Files.Application.Files.Commands.RegenerateFileOwnershipToken; -using Backbone.Modules.Files.Application.Files.DTOs; -using Backbone.Modules.Files.Application.Files.Queries.GetFileContent; -using Backbone.Modules.Files.Application.Files.Queries.GetFileMetadata; -using Backbone.Modules.Files.Application.Files.Queries.ListFileMetadata; -using Backbone.Modules.Files.Application.Files.Queries.ValidateFileOwnershipToken; -using Backbone.Tooling; -using MediatR; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Options; -using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; - -namespace Backbone.ConsumerApi.Controllers.Files; - -[V2] -[Route("api/v{v:apiVersion}/[controller]")] -[Authorize("OpenIddict.Validation.AspNetCore")] -public class FilesController : ApiControllerBase -{ - private readonly ApplicationConfiguration _configuration; - - public FilesController(IMediator mediator, IOptions options) : base(mediator) - { - _configuration = options.Value; - } - - [HttpPost] - [Consumes("multipart/form-data")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status201Created)] - [ProducesError(StatusCodes.Status400BadRequest)] - public async Task UploadFile([FromForm] CreateFileDTO dto, CancellationToken cancellationToken) - { - var validationResult = await new CreateFileDTOValidator().ValidateAsync(dto, cancellationToken); - if (!validationResult.IsValid) - throw new ValidationException(new ApplicationError(validationResult.Errors.First().ErrorCode, validationResult.Errors.First().ErrorMessage)); - - var inputStream = new MemoryStream(); - - await dto.Content.CopyToAsync(inputStream, cancellationToken); - - var command = new CreateFileCommand - { - FileContent = inputStream.ToArray(), - ExpiresAt = dto.ExpiresAt, - CipherHash = Base64Helper.Decode(dto.CipherHash), - OwnerSignature = Base64Helper.Decode(dto.OwnerSignature), - EncryptedProperties = Base64Helper.Decode(dto.EncryptedProperties) - }; - - var response = await _mediator.Send(command, cancellationToken); - return CreatedAtAction(nameof(DownloadFile), new { fileId = response.Id }, response); - } - - [HttpGet("{fileId}")] - [ProducesResponseType(StatusCodes.Status200OK, MediaTypeNames.Application.Octet)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status404NotFound)] - public async Task DownloadFile(string fileId, CancellationToken cancellationToken) - { - var response = await _mediator.Send(new GetFileContentQuery { Id = fileId }, cancellationToken); - return File(response.FileContent, MediaTypeNames.Application.Octet); - } - - - [HttpGet("{fileId}/Metadata")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status404NotFound)] - public async Task GetFileMetadata(string fileId, CancellationToken cancellationToken) - { - var metadata = await _mediator.Send(new GetFileMetadataQuery { Id = fileId }, cancellationToken); - return Ok(metadata); - } - - [HttpPatch("{fileId}/RegenerateOwnershipToken")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status403Forbidden)] - [ProducesError(StatusCodes.Status404NotFound)] - public async Task RegenerateFileOwnershipToken(string fileId, CancellationToken cancellationToken) - { - var regenerationResult = await _mediator.Send(new RegenerateFileOwnershipTokenCommand { FileId = fileId }, cancellationToken); - return Ok(regenerationResult); - } - - [HttpPatch("{fileId}/ClaimOwnership")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status403Forbidden)] - [ProducesError(StatusCodes.Status404NotFound)] - public async Task ClaimOwnership(string fileId, [FromBody] ClaimFileRequest claimRequest, CancellationToken cancellationToken) - { - var response = await _mediator.Send(new ClaimFileOwnershipCommand { FileId = fileId, OwnershipToken = claimRequest.OwnershipToken }, cancellationToken); - return Ok(response); - } - - [HttpPost("{fileId}/ValidateOwnershipToken")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status403Forbidden)] - [ProducesError(StatusCodes.Status404NotFound)] - public async Task ValidateOwnershipToken(string fileId, [FromBody] ValidateFileOwnershipTokenRequest validateRequest, CancellationToken cancellationToken) - { - var response = await _mediator.Send(new ValidateFileOwnershipTokenQuery { OwnershipToken = validateRequest.OwnershipToken, FileId = fileId }, cancellationToken); - return Ok(response); - } - - - [HttpDelete("{fileId}")] - [ProducesResponseType(StatusCodes.Status204NoContent)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status404NotFound)] - public async Task DeleteFile(string fileId, CancellationToken cancellationToken) - { - await _mediator.Send(new DeleteFileCommand { Id = fileId }, cancellationToken); - return NoContent(); - } - - [HttpGet] - [ProducesResponseType(typeof(PagedHttpResponseEnvelope), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - public async Task ListFileMetadata([FromQuery] PaginationFilter paginationFilter, - [FromQuery] IEnumerable ids, CancellationToken cancellationToken) - { - paginationFilter.PageSize ??= _configuration.Pagination.DefaultPageSize; - - if (paginationFilter.PageSize > _configuration.Pagination.MaxPageSize) - throw new ApplicationException( - GenericApplicationErrors.Validation.InvalidPageSize(_configuration.Pagination.MaxPageSize)); - - var fileMetadata = await _mediator.Send(new ListFileMetadataQuery { PaginationFilter = paginationFilter, Ids = ids }, cancellationToken); - return Paged(fileMetadata); - } -} diff --git a/Applications/ConsumerApi/src/Program.cs b/Applications/ConsumerApi/src/Program.cs index fd18e82f93..4a25b0c101 100644 --- a/Applications/ConsumerApi/src/Program.cs +++ b/Applications/ConsumerApi/src/Program.cs @@ -136,7 +136,7 @@ static void ConfigureServices(IServiceCollection services, IConfiguration config .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) - .AddModule(configuration) + .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) - .AddModule(configuration) + .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) - .AddModule(configuration) + .AddModule(configuration) .AddModule(configuration) .AddModule - diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Program.cs b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Program.cs index 968aaa29e8..1f13f72d7e 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Program.cs +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Program.cs @@ -86,7 +86,7 @@ public static IHostBuilder CreateHostBuilder(string[] args) .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) - .AddModule(configuration) + .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) .AddModule(); services.AddTransient(); services.AddTransient(); - services.AddTransient(); + services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/packages.lock.json b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/packages.lock.json index 510c65be79..9007dae69b 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/packages.lock.json +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/packages.lock.json @@ -1477,13 +1477,11 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Files.Application": { + "Backbone.Modules.Files.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Files.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Files.Domain": "[1.0.0, )" } }, "Backbone.Modules.Files.Contracts": { @@ -1503,9 +1501,9 @@ "Backbone.Modules.Files.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Files.Application": "[1.0.0, )", + "Backbone.Modules.Files.Abstractions": "[1.0.0, )", "Backbone.Modules.Files.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1529,12 +1527,13 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Files.Application": "[1.0.0, )", + "Backbone.Modules.Files.Abstractions": "[1.0.0, )", "Backbone.Modules.Files.Domain": "[1.0.0, )", "Backbone.Modules.Files.Infrastructure": "[1.0.0, )", "Backbone.Modules.Files.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Files.Infrastructure.Database.SqlServer": "[1.0.0, )", "Backbone.Tooling": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests.Integration/packages.lock.json b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests.Integration/packages.lock.json index 575acc0cad..cd4b4a90e5 100644 --- a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests.Integration/packages.lock.json +++ b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests.Integration/packages.lock.json @@ -1423,7 +1423,6 @@ "Backbone.Modules.Devices.Application": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", "Backbone.Modules.Devices.Module": "[1.0.0, )", - "Backbone.Modules.Files.Application": "[1.0.0, )", "Backbone.Modules.Files.Module": "[1.0.0, )", "Backbone.Modules.Messages.Module": "[1.0.0, )", "Backbone.Modules.Quotas.Application": "[1.0.0, )", @@ -1635,13 +1634,11 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Files.Application": { + "Backbone.Modules.Files.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Files.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Files.Domain": "[1.0.0, )" } }, "Backbone.Modules.Files.Contracts": { @@ -1661,9 +1658,9 @@ "Backbone.Modules.Files.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Files.Application": "[1.0.0, )", + "Backbone.Modules.Files.Abstractions": "[1.0.0, )", "Backbone.Modules.Files.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1687,12 +1684,13 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Files.Application": "[1.0.0, )", + "Backbone.Modules.Files.Abstractions": "[1.0.0, )", "Backbone.Modules.Files.Domain": "[1.0.0, )", "Backbone.Modules.Files.Infrastructure": "[1.0.0, )", "Backbone.Modules.Files.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Files.Infrastructure.Database.SqlServer": "[1.0.0, )", "Backbone.Tooling": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/packages.lock.json b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/packages.lock.json index 575acc0cad..cd4b4a90e5 100644 --- a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/packages.lock.json +++ b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/packages.lock.json @@ -1423,7 +1423,6 @@ "Backbone.Modules.Devices.Application": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", "Backbone.Modules.Devices.Module": "[1.0.0, )", - "Backbone.Modules.Files.Application": "[1.0.0, )", "Backbone.Modules.Files.Module": "[1.0.0, )", "Backbone.Modules.Messages.Module": "[1.0.0, )", "Backbone.Modules.Quotas.Application": "[1.0.0, )", @@ -1635,13 +1634,11 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Files.Application": { + "Backbone.Modules.Files.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Files.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Files.Domain": "[1.0.0, )" } }, "Backbone.Modules.Files.Contracts": { @@ -1661,9 +1658,9 @@ "Backbone.Modules.Files.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Files.Application": "[1.0.0, )", + "Backbone.Modules.Files.Abstractions": "[1.0.0, )", "Backbone.Modules.Files.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1687,12 +1684,13 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Files.Application": "[1.0.0, )", + "Backbone.Modules.Files.Abstractions": "[1.0.0, )", "Backbone.Modules.Files.Domain": "[1.0.0, )", "Backbone.Modules.Files.Infrastructure": "[1.0.0, )", "Backbone.Modules.Files.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Files.Infrastructure.Database.SqlServer": "[1.0.0, )", "Backbone.Tooling": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Backbone.Tests.ArchUnit/Backbone.Tests.ArchUnit.csproj b/Backbone.Tests.ArchUnit/Backbone.Tests.ArchUnit.csproj index aa66f72188..8b9083af9a 100644 --- a/Backbone.Tests.ArchUnit/Backbone.Tests.ArchUnit.csproj +++ b/Backbone.Tests.ArchUnit/Backbone.Tests.ArchUnit.csproj @@ -33,7 +33,8 @@ - + + diff --git a/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs b/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs index d422acc7ae..46f94530fa 100644 --- a/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs +++ b/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs @@ -11,7 +11,7 @@ namespace Backbone.Backbone.Tests.ArchUnit; public class VerticalSliceArchitecture { - private static readonly string[] MIGRATED_MODULES = ["Messages", "Tags", "Challenges", "Announcements", "Tokens"]; + private static readonly string[] MIGRATED_MODULES = ["Messages", "Tags", "Challenges", "Announcements", "Tokens", "Files"]; [Fact] public void DomainsShouldNotDependOnOuterLayers() @@ -43,6 +43,7 @@ public void InfrastructureShouldNotDependOnModulesOrApis() [InlineData("Challenges")] [InlineData("Announcements")] [InlineData("Tokens")] + [InlineData("Files")] public void UseCasesShouldResideInTheirModule(string module) { var useCases = Classes().That().AreAssignableTo(typeof(IBaseRequest)) @@ -62,12 +63,17 @@ public void UseCasesShouldResideInTheirModule(string module) [InlineData("Challenges")] [InlineData("Announcements")] [InlineData("Tokens")] + [InlineData("Files")] public void UseCasesShouldNotDependOnAdapters(string module) { Classes().That().Are(UseCases(module)).Should().NotDependOnAnyTypesThat() .ResideInAssemblyMatching(@"^Backbone\.Modules\.[^.]+\.Infrastructure[^,]*(,|$)") .Check(Backbone.ARCHITECTURE); - Classes().That().Are(UseCases(module)).Should().NotDependOnAnyTypesThat().ResideInNamespaceMatching(@"Microsoft\.AspNetCore\..*") + // Form DTO validators belong to the HTTP adapter; command/query validators remain independent. + var httpValidators = Classes().That().ResideInNamespaceMatching(@".*\.Http(\.|$)") + .And().AreAssignableTo(typeof(IValidator)); + Classes().That().Are(UseCases(module)).And().AreNot(httpValidators) + .Should().NotDependOnAnyTypesThat().ResideInNamespaceMatching(@"Microsoft\.AspNetCore\..*") .Check(Backbone.ARCHITECTURE); } @@ -77,6 +83,7 @@ public void UseCasesShouldNotDependOnAdapters(string module) [InlineData("Challenges")] [InlineData("Announcements")] [InlineData("Tokens")] + [InlineData("Files")] public void ModulesShouldOnlyReferenceTheirOwnImplementationAndOtherContracts(string module) { foreach (var assembly in SolutionAssemblies().Where(assembly => assembly.GetName().Name == $"Backbone.Modules.{module}.Module")) diff --git a/Backbone.Tests.ArchUnit/packages.lock.json b/Backbone.Tests.ArchUnit/packages.lock.json index 0a20eadffe..c9d0919d29 100644 --- a/Backbone.Tests.ArchUnit/packages.lock.json +++ b/Backbone.Tests.ArchUnit/packages.lock.json @@ -1724,7 +1724,6 @@ "Backbone.Modules.Devices.Application": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", "Backbone.Modules.Devices.Module": "[1.0.0, )", - "Backbone.Modules.Files.Application": "[1.0.0, )", "Backbone.Modules.Files.Module": "[1.0.0, )", "Backbone.Modules.Messages.Module": "[1.0.0, )", "Backbone.Modules.Quotas.Application": "[1.0.0, )", @@ -2007,23 +2006,11 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Files.Application": { + "Backbone.Modules.Files.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Files.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" - } - }, - "Backbone.Modules.Files.Application.Tests": { - "type": "Project", - "dependencies": { - "Backbone.Modules.Files.Application": "[1.0.0, )", - "Backbone.UnitTestTools": "[1.0.0, )", - "FakeItEasy": "[9.0.1, 9.0.1]", - "GitHubActionsTestLogger": "[3.0.5, 3.0.5]", - "Microsoft.NET.Test.Sdk": "[18.8.1, 18.8.1]" + "Backbone.Modules.Files.Domain": "[1.0.0, )" } }, "Backbone.Modules.Files.Contracts": { @@ -2052,9 +2039,9 @@ "Backbone.Modules.Files.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Files.Application": "[1.0.0, )", + "Backbone.Modules.Files.Abstractions": "[1.0.0, )", "Backbone.Modules.Files.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -2089,15 +2076,26 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Files.Application": "[1.0.0, )", + "Backbone.Modules.Files.Abstractions": "[1.0.0, )", "Backbone.Modules.Files.Domain": "[1.0.0, )", "Backbone.Modules.Files.Infrastructure": "[1.0.0, )", "Backbone.Modules.Files.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Files.Infrastructure.Database.SqlServer": "[1.0.0, )", "Backbone.Tooling": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, + "Backbone.Modules.Files.Module.Tests": { + "type": "Project", + "dependencies": { + "Backbone.Modules.Files.Module": "[1.0.0, )", + "Backbone.UnitTestTools": "[1.0.0, )", + "FakeItEasy": "[9.0.1, 9.0.1]", + "GitHubActionsTestLogger": "[3.0.5, 3.0.5]", + "Microsoft.NET.Test.Sdk": "[18.8.1, 18.8.1]" + } + }, "Backbone.Modules.Messages.Abstractions": { "type": "Project", "dependencies": { diff --git a/Backbone.slnx b/Backbone.slnx index f8991159db..5c945d9a5b 100644 --- a/Backbone.slnx +++ b/Backbone.slnx @@ -143,7 +143,7 @@ - + @@ -152,7 +152,7 @@ - + diff --git a/Modules/Files/src/Files.Application/Infrastructure/Persistence/BlobConfiguration.cs b/Modules/Files/src/Files.Abstractions/BlobConfiguration.cs similarity index 54% rename from Modules/Files/src/Files.Application/Infrastructure/Persistence/BlobConfiguration.cs rename to Modules/Files/src/Files.Abstractions/BlobConfiguration.cs index c3167aa6ad..d8160824be 100644 --- a/Modules/Files/src/Files.Application/Infrastructure/Persistence/BlobConfiguration.cs +++ b/Modules/Files/src/Files.Abstractions/BlobConfiguration.cs @@ -1,4 +1,4 @@ -namespace Backbone.Modules.Files.Application.Infrastructure.Persistence; +namespace Backbone.Modules.Files.Abstractions; public class BlobConfiguration { diff --git a/Modules/Files/src/Files.Application/Files.Application.csproj b/Modules/Files/src/Files.Abstractions/Files.Abstractions.csproj similarity index 50% rename from Modules/Files/src/Files.Application/Files.Application.csproj rename to Modules/Files/src/Files.Abstractions/Files.Abstractions.csproj index 0ce1da6cd0..73a3c8594b 100644 --- a/Modules/Files/src/Files.Application/Files.Application.csproj +++ b/Modules/Files/src/Files.Abstractions/Files.Abstractions.csproj @@ -1,11 +1,5 @@ - - - - - - diff --git a/Modules/Files/src/Files.Application/Infrastructure/Persistence/Repository/IFilesRepository.cs b/Modules/Files/src/Files.Abstractions/IFilesRepository.cs similarity index 93% rename from Modules/Files/src/Files.Application/Infrastructure/Persistence/Repository/IFilesRepository.cs rename to Modules/Files/src/Files.Abstractions/IFilesRepository.cs index 1f8aa23423..402058ded1 100644 --- a/Modules/Files/src/Files.Application/Infrastructure/Persistence/Repository/IFilesRepository.cs +++ b/Modules/Files/src/Files.Abstractions/IFilesRepository.cs @@ -5,7 +5,7 @@ using Backbone.Modules.Files.Domain.Entities; using File = Backbone.Modules.Files.Domain.Entities.File; -namespace Backbone.Modules.Files.Application.Infrastructure.Persistence.Repository; +namespace Backbone.Modules.Files.Abstractions; public interface IFilesRepository { diff --git a/Modules/Files/src/Files.Application/packages.lock.json b/Modules/Files/src/Files.Abstractions/packages.lock.json similarity index 99% rename from Modules/Files/src/Files.Application/packages.lock.json rename to Modules/Files/src/Files.Abstractions/packages.lock.json index 89141a8b0f..561f14b221 100644 --- a/Modules/Files/src/Files.Application/packages.lock.json +++ b/Modules/Files/src/Files.Abstractions/packages.lock.json @@ -2,16 +2,6 @@ "version": 2, "dependencies": { "net10.0": { - "FluentValidation.DependencyInjectionExtensions": { - "type": "Direct", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "AWSSDK.Core": { "type": "Transitive", "resolved": "4.0.100.9", diff --git a/Modules/Files/src/Files.Application/Files/Commands/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs b/Modules/Files/src/Files.Application/Files/Commands/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs deleted file mode 100644 index 19826c073a..0000000000 --- a/Modules/Files/src/Files.Application/Files/Commands/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs +++ /dev/null @@ -1,5 +0,0 @@ -using MediatR; - -namespace Backbone.Modules.Files.Application.Files.Commands.ExecuteHousekeeping; - -public class ExecuteHousekeepingCommand : IRequest; diff --git a/Modules/Files/src/Files.Application/Files/Queries/GetFileMetadata/GetFileMetadataQuery.cs b/Modules/Files/src/Files.Application/Files/Queries/GetFileMetadata/GetFileMetadataQuery.cs deleted file mode 100644 index 5ff6bffa2f..0000000000 --- a/Modules/Files/src/Files.Application/Files/Queries/GetFileMetadata/GetFileMetadataQuery.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Backbone.Modules.Files.Application.Files.DTOs; -using MediatR; - -namespace Backbone.Modules.Files.Application.Files.Queries.GetFileMetadata; - -public class GetFileMetadataQuery : IRequest -{ - public required string Id { get; init; } -} diff --git a/Modules/Files/src/Files.Application/Infrastructure/Persistence/IFilesDbContext.cs b/Modules/Files/src/Files.Application/Infrastructure/Persistence/IFilesDbContext.cs deleted file mode 100644 index ef6a224806..0000000000 --- a/Modules/Files/src/Files.Application/Infrastructure/Persistence/IFilesDbContext.cs +++ /dev/null @@ -1,5 +0,0 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.Persistence.Database; - -namespace Backbone.Modules.Files.Application.Infrastructure.Persistence; - -public interface IFilesDbContext : IDbContext; diff --git a/Modules/Files/src/Files.Infrastructure.Database.Postgres/packages.lock.json b/Modules/Files/src/Files.Infrastructure.Database.Postgres/packages.lock.json index 08401b1845..dab0f6c06d 100644 --- a/Modules/Files/src/Files.Infrastructure.Database.Postgres/packages.lock.json +++ b/Modules/Files/src/Files.Infrastructure.Database.Postgres/packages.lock.json @@ -730,13 +730,11 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Files.Application": { + "Backbone.Modules.Files.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Files.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Files.Domain": "[1.0.0, )" } }, "Backbone.Modules.Files.Contracts": { @@ -756,9 +754,9 @@ "Backbone.Modules.Files.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Files.Application": "[1.0.0, )", + "Backbone.Modules.Files.Abstractions": "[1.0.0, )", "Backbone.Modules.Files.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -853,16 +851,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", diff --git a/Modules/Files/src/Files.Infrastructure.Database.SqlServer/packages.lock.json b/Modules/Files/src/Files.Infrastructure.Database.SqlServer/packages.lock.json index 08401b1845..dab0f6c06d 100644 --- a/Modules/Files/src/Files.Infrastructure.Database.SqlServer/packages.lock.json +++ b/Modules/Files/src/Files.Infrastructure.Database.SqlServer/packages.lock.json @@ -730,13 +730,11 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Files.Application": { + "Backbone.Modules.Files.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Files.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Files.Domain": "[1.0.0, )" } }, "Backbone.Modules.Files.Contracts": { @@ -756,9 +754,9 @@ "Backbone.Modules.Files.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Files.Application": "[1.0.0, )", + "Backbone.Modules.Files.Abstractions": "[1.0.0, )", "Backbone.Modules.Files.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -853,16 +851,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", diff --git a/Modules/Files/src/Files.Infrastructure/Files.Infrastructure.csproj b/Modules/Files/src/Files.Infrastructure/Files.Infrastructure.csproj index 81c9683519..a9d5711bb0 100644 --- a/Modules/Files/src/Files.Infrastructure/Files.Infrastructure.csproj +++ b/Modules/Files/src/Files.Infrastructure/Files.Infrastructure.csproj @@ -7,9 +7,9 @@ - + - + diff --git a/Modules/Files/src/Files.Infrastructure/Persistence/Database/FilesDbContext.cs b/Modules/Files/src/Files.Infrastructure/Persistence/Database/FilesDbContext.cs index 8d6a0f652d..f279d22e4c 100644 --- a/Modules/Files/src/Files.Infrastructure/Persistence/Database/FilesDbContext.cs +++ b/Modules/Files/src/Files.Infrastructure/Persistence/Database/FilesDbContext.cs @@ -1,6 +1,6 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Infrastructure.Persistence.Database; -using Backbone.Modules.Files.Application.Infrastructure.Persistence; +using Backbone.Modules.Files.Abstractions; using Backbone.Modules.Files.Domain.Entities; using Backbone.Modules.Files.Infrastructure.Persistence.Database.ValueConverters; using Microsoft.EntityFrameworkCore; @@ -8,7 +8,7 @@ namespace Backbone.Modules.Files.Infrastructure.Persistence.Database; -public class FilesDbContext : AbstractDbContextBase, IFilesDbContext +public class FilesDbContext : AbstractDbContextBase { public FilesDbContext() { diff --git a/Modules/Files/src/Files.Infrastructure/Persistence/Database/IServiceCollectionExtensions.cs b/Modules/Files/src/Files.Infrastructure/Persistence/Database/IServiceCollectionExtensions.cs index 05ab6fcc95..ed178bf1cf 100644 --- a/Modules/Files/src/Files.Infrastructure/Persistence/Database/IServiceCollectionExtensions.cs +++ b/Modules/Files/src/Files.Infrastructure/Persistence/Database/IServiceCollectionExtensions.cs @@ -1,5 +1,5 @@ using Backbone.BuildingBlocks.Infrastructure.Persistence.Database; -using Backbone.Modules.Files.Application.Infrastructure.Persistence; +using Backbone.Modules.Files.Abstractions; using Microsoft.Extensions.DependencyInjection; namespace Backbone.Modules.Files.Infrastructure.Persistence.Database; @@ -9,7 +9,5 @@ public static class IServiceCollectionExtensions public static void AddDatabase(this IServiceCollection services, DatabaseConfiguration options) { services.AddDbContextForModule(options, "Files"); - - services.AddScoped(); } } diff --git a/Modules/Files/src/Files.Infrastructure/Persistence/Database/Repository/FilesRepository.cs b/Modules/Files/src/Files.Infrastructure/Persistence/Database/Repository/FilesRepository.cs index 73a971a5e9..4c1a7e4b43 100644 --- a/Modules/Files/src/Files.Infrastructure/Persistence/Database/Repository/FilesRepository.cs +++ b/Modules/Files/src/Files.Infrastructure/Persistence/Database/Repository/FilesRepository.cs @@ -4,8 +4,7 @@ using Backbone.BuildingBlocks.Application.Extensions; using Backbone.BuildingBlocks.Application.Pagination; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Files.Application.Infrastructure.Persistence; -using Backbone.Modules.Files.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Files.Abstractions; using Backbone.Modules.Files.Domain.Entities; using Backbone.Modules.Files.Infrastructure.Persistence.Database.QueryableExtensions; using Microsoft.EntityFrameworkCore; diff --git a/Modules/Files/src/Files.Infrastructure/Persistence/IServiceCollectionExtensions.cs b/Modules/Files/src/Files.Infrastructure/Persistence/IServiceCollectionExtensions.cs index c595fa79c6..64e11279c4 100644 --- a/Modules/Files/src/Files.Infrastructure/Persistence/IServiceCollectionExtensions.cs +++ b/Modules/Files/src/Files.Infrastructure/Persistence/IServiceCollectionExtensions.cs @@ -1,7 +1,6 @@ using Backbone.BuildingBlocks.Infrastructure.Persistence.BlobStorage; using Backbone.BuildingBlocks.Infrastructure.Persistence.Database; -using Backbone.Modules.Files.Application.Infrastructure.Persistence; -using Backbone.Modules.Files.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Files.Abstractions; using Backbone.Modules.Files.Infrastructure.Persistence.Database; using Backbone.Modules.Files.Infrastructure.Persistence.Database.Repository; using Microsoft.Extensions.DependencyInjection; diff --git a/Modules/Files/src/Files.Infrastructure/packages.lock.json b/Modules/Files/src/Files.Infrastructure/packages.lock.json index 3f8f705612..44e540d48e 100644 --- a/Modules/Files/src/Files.Infrastructure/packages.lock.json +++ b/Modules/Files/src/Files.Infrastructure/packages.lock.json @@ -766,13 +766,11 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Files.Application": { + "Backbone.Modules.Files.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Files.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Files.Domain": "[1.0.0, )" } }, "Backbone.Modules.Files.Contracts": { @@ -877,16 +875,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", diff --git a/Modules/Files/src/Files.Application/ApplicationConfiguration.cs b/Modules/Files/src/Files.Module/ApplicationConfiguration.cs similarity index 87% rename from Modules/Files/src/Files.Application/ApplicationConfiguration.cs rename to Modules/Files/src/Files.Module/ApplicationConfiguration.cs index 9453546170..41d7304de5 100644 --- a/Modules/Files/src/Files.Application/ApplicationConfiguration.cs +++ b/Modules/Files/src/Files.Module/ApplicationConfiguration.cs @@ -1,7 +1,7 @@ using System.ComponentModel.DataAnnotations; using Backbone.BuildingBlocks.Application; -namespace Backbone.Modules.Files.Application; +namespace Backbone.Modules.Files.Module; public class ApplicationConfiguration { diff --git a/Modules/Files/src/Files.Application/ApplicationErrors.cs b/Modules/Files/src/Files.Module/ApplicationErrors.cs similarity index 88% rename from Modules/Files/src/Files.Application/ApplicationErrors.cs rename to Modules/Files/src/Files.Module/ApplicationErrors.cs index 0c372eb8ba..ee2ab8ba44 100644 --- a/Modules/Files/src/Files.Application/ApplicationErrors.cs +++ b/Modules/Files/src/Files.Module/ApplicationErrors.cs @@ -1,6 +1,6 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -namespace Backbone.Modules.Files.Application; +namespace Backbone.Modules.Files.Module; public static class ApplicationErrors { diff --git a/Modules/Files/src/Files.Application/Extensions/IServiceCollectionExtensions.cs b/Modules/Files/src/Files.Module/ApplicationServiceCollectionExtensions.cs similarity index 77% rename from Modules/Files/src/Files.Application/Extensions/IServiceCollectionExtensions.cs rename to Modules/Files/src/Files.Module/ApplicationServiceCollectionExtensions.cs index 62607c9f81..f05ed9d4be 100644 --- a/Modules/Files/src/Files.Application/Extensions/IServiceCollectionExtensions.cs +++ b/Modules/Files/src/Files.Module/ApplicationServiceCollectionExtensions.cs @@ -1,11 +1,11 @@ using Backbone.BuildingBlocks.Application.MediatR; -using Backbone.Modules.Files.Application.Files.Commands.CreateFile; +using Backbone.Modules.Files.Module.Features.Files.CreateFile; using FluentValidation; using Microsoft.Extensions.DependencyInjection; -namespace Backbone.Modules.Files.Application.Extensions; +namespace Backbone.Modules.Files.Module; -public static class IServiceCollectionExtensions +internal static class ApplicationServiceCollectionExtensions { public static void AddApplication(this IServiceCollection services) { diff --git a/Modules/Files/src/Files.Application/Files/Commands/ClaimFileOwnership/ClaimFileOwnershipCommand.cs b/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Command.cs similarity index 71% rename from Modules/Files/src/Files.Application/Files/Commands/ClaimFileOwnership/ClaimFileOwnershipCommand.cs rename to Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Command.cs index 2e8cdbacc7..78fadbabf6 100644 --- a/Modules/Files/src/Files.Application/Files/Commands/ClaimFileOwnership/ClaimFileOwnershipCommand.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Files.Application.Files.Commands.ClaimFileOwnership; +namespace Backbone.Modules.Files.Module.Features.Files.ClaimFileOwnership; public class ClaimFileOwnershipCommand : IRequest { diff --git a/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Endpoint.cs b/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Endpoint.cs new file mode 100644 index 0000000000..2d843ef7b1 --- /dev/null +++ b/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Endpoint.cs @@ -0,0 +1,28 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Files.Module.Features.Files.ClaimFileOwnership; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapClaimFileOwnershipEndpoint(this RouteGroupBuilder group) + { + group.MapPatch("{fileId}/ClaimOwnership", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status403Forbidden) + .Produces(StatusCodes.Status404NotFound); + return group; + } + + private static async Task Handle([FromRoute] string fileId, [FromBody] ClaimFileRequest request, IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new ClaimFileOwnershipCommand { FileId = fileId, OwnershipToken = request.OwnershipToken }, cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Files/src/Files.Application/Files/Commands/ClaimFileOwnership/Handler.cs b/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Handler.cs similarity index 92% rename from Modules/Files/src/Files.Application/Files/Commands/ClaimFileOwnership/Handler.cs rename to Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Handler.cs index 7d78095d33..3341a95373 100644 --- a/Modules/Files/src/Files.Application/Files/Commands/ClaimFileOwnership/Handler.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Handler.cs @@ -2,13 +2,13 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Files.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Files.Abstractions; using Backbone.Modules.Files.Domain.Entities; using MediatR; using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; using File = Backbone.Modules.Files.Domain.Entities.File; -namespace Backbone.Modules.Files.Application.Files.Commands.ClaimFileOwnership; +namespace Backbone.Modules.Files.Module.Features.Files.ClaimFileOwnership; public class Handler : IRequestHandler { diff --git a/Applications/ConsumerApi/src/Controllers/Files/DTOs/ClaimFileRequest.cs b/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Request.cs similarity index 55% rename from Applications/ConsumerApi/src/Controllers/Files/DTOs/ClaimFileRequest.cs rename to Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Request.cs index 99fc4ca6ac..7897cfbbc4 100644 --- a/Applications/ConsumerApi/src/Controllers/Files/DTOs/ClaimFileRequest.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Request.cs @@ -1,4 +1,4 @@ -namespace Backbone.ConsumerApi.Controllers.Files.DTOs; +namespace Backbone.Modules.Files.Module.Features.Files.ClaimFileOwnership; public class ClaimFileRequest { diff --git a/Modules/Files/src/Files.Application/Files/Commands/ClaimFileOwnership/ClaimFileOwnershipResponse.cs b/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Response.cs similarity index 77% rename from Modules/Files/src/Files.Application/Files/Commands/ClaimFileOwnership/ClaimFileOwnershipResponse.cs rename to Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Response.cs index d01d1d35f8..83e6fabc5a 100644 --- a/Modules/Files/src/Files.Application/Files/Commands/ClaimFileOwnership/ClaimFileOwnershipResponse.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Response.cs @@ -1,6 +1,6 @@ using File = Backbone.Modules.Files.Domain.Entities.File; -namespace Backbone.Modules.Files.Application.Files.Commands.ClaimFileOwnership; +namespace Backbone.Modules.Files.Module.Features.Files.ClaimFileOwnership; public class ClaimFileOwnershipResponse { diff --git a/Modules/Files/src/Files.Application/Files/Commands/ClaimFileOwnership/Validator.cs b/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Validator.cs similarity index 89% rename from Modules/Files/src/Files.Application/Files/Commands/ClaimFileOwnership/Validator.cs rename to Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Validator.cs index 49d2fc3b98..acd8017553 100644 --- a/Modules/Files/src/Files.Application/Files/Commands/ClaimFileOwnership/Validator.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Validator.cs @@ -4,7 +4,7 @@ using Backbone.Modules.Files.Domain.Entities; using FluentValidation; -namespace Backbone.Modules.Files.Application.Files.Commands.ClaimFileOwnership; +namespace Backbone.Modules.Files.Module.Features.Files.ClaimFileOwnership; public class Validator : AbstractValidator { diff --git a/Modules/Files/src/Files.Application/Files/Commands/CreateFile/CreateFileCommand.cs b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Command.cs similarity index 87% rename from Modules/Files/src/Files.Application/Files/Commands/CreateFile/CreateFileCommand.cs rename to Modules/Files/src/Files.Module/Features/Files/CreateFile/Command.cs index 0c41ee5d61..9a4dbd9c13 100644 --- a/Modules/Files/src/Files.Application/Files/Commands/CreateFile/CreateFileCommand.cs +++ b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Command.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.Attributes; using MediatR; -namespace Backbone.Modules.Files.Application.Files.Commands.CreateFile; +namespace Backbone.Modules.Files.Module.Features.Files.CreateFile; [ApplyQuotasForMetrics("NumberOfFiles", "UsedFileStorageSpace")] public class CreateFileCommand : IRequest diff --git a/Modules/Files/src/Files.Module/Features/Files/CreateFile/Endpoint.cs b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Endpoint.cs new file mode 100644 index 0000000000..b1854471d3 --- /dev/null +++ b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Endpoint.cs @@ -0,0 +1,62 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; +using Backbone.Modules.Files.Module.Features.Files.CreateFile.Http; +using Backbone.Tooling; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Files.Module.Features.Files.CreateFile; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapCreateFileEndpoint(this RouteGroupBuilder group) + { + group.MapPost("", Handle) + .DisableAntiforgery() + .Accepts("multipart/form-data") + .Produces>(StatusCodes.Status201Created) + .Produces(StatusCodes.Status400BadRequest); + return group; + } + + private static async Task Handle([FromForm] RequestFormParams dto, HttpContext context, IMediator mediator, CancellationToken cancellationToken) + { + ValidateRequiredFormFields(dto); + var validationResult = await new RequestFormParamsValidator().ValidateAsync(dto, cancellationToken); + if (!validationResult.IsValid) + throw new ValidationException(new ApplicationError(validationResult.Errors.First().ErrorCode, validationResult.Errors.First().ErrorMessage)); + + using var inputStream = new MemoryStream(); + await dto.Content.CopyToAsync(inputStream, cancellationToken); + var response = await mediator.Send(new CreateFileCommand + { + FileContent = inputStream.ToArray(), + ExpiresAt = dto.ExpiresAt, + CipherHash = Base64Helper.Decode(dto.CipherHash), + OwnerSignature = Base64Helper.Decode(dto.OwnerSignature), + EncryptedProperties = Base64Helper.Decode(dto.EncryptedProperties) + }, cancellationToken); + return EnvelopeHttpResults.CreatedAtRoute(GetFileContent.Endpoint.ROUTE_NAME, new { v = context.Request.RouteValues["v"], fileId = response.Id }, response); + } + + private static void ValidateRequiredFormFields(RequestFormParams dto) + { + // Minimal API form mapping does not perform MVC's implicit required-field validation. + if (dto.Content == null) + throw new BadHttpRequestException("'Content': The Content field is required."); + foreach (var (name, value) in new[] + { + (nameof(dto.OwnerSignature), dto.OwnerSignature), + (nameof(dto.CipherHash), dto.CipherHash), + (nameof(dto.EncryptedProperties), dto.EncryptedProperties) + }) + { + if (string.IsNullOrWhiteSpace(value)) + throw new BadHttpRequestException($"'{name}': The {name} field is required."); + } + } +} diff --git a/Modules/Files/src/Files.Application/Files/Commands/CreateFile/Handler.cs b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Handler.cs similarity index 88% rename from Modules/Files/src/Files.Application/Files/Commands/CreateFile/Handler.cs rename to Modules/Files/src/Files.Module/Features/Files/CreateFile/Handler.cs index 9aca3cda5f..384440e927 100644 --- a/Modules/Files/src/Files.Application/Files/Commands/CreateFile/Handler.cs +++ b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Handler.cs @@ -1,9 +1,9 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; -using Backbone.Modules.Files.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Files.Abstractions; using MediatR; using File = Backbone.Modules.Files.Domain.Entities.File; -namespace Backbone.Modules.Files.Application.Files.Commands.CreateFile; +namespace Backbone.Modules.Files.Module.Features.Files.CreateFile; public class Handler : IRequestHandler { diff --git a/Applications/ConsumerApi/src/Controllers/Files/DTOs/CreateFileDTO.cs b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Http/RequestFormParams.cs similarity index 67% rename from Applications/ConsumerApi/src/Controllers/Files/DTOs/CreateFileDTO.cs rename to Modules/Files/src/Files.Module/Features/Files/CreateFile/Http/RequestFormParams.cs index f9cee44348..a08e891326 100644 --- a/Applications/ConsumerApi/src/Controllers/Files/DTOs/CreateFileDTO.cs +++ b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Http/RequestFormParams.cs @@ -1,6 +1,8 @@ -namespace Backbone.ConsumerApi.Controllers.Files.DTOs; +using Microsoft.AspNetCore.Http; -public class CreateFileDTO +namespace Backbone.Modules.Files.Module.Features.Files.CreateFile.Http; + +public class RequestFormParams { public required IFormFile Content { get; set; } diff --git a/Applications/ConsumerApi/src/Controllers/Files/DTOs/Validators/CreateFileDTOValidator.cs b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Http/RequestFormParamsValidator.cs similarity index 64% rename from Applications/ConsumerApi/src/Controllers/Files/DTOs/Validators/CreateFileDTOValidator.cs rename to Modules/Files/src/Files.Module/Features/Files/CreateFile/Http/RequestFormParamsValidator.cs index 3948a6b7ae..241535b0c6 100644 --- a/Applications/ConsumerApi/src/Controllers/Files/DTOs/Validators/CreateFileDTOValidator.cs +++ b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Http/RequestFormParamsValidator.cs @@ -1,13 +1,13 @@ using Backbone.Tooling.Extensions; using FluentValidation; -namespace Backbone.ConsumerApi.Controllers.Files.DTOs.Validators; +namespace Backbone.Modules.Files.Module.Features.Files.CreateFile.Http; -public class CreateFileDTOValidator : AbstractValidator +public class RequestFormParamsValidator : AbstractValidator { private const string MIME_TYPE = "application/octet-stream"; - public CreateFileDTOValidator() + public RequestFormParamsValidator() { ClassLevelCascadeMode = CascadeMode.Stop; diff --git a/Modules/Files/src/Files.Application/Files/Commands/CreateFile/CreateFileResponse.cs b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Response.cs similarity index 94% rename from Modules/Files/src/Files.Application/Files/Commands/CreateFile/CreateFileResponse.cs rename to Modules/Files/src/Files.Module/Features/Files/CreateFile/Response.cs index 5084733a1c..1abef557c2 100644 --- a/Modules/Files/src/Files.Application/Files/Commands/CreateFile/CreateFileResponse.cs +++ b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Response.cs @@ -1,6 +1,6 @@ using File = Backbone.Modules.Files.Domain.Entities.File; -namespace Backbone.Modules.Files.Application.Files.Commands.CreateFile; +namespace Backbone.Modules.Files.Module.Features.Files.CreateFile; public class CreateFileResponse { diff --git a/Modules/Files/src/Files.Application/Files/Commands/CreateFile/Validator.cs b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Validator.cs similarity index 92% rename from Modules/Files/src/Files.Application/Files/Commands/CreateFile/Validator.cs rename to Modules/Files/src/Files.Module/Features/Files/CreateFile/Validator.cs index 6b5765eed5..fff2ac67e7 100644 --- a/Modules/Files/src/Files.Application/Files/Commands/CreateFile/Validator.cs +++ b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Validator.cs @@ -4,7 +4,7 @@ using Backbone.Tooling.Extensions; using FluentValidation; -namespace Backbone.Modules.Files.Application.Files.Commands.CreateFile; +namespace Backbone.Modules.Files.Module.Features.Files.CreateFile; public class Validator : AbstractValidator { diff --git a/Modules/Files/src/Files.Application/Files/Commands/DeleteFile/DeleteFileCommand.cs b/Modules/Files/src/Files.Module/Features/Files/DeleteFile/Command.cs similarity index 60% rename from Modules/Files/src/Files.Application/Files/Commands/DeleteFile/DeleteFileCommand.cs rename to Modules/Files/src/Files.Module/Features/Files/DeleteFile/Command.cs index 4957205d85..87c669a33a 100644 --- a/Modules/Files/src/Files.Application/Files/Commands/DeleteFile/DeleteFileCommand.cs +++ b/Modules/Files/src/Files.Module/Features/Files/DeleteFile/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Files.Application.Files.Commands.DeleteFile; +namespace Backbone.Modules.Files.Module.Features.Files.DeleteFile; public class DeleteFileCommand : IRequest { diff --git a/Modules/Files/src/Files.Module/Features/Files/DeleteFile/Endpoint.cs b/Modules/Files/src/Files.Module/Features/Files/DeleteFile/Endpoint.cs new file mode 100644 index 0000000000..9104c794fc --- /dev/null +++ b/Modules/Files/src/Files.Module/Features/Files/DeleteFile/Endpoint.cs @@ -0,0 +1,27 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Files.Module.Features.Files.DeleteFile; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapDeleteFileEndpoint(this RouteGroupBuilder group) + { + group.MapDelete("{fileId}", Handle) + .Produces(StatusCodes.Status204NoContent) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status404NotFound); + return group; + } + + private static async Task Handle([FromRoute] string fileId, IMediator mediator, CancellationToken cancellationToken) + { + await mediator.Send(new DeleteFileCommand { Id = fileId }, cancellationToken); + return Results.NoContent(); + } +} diff --git a/Modules/Files/src/Files.Application/Files/Commands/DeleteFile/Handler.cs b/Modules/Files/src/Files.Module/Features/Files/DeleteFile/Handler.cs similarity index 86% rename from Modules/Files/src/Files.Application/Files/Commands/DeleteFile/Handler.cs rename to Modules/Files/src/Files.Module/Features/Files/DeleteFile/Handler.cs index bbb38ad986..a8f758bc7e 100644 --- a/Modules/Files/src/Files.Application/Files/Commands/DeleteFile/Handler.cs +++ b/Modules/Files/src/Files.Module/Features/Files/DeleteFile/Handler.cs @@ -1,11 +1,11 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; -using Backbone.Modules.Files.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Files.Abstractions; using Backbone.Modules.Files.Domain.Entities; using MediatR; using File = Backbone.Modules.Files.Domain.Entities.File; -namespace Backbone.Modules.Files.Application.Files.Commands.DeleteFile; +namespace Backbone.Modules.Files.Module.Features.Files.DeleteFile; public class Handler : IRequestHandler { diff --git a/Modules/Files/src/Files.Application/Files/Commands/DeleteFile/Validator.cs b/Modules/Files/src/Files.Module/Features/Files/DeleteFile/Validator.cs similarity index 81% rename from Modules/Files/src/Files.Application/Files/Commands/DeleteFile/Validator.cs rename to Modules/Files/src/Files.Module/Features/Files/DeleteFile/Validator.cs index f38c113a86..153927b892 100644 --- a/Modules/Files/src/Files.Application/Files/Commands/DeleteFile/Validator.cs +++ b/Modules/Files/src/Files.Module/Features/Files/DeleteFile/Validator.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Files.Domain.Entities; using FluentValidation; -namespace Backbone.Modules.Files.Application.Files.Commands.DeleteFile; +namespace Backbone.Modules.Files.Module.Features.Files.DeleteFile; public class Validator : AbstractValidator { diff --git a/Modules/Files/src/Files.Module/Features/Files/ExecuteHousekeeping/Command.cs b/Modules/Files/src/Files.Module/Features/Files/ExecuteHousekeeping/Command.cs new file mode 100644 index 0000000000..07cf3a43e4 --- /dev/null +++ b/Modules/Files/src/Files.Module/Features/Files/ExecuteHousekeeping/Command.cs @@ -0,0 +1,5 @@ +using MediatR; + +namespace Backbone.Modules.Files.Module.Features.Files.ExecuteHousekeeping; + +public class ExecuteHousekeepingCommand : IRequest; diff --git a/Modules/Files/src/Files.Application/Files/Commands/ExecuteHousekeeping/Handler.cs b/Modules/Files/src/Files.Module/Features/Files/ExecuteHousekeeping/Handler.cs similarity index 86% rename from Modules/Files/src/Files.Application/Files/Commands/ExecuteHousekeeping/Handler.cs rename to Modules/Files/src/Files.Module/Features/Files/ExecuteHousekeeping/Handler.cs index b01c1f2573..042aefd5e4 100644 --- a/Modules/Files/src/Files.Application/Files/Commands/ExecuteHousekeeping/Handler.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ExecuteHousekeeping/Handler.cs @@ -1,9 +1,9 @@ using Backbone.BuildingBlocks.Application.Housekeeping; -using Backbone.Modules.Files.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Files.Abstractions; using MediatR; using File = Backbone.Modules.Files.Domain.Entities.File; -namespace Backbone.Modules.Files.Application.Files.Commands.ExecuteHousekeeping; +namespace Backbone.Modules.Files.Module.Features.Files.ExecuteHousekeeping; public class Handler : IRequestHandler { diff --git a/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Endpoint.cs b/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Endpoint.cs new file mode 100644 index 0000000000..0eb836336a --- /dev/null +++ b/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Endpoint.cs @@ -0,0 +1,31 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; +using System.Net.Mime; + +namespace Backbone.Modules.Files.Module.Features.Files.GetFileContent; + +internal static class Endpoint +{ + public const string ROUTE_NAME = "ConsumerApi.Files.Download"; + + public static RouteGroupBuilder MapGetFileContentEndpoint(this RouteGroupBuilder group) + { + group.MapGet("{fileId}", Handle) + .WithMetadata(new RouteNameMetadata(ROUTE_NAME)) + .Produces(StatusCodes.Status200OK, MediaTypeNames.Application.Octet) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status404NotFound); + return group; + } + + private static async Task Handle([FromRoute] string fileId, IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new GetFileContentQuery { Id = fileId }, cancellationToken); + return Results.File(response.FileContent, MediaTypeNames.Application.Octet); + } +} diff --git a/Modules/Files/src/Files.Application/Files/Queries/GetFileContent/Handler.cs b/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Handler.cs similarity index 83% rename from Modules/Files/src/Files.Application/Files/Queries/GetFileContent/Handler.cs rename to Modules/Files/src/Files.Module/Features/Files/GetFileContent/Handler.cs index 88df51892d..3489586113 100644 --- a/Modules/Files/src/Files.Application/Files/Queries/GetFileContent/Handler.cs +++ b/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Handler.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.Modules.Files.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Files.Abstractions; using Backbone.Modules.Files.Domain.Entities; using MediatR; using File = System.IO.File; -namespace Backbone.Modules.Files.Application.Files.Queries.GetFileContent; +namespace Backbone.Modules.Files.Module.Features.Files.GetFileContent; public class Handler : IRequestHandler { diff --git a/Modules/Files/src/Files.Application/Files/Queries/GetFileContent/GetFileContentQuery.cs b/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Query.cs similarity index 64% rename from Modules/Files/src/Files.Application/Files/Queries/GetFileContent/GetFileContentQuery.cs rename to Modules/Files/src/Files.Module/Features/Files/GetFileContent/Query.cs index 930a9f2edf..55a7cbbcac 100644 --- a/Modules/Files/src/Files.Application/Files/Queries/GetFileContent/GetFileContentQuery.cs +++ b/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Query.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Files.Application.Files.Queries.GetFileContent; +namespace Backbone.Modules.Files.Module.Features.Files.GetFileContent; public class GetFileContentQuery : IRequest { diff --git a/Modules/Files/src/Files.Application/Files/Queries/GetFileContent/GetFileContentResponse.cs b/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Response.cs similarity index 55% rename from Modules/Files/src/Files.Application/Files/Queries/GetFileContent/GetFileContentResponse.cs rename to Modules/Files/src/Files.Module/Features/Files/GetFileContent/Response.cs index fd9e668979..8636a3ad26 100644 --- a/Modules/Files/src/Files.Application/Files/Queries/GetFileContent/GetFileContentResponse.cs +++ b/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Response.cs @@ -1,4 +1,4 @@ -namespace Backbone.Modules.Files.Application.Files.Queries.GetFileContent; +namespace Backbone.Modules.Files.Module.Features.Files.GetFileContent; public class GetFileContentResponse { diff --git a/Modules/Files/src/Files.Application/Files/Queries/GetFileContent/Validator.cs b/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Validator.cs similarity index 79% rename from Modules/Files/src/Files.Application/Files/Queries/GetFileContent/Validator.cs rename to Modules/Files/src/Files.Module/Features/Files/GetFileContent/Validator.cs index 47a697dd1e..a2dff9ce11 100644 --- a/Modules/Files/src/Files.Application/Files/Queries/GetFileContent/Validator.cs +++ b/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Validator.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Files.Domain.Entities; using FluentValidation; -namespace Backbone.Modules.Files.Application.Files.Queries.GetFileContent; +namespace Backbone.Modules.Files.Module.Features.Files.GetFileContent; public class Validator : AbstractValidator { diff --git a/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Endpoint.cs b/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Endpoint.cs new file mode 100644 index 0000000000..ac431a29c9 --- /dev/null +++ b/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Endpoint.cs @@ -0,0 +1,28 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using Backbone.Modules.Files.Module.Features.Files.Shared; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Files.Module.Features.Files.GetFileMetadata; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapGetFileMetadataEndpoint(this RouteGroupBuilder group) + { + group.MapGet("{fileId}/Metadata", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status404NotFound); + return group; + } + + private static async Task Handle([FromRoute] string fileId, IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new GetFileMetadataQuery { Id = fileId }, cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Files/src/Files.Application/Files/Queries/GetFileMetadata/Handler.cs b/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Handler.cs similarity index 78% rename from Modules/Files/src/Files.Application/Files/Queries/GetFileMetadata/Handler.cs rename to Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Handler.cs index 1ac6c82fbb..178970306b 100644 --- a/Modules/Files/src/Files.Application/Files/Queries/GetFileMetadata/Handler.cs +++ b/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Handler.cs @@ -1,11 +1,11 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.Modules.Files.Application.Files.DTOs; -using Backbone.Modules.Files.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Files.Module.Features.Files.Shared; +using Backbone.Modules.Files.Abstractions; using Backbone.Modules.Files.Domain.Entities; using MediatR; using File = Backbone.Modules.Files.Domain.Entities.File; -namespace Backbone.Modules.Files.Application.Files.Queries.GetFileMetadata; +namespace Backbone.Modules.Files.Module.Features.Files.GetFileMetadata; public class Handler : IRequestHandler { diff --git a/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Query.cs b/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Query.cs new file mode 100644 index 0000000000..7f04380ce1 --- /dev/null +++ b/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Query.cs @@ -0,0 +1,9 @@ +using Backbone.Modules.Files.Module.Features.Files.Shared; +using MediatR; + +namespace Backbone.Modules.Files.Module.Features.Files.GetFileMetadata; + +public class GetFileMetadataQuery : IRequest +{ + public required string Id { get; init; } +} diff --git a/Modules/Files/src/Files.Application/Files/Queries/GetFileMetadata/Validator.cs b/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Validator.cs similarity index 79% rename from Modules/Files/src/Files.Application/Files/Queries/GetFileMetadata/Validator.cs rename to Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Validator.cs index c7fbfe89d3..cc90888ad6 100644 --- a/Modules/Files/src/Files.Application/Files/Queries/GetFileMetadata/Validator.cs +++ b/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Validator.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Files.Domain.Entities; using FluentValidation; -namespace Backbone.Modules.Files.Application.Files.Queries.GetFileMetadata; +namespace Backbone.Modules.Files.Module.Features.Files.GetFileMetadata; public class Validator : AbstractValidator { diff --git a/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Endpoint.cs b/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Endpoint.cs new file mode 100644 index 0000000000..e32e4d409e --- /dev/null +++ b/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Endpoint.cs @@ -0,0 +1,35 @@ +using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; +using Backbone.BuildingBlocks.Application.Pagination; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; +using Microsoft.Extensions.Options; + +namespace Backbone.Modules.Files.Module.Features.Files.ListFileMetadata; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapListFileMetadataEndpoint(this RouteGroupBuilder group) + { + group.MapGet("", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest); + return group; + } + + private static async Task Handle([FromQuery(Name = "PageNumber")] int? pageNumber, [FromQuery(Name = "PageSize")] int? pageSize, + [FromQuery] string[]? ids, IMediator mediator, IOptions options, CancellationToken cancellationToken) + { + var paginationFilter = new PaginationFilter { PageNumber = pageNumber ?? 1, PageSize = pageSize ?? options.Value.Pagination.DefaultPageSize }; + if (paginationFilter.PageSize > options.Value.Pagination.MaxPageSize) + throw new ApplicationException(GenericApplicationErrors.Validation.InvalidPageSize(options.Value.Pagination.MaxPageSize)); + + var response = await mediator.Send(new ListFileMetadataQuery { PaginationFilter = paginationFilter, Ids = ids ?? [] }, cancellationToken); + return EnvelopeHttpResults.Paged(response); + } +} diff --git a/Modules/Files/src/Files.Application/Files/Queries/ListFileMetadata/Handler.cs b/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Handler.cs similarity index 85% rename from Modules/Files/src/Files.Application/Files/Queries/ListFileMetadata/Handler.cs rename to Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Handler.cs index a57a20e23a..c2d8a15615 100644 --- a/Modules/Files/src/Files.Application/Files/Queries/ListFileMetadata/Handler.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Handler.cs @@ -1,9 +1,9 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; -using Backbone.Modules.Files.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Files.Abstractions; using Backbone.Modules.Files.Domain.Entities; using MediatR; -namespace Backbone.Modules.Files.Application.Files.Queries.ListFileMetadata; +namespace Backbone.Modules.Files.Module.Features.Files.ListFileMetadata; public class Handler : IRequestHandler { diff --git a/Modules/Files/src/Files.Application/Files/Queries/ListFileMetadata/ListFileMetadataQuery.cs b/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Query.cs similarity index 78% rename from Modules/Files/src/Files.Application/Files/Queries/ListFileMetadata/ListFileMetadataQuery.cs rename to Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Query.cs index bd3bebf93e..4b7924be58 100644 --- a/Modules/Files/src/Files.Application/Files/Queries/ListFileMetadata/ListFileMetadataQuery.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Query.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.Pagination; using MediatR; -namespace Backbone.Modules.Files.Application.Files.Queries.ListFileMetadata; +namespace Backbone.Modules.Files.Module.Features.Files.ListFileMetadata; public class ListFileMetadataQuery : IRequest { diff --git a/Modules/Files/src/Files.Application/Files/Queries/ListFileMetadata/ListFileMetadataResponse.cs b/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Response.cs similarity index 80% rename from Modules/Files/src/Files.Application/Files/Queries/ListFileMetadata/ListFileMetadataResponse.cs rename to Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Response.cs index 609e3e12a3..cb09c82e7c 100644 --- a/Modules/Files/src/Files.Application/Files/Queries/ListFileMetadata/ListFileMetadataResponse.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Response.cs @@ -1,9 +1,9 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.Persistence.Database; using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.Modules.Files.Application.Files.DTOs; +using Backbone.Modules.Files.Module.Features.Files.Shared; using File = Backbone.Modules.Files.Domain.Entities.File; -namespace Backbone.Modules.Files.Application.Files.Queries.ListFileMetadata; +namespace Backbone.Modules.Files.Module.Features.Files.ListFileMetadata; public class ListFileMetadataResponse : PagedResponse { diff --git a/Modules/Files/src/Files.Application/Files/Queries/ListFileMetadata/Validator.cs b/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Validator.cs similarity index 80% rename from Modules/Files/src/Files.Application/Files/Queries/ListFileMetadata/Validator.cs rename to Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Validator.cs index ec3f2c0506..109c2fc9eb 100644 --- a/Modules/Files/src/Files.Application/Files/Queries/ListFileMetadata/Validator.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Validator.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Files.Domain.Entities; using FluentValidation; -namespace Backbone.Modules.Files.Application.Files.Queries.ListFileMetadata; +namespace Backbone.Modules.Files.Module.Features.Files.ListFileMetadata; public class Validator : AbstractValidator { diff --git a/Modules/Files/src/Files.Application/Files/Commands/RegenerateFileOwnershipToken/RegenerateFileOwnershipTokenCommand.cs b/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Command.cs similarity index 65% rename from Modules/Files/src/Files.Application/Files/Commands/RegenerateFileOwnershipToken/RegenerateFileOwnershipTokenCommand.cs rename to Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Command.cs index 23684e7b54..fefdc4f403 100644 --- a/Modules/Files/src/Files.Application/Files/Commands/RegenerateFileOwnershipToken/RegenerateFileOwnershipTokenCommand.cs +++ b/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Files.Application.Files.Commands.RegenerateFileOwnershipToken; +namespace Backbone.Modules.Files.Module.Features.Files.RegenerateFileOwnershipToken; public class RegenerateFileOwnershipTokenCommand : IRequest { diff --git a/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Endpoint.cs b/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Endpoint.cs new file mode 100644 index 0000000000..147ec5a013 --- /dev/null +++ b/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Endpoint.cs @@ -0,0 +1,28 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Files.Module.Features.Files.RegenerateFileOwnershipToken; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapRegenerateFileOwnershipTokenEndpoint(this RouteGroupBuilder group) + { + group.MapPatch("{fileId}/RegenerateOwnershipToken", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status403Forbidden) + .Produces(StatusCodes.Status404NotFound); + return group; + } + + private static async Task Handle([FromRoute] string fileId, IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new RegenerateFileOwnershipTokenCommand { FileId = fileId }, cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Files/src/Files.Application/Files/Commands/RegenerateFileOwnershipToken/Handler.cs b/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Handler.cs similarity index 87% rename from Modules/Files/src/Files.Application/Files/Commands/RegenerateFileOwnershipToken/Handler.cs rename to Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Handler.cs index 2935536bb3..2f7873ee38 100644 --- a/Modules/Files/src/Files.Application/Files/Commands/RegenerateFileOwnershipToken/Handler.cs +++ b/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Handler.cs @@ -1,12 +1,12 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Files.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Files.Abstractions; using Backbone.Modules.Files.Domain.Entities; using MediatR; using File = System.IO.File; -namespace Backbone.Modules.Files.Application.Files.Commands.RegenerateFileOwnershipToken; +namespace Backbone.Modules.Files.Module.Features.Files.RegenerateFileOwnershipToken; public class Handler : IRequestHandler { diff --git a/Modules/Files/src/Files.Application/Files/Commands/RegenerateFileOwnershipToken/RegenerateFileOwnershipTokenResponse.cs b/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Response.cs similarity index 76% rename from Modules/Files/src/Files.Application/Files/Commands/RegenerateFileOwnershipToken/RegenerateFileOwnershipTokenResponse.cs rename to Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Response.cs index 4253ee89e6..1764ca936b 100644 --- a/Modules/Files/src/Files.Application/Files/Commands/RegenerateFileOwnershipToken/RegenerateFileOwnershipTokenResponse.cs +++ b/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Response.cs @@ -1,6 +1,6 @@ using File = Backbone.Modules.Files.Domain.Entities.File; -namespace Backbone.Modules.Files.Application.Files.Commands.RegenerateFileOwnershipToken; +namespace Backbone.Modules.Files.Module.Features.Files.RegenerateFileOwnershipToken; public class RegenerateFileOwnershipTokenResponse { diff --git a/Modules/Files/src/Files.Application/Files/Commands/RegenerateFileOwnershipToken/Validator.cs b/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Validator.cs similarity index 78% rename from Modules/Files/src/Files.Application/Files/Commands/RegenerateFileOwnershipToken/Validator.cs rename to Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Validator.cs index 8bae870164..d2ac3a939c 100644 --- a/Modules/Files/src/Files.Application/Files/Commands/RegenerateFileOwnershipToken/Validator.cs +++ b/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Validator.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Files.Domain.Entities; using FluentValidation; -namespace Backbone.Modules.Files.Application.Files.Commands.RegenerateFileOwnershipToken; +namespace Backbone.Modules.Files.Module.Features.Files.RegenerateFileOwnershipToken; public class Validator : AbstractValidator { diff --git a/Modules/Files/src/Files.Application/Files/DTOs/FileMetadataDTO.cs b/Modules/Files/src/Files.Module/Features/Files/Shared/FileMetadataDTO.cs similarity index 96% rename from Modules/Files/src/Files.Application/Files/DTOs/FileMetadataDTO.cs rename to Modules/Files/src/Files.Module/Features/Files/Shared/FileMetadataDTO.cs index 871b17488a..8e349450f8 100644 --- a/Modules/Files/src/Files.Application/Files/DTOs/FileMetadataDTO.cs +++ b/Modules/Files/src/Files.Module/Features/Files/Shared/FileMetadataDTO.cs @@ -1,6 +1,6 @@ using File = Backbone.Modules.Files.Domain.Entities.File; -namespace Backbone.Modules.Files.Application.Files.DTOs; +namespace Backbone.Modules.Files.Module.Features.Files.Shared; public class FileMetadataDTO { diff --git a/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Endpoint.cs b/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Endpoint.cs new file mode 100644 index 0000000000..601c22d3e4 --- /dev/null +++ b/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Endpoint.cs @@ -0,0 +1,29 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; +using Backbone.Modules.Files.Module.Features.Files.ValidateFileOwnershipToken.Http; + +namespace Backbone.Modules.Files.Module.Features.Files.ValidateFileOwnershipToken; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapValidateFileOwnershipTokenEndpoint(this RouteGroupBuilder group) + { + group.MapPost("{fileId}/ValidateOwnershipToken", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status403Forbidden) + .Produces(StatusCodes.Status404NotFound); + return group; + } + + private static async Task Handle([FromRoute] string fileId, [FromBody] ValidateFileOwnershipTokenRequest request, IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new ValidateFileOwnershipTokenQuery { FileId = fileId, OwnershipToken = request.OwnershipToken }, cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Files/src/Files.Application/Files/Queries/ValidateFileOwnershipToken/Handler.cs b/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Handler.cs similarity index 88% rename from Modules/Files/src/Files.Application/Files/Queries/ValidateFileOwnershipToken/Handler.cs rename to Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Handler.cs index 3e1b9affff..42d5bfb39a 100644 --- a/Modules/Files/src/Files.Application/Files/Queries/ValidateFileOwnershipToken/Handler.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Handler.cs @@ -1,12 +1,12 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Files.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Files.Abstractions; using Backbone.Modules.Files.Domain.Entities; using MediatR; using File = System.IO.File; -namespace Backbone.Modules.Files.Application.Files.Queries.ValidateFileOwnershipToken; +namespace Backbone.Modules.Files.Module.Features.Files.ValidateFileOwnershipToken; public class Handler : IRequestHandler { diff --git a/Applications/ConsumerApi/src/Controllers/Files/DTOs/ValidateFileOwnershipTokenRequest.cs b/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Http/RequestBody.cs similarity index 55% rename from Applications/ConsumerApi/src/Controllers/Files/DTOs/ValidateFileOwnershipTokenRequest.cs rename to Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Http/RequestBody.cs index 5ba30e0e4d..c25cdd80c6 100644 --- a/Applications/ConsumerApi/src/Controllers/Files/DTOs/ValidateFileOwnershipTokenRequest.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Http/RequestBody.cs @@ -1,4 +1,4 @@ -namespace Backbone.ConsumerApi.Controllers.Files.DTOs; +namespace Backbone.Modules.Files.Module.Features.Files.ValidateFileOwnershipToken.Http; public class ValidateFileOwnershipTokenRequest { diff --git a/Modules/Files/src/Files.Application/Files/Queries/ValidateFileOwnershipToken/ValidateFileOwnershipTokenQuery.cs b/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Query.cs similarity index 71% rename from Modules/Files/src/Files.Application/Files/Queries/ValidateFileOwnershipToken/ValidateFileOwnershipTokenQuery.cs rename to Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Query.cs index ddecfb2641..03f19a83b3 100644 --- a/Modules/Files/src/Files.Application/Files/Queries/ValidateFileOwnershipToken/ValidateFileOwnershipTokenQuery.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Query.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Files.Application.Files.Queries.ValidateFileOwnershipToken; +namespace Backbone.Modules.Files.Module.Features.Files.ValidateFileOwnershipToken; public class ValidateFileOwnershipTokenQuery : IRequest { diff --git a/Modules/Files/src/Files.Application/Files/Queries/ValidateFileOwnershipToken/ValidateFileOwnershipTokenResponse.cs b/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Response.cs similarity index 53% rename from Modules/Files/src/Files.Application/Files/Queries/ValidateFileOwnershipToken/ValidateFileOwnershipTokenResponse.cs rename to Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Response.cs index 596a5d1bc8..cd51d200b1 100644 --- a/Modules/Files/src/Files.Application/Files/Queries/ValidateFileOwnershipToken/ValidateFileOwnershipTokenResponse.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Response.cs @@ -1,4 +1,4 @@ -namespace Backbone.Modules.Files.Application.Files.Queries.ValidateFileOwnershipToken; +namespace Backbone.Modules.Files.Module.Features.Files.ValidateFileOwnershipToken; public class ValidateFileOwnershipTokenResponse { diff --git a/Modules/Files/src/Files.Application/Files/Queries/ValidateFileOwnershipToken/Validator.cs b/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Validator.cs similarity index 89% rename from Modules/Files/src/Files.Application/Files/Queries/ValidateFileOwnershipToken/Validator.cs rename to Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Validator.cs index 2ae580485a..5a1bdcf0fc 100644 --- a/Modules/Files/src/Files.Application/Files/Queries/ValidateFileOwnershipToken/Validator.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Validator.cs @@ -4,7 +4,7 @@ using Backbone.Modules.Files.Domain.Entities; using FluentValidation; -namespace Backbone.Modules.Files.Application.Files.Queries.ValidateFileOwnershipToken; +namespace Backbone.Modules.Files.Module.Features.Files.ValidateFileOwnershipToken; public class Validator : AbstractValidator { diff --git a/Modules/Files/src/Files.Application/Identities/Commands/AnonymizeCreatedByOfFiles/AnonymizeCreatedByOfFilesCommand.cs b/Modules/Files/src/Files.Module/Features/Identities/AnonymizeCreatedByOfFiles/Command.cs similarity index 60% rename from Modules/Files/src/Files.Application/Identities/Commands/AnonymizeCreatedByOfFiles/AnonymizeCreatedByOfFilesCommand.cs rename to Modules/Files/src/Files.Module/Features/Identities/AnonymizeCreatedByOfFiles/Command.cs index 7e1756b822..312e6ad620 100644 --- a/Modules/Files/src/Files.Application/Identities/Commands/AnonymizeCreatedByOfFiles/AnonymizeCreatedByOfFilesCommand.cs +++ b/Modules/Files/src/Files.Module/Features/Identities/AnonymizeCreatedByOfFiles/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Files.Application.Identities.Commands.AnonymizeCreatedByOfFiles; +namespace Backbone.Modules.Files.Module.Features.Identities.AnonymizeCreatedByOfFiles; public class AnonymizeCreatedByOfFilesCommand : IRequest { diff --git a/Modules/Files/src/Files.Application/Identities/Commands/AnonymizeCreatedByOfFiles/Handler.cs b/Modules/Files/src/Files.Module/Features/Identities/AnonymizeCreatedByOfFiles/Handler.cs similarity index 86% rename from Modules/Files/src/Files.Application/Identities/Commands/AnonymizeCreatedByOfFiles/Handler.cs rename to Modules/Files/src/Files.Module/Features/Identities/AnonymizeCreatedByOfFiles/Handler.cs index 7944051fb7..28f8f13223 100644 --- a/Modules/Files/src/Files.Application/Identities/Commands/AnonymizeCreatedByOfFiles/Handler.cs +++ b/Modules/Files/src/Files.Module/Features/Identities/AnonymizeCreatedByOfFiles/Handler.cs @@ -1,10 +1,10 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Files.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Files.Abstractions; using MediatR; using Microsoft.Extensions.Options; using static Backbone.Modules.Files.Domain.Entities.File; -namespace Backbone.Modules.Files.Application.Identities.Commands.AnonymizeCreatedByOfFiles; +namespace Backbone.Modules.Files.Module.Features.Identities.AnonymizeCreatedByOfFiles; public class Handler : IRequestHandler { diff --git a/Modules/Files/src/Files.Application/Identities/Commands/AnonymizeCreatedByOfFiles/Validator.cs b/Modules/Files/src/Files.Module/Features/Identities/AnonymizeCreatedByOfFiles/Validator.cs similarity index 79% rename from Modules/Files/src/Files.Application/Identities/Commands/AnonymizeCreatedByOfFiles/Validator.cs rename to Modules/Files/src/Files.Module/Features/Identities/AnonymizeCreatedByOfFiles/Validator.cs index fd339f5b99..6eadb06233 100644 --- a/Modules/Files/src/Files.Application/Identities/Commands/AnonymizeCreatedByOfFiles/Validator.cs +++ b/Modules/Files/src/Files.Module/Features/Identities/AnonymizeCreatedByOfFiles/Validator.cs @@ -2,7 +2,7 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; using FluentValidation; -namespace Backbone.Modules.Files.Application.Identities.Commands.AnonymizeCreatedByOfFiles; +namespace Backbone.Modules.Files.Module.Features.Identities.AnonymizeCreatedByOfFiles; public class Validator : AbstractValidator { diff --git a/Modules/Files/src/Files.Application/Identities/Commands/DeleteFilesOfIdentity/DeleteFilesOfIdentityCommand.cs b/Modules/Files/src/Files.Module/Features/Identities/DeleteFilesOfIdentity/Command.cs similarity index 60% rename from Modules/Files/src/Files.Application/Identities/Commands/DeleteFilesOfIdentity/DeleteFilesOfIdentityCommand.cs rename to Modules/Files/src/Files.Module/Features/Identities/DeleteFilesOfIdentity/Command.cs index bd4ecc6ba3..3354c25f9c 100644 --- a/Modules/Files/src/Files.Application/Identities/Commands/DeleteFilesOfIdentity/DeleteFilesOfIdentityCommand.cs +++ b/Modules/Files/src/Files.Module/Features/Identities/DeleteFilesOfIdentity/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Files.Application.Identities.Commands.DeleteFilesOfIdentity; +namespace Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; public class DeleteFilesOfIdentityCommand : IRequest { diff --git a/Modules/Files/src/Files.Application/Identities/Commands/DeleteFilesOfIdentity/Handler.cs b/Modules/Files/src/Files.Module/Features/Identities/DeleteFilesOfIdentity/Handler.cs similarity index 75% rename from Modules/Files/src/Files.Application/Identities/Commands/DeleteFilesOfIdentity/Handler.cs rename to Modules/Files/src/Files.Module/Features/Identities/DeleteFilesOfIdentity/Handler.cs index 886cb24fbd..a6d726468c 100644 --- a/Modules/Files/src/Files.Application/Identities/Commands/DeleteFilesOfIdentity/Handler.cs +++ b/Modules/Files/src/Files.Module/Features/Identities/DeleteFilesOfIdentity/Handler.cs @@ -1,8 +1,8 @@ -using Backbone.Modules.Files.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Files.Abstractions; using MediatR; using static Backbone.Modules.Files.Domain.Entities.File; -namespace Backbone.Modules.Files.Application.Identities.Commands.DeleteFilesOfIdentity; +namespace Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; public class Handler : IRequestHandler { diff --git a/Modules/Files/src/Files.Application/Identities/Commands/DeleteFilesOfIdentity/Validator.cs b/Modules/Files/src/Files.Module/Features/Identities/DeleteFilesOfIdentity/Validator.cs similarity index 79% rename from Modules/Files/src/Files.Application/Identities/Commands/DeleteFilesOfIdentity/Validator.cs rename to Modules/Files/src/Files.Module/Features/Identities/DeleteFilesOfIdentity/Validator.cs index 9809a1c09a..cd07af15a4 100644 --- a/Modules/Files/src/Files.Application/Identities/Commands/DeleteFilesOfIdentity/Validator.cs +++ b/Modules/Files/src/Files.Module/Features/Identities/DeleteFilesOfIdentity/Validator.cs @@ -2,7 +2,7 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; using FluentValidation; -namespace Backbone.Modules.Files.Application.Identities.Commands.DeleteFilesOfIdentity; +namespace Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; public class Validator : AbstractValidator { diff --git a/Modules/Files/src/Files.Application/Identities/IdentityDeleter.cs b/Modules/Files/src/Files.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs similarity index 77% rename from Modules/Files/src/Files.Application/Identities/IdentityDeleter.cs rename to Modules/Files/src/Files.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs index dd706f8cf8..46a442b12a 100644 --- a/Modules/Files/src/Files.Application/Identities/IdentityDeleter.cs +++ b/Modules/Files/src/Files.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Identities; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Files.Application.Identities.Commands.AnonymizeCreatedByOfFiles; -using Backbone.Modules.Files.Application.Identities.Commands.DeleteFilesOfIdentity; +using Backbone.Modules.Files.Module.Features.Identities.AnonymizeCreatedByOfFiles; +using Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; using MediatR; -namespace Backbone.Modules.Files.Application.Identities; +namespace Backbone.Modules.Files.Module.Features.Identities.DeleteIdentity; public class IdentityDeleter : IIdentityDeleter { diff --git a/Modules/Files/src/Files.Module/Files.Module.csproj b/Modules/Files/src/Files.Module/Files.Module.csproj index 400678582b..10b19d1773 100644 --- a/Modules/Files/src/Files.Module/Files.Module.csproj +++ b/Modules/Files/src/Files.Module/Files.Module.csproj @@ -4,7 +4,7 @@ - + @@ -12,6 +12,7 @@ + diff --git a/Modules/Files/src/Files.Module/FilesEndpointExtensions.cs b/Modules/Files/src/Files.Module/FilesEndpointExtensions.cs new file mode 100644 index 0000000000..fee4e7d20a --- /dev/null +++ b/Modules/Files/src/Files.Module/FilesEndpointExtensions.cs @@ -0,0 +1,30 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.Modules.Files.Module.Features.Files.CreateFile; +using Backbone.Modules.Files.Module.Features.Files.GetFileContent; +using Backbone.Modules.Files.Module.Features.Files.GetFileMetadata; +using Backbone.Modules.Files.Module.Features.Files.RegenerateFileOwnershipToken; +using Backbone.Modules.Files.Module.Features.Files.ClaimFileOwnership; +using Backbone.Modules.Files.Module.Features.Files.ValidateFileOwnershipToken; +using Backbone.Modules.Files.Module.Features.Files.DeleteFile; +using Backbone.Modules.Files.Module.Features.Files.ListFileMetadata; +using Microsoft.AspNetCore.Routing; +using OpenIddict.Validation.AspNetCore; + +namespace Backbone.Modules.Files.Module; + +public static class FilesEndpointExtensions +{ + public static IEndpointRouteBuilder MapFilesEndpoints(this IEndpointRouteBuilder endpoints) + { + var group = endpoints.MapVersionedEndpointGroup("Files", "Files", 2, OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme); + group.MapCreateFileEndpoint(); + group.MapGetFileContentEndpoint(); + group.MapGetFileMetadataEndpoint(); + group.MapRegenerateFileOwnershipTokenEndpoint(); + group.MapClaimFileOwnershipEndpoint(); + group.MapValidateFileOwnershipTokenEndpoint(); + group.MapDeleteFileEndpoint(); + group.MapListFileMetadataEndpoint(); + return endpoints; + } +} diff --git a/Modules/Files/src/Files.Module/FilesModule.cs b/Modules/Files/src/Files.Module/FilesModule.cs index d1c94ee29f..546e717c29 100644 --- a/Modules/Files/src/Files.Module/FilesModule.cs +++ b/Modules/Files/src/Files.Module/FilesModule.cs @@ -1,8 +1,6 @@ using Backbone.BuildingBlocks.API.Extensions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Module; -using Backbone.Modules.Files.Application; -using Backbone.Modules.Files.Application.Extensions; using Backbone.Modules.Files.Infrastructure; using Backbone.Modules.Files.Infrastructure.Persistence; using Microsoft.Extensions.Configuration; diff --git a/Modules/Files/src/Files.Module/packages.lock.json b/Modules/Files/src/Files.Module/packages.lock.json index d3be6e54a4..5b373c2823 100644 --- a/Modules/Files/src/Files.Module/packages.lock.json +++ b/Modules/Files/src/Files.Module/packages.lock.json @@ -2,6 +2,16 @@ "version": 2, "dependencies": { "net10.0": { + "FluentValidation.DependencyInjectionExtensions": { + "type": "Direct", + "requested": "[12.1.1, 12.1.1]", + "resolved": "12.1.1", + "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", + "dependencies": { + "FluentValidation": "12.1.1", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" + } + }, "ReHackt.Extensions.Options.Validation": { "type": "Direct", "requested": "[10.0.1, 10.0.1]", @@ -1274,13 +1284,11 @@ "Polly": "[8.7.0, 8.7.0]" } }, - "Backbone.Modules.Files.Application": { + "Backbone.Modules.Files.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Files.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Files.Domain": "[1.0.0, )" } }, "Backbone.Modules.Files.Contracts": { @@ -1300,9 +1308,9 @@ "Backbone.Modules.Files.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Files.Application": "[1.0.0, )", + "Backbone.Modules.Files.Abstractions": "[1.0.0, )", "Backbone.Modules.Files.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1481,16 +1489,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", diff --git a/Modules/Files/test/Files.Infrastructure.Tests/Tests/Repositories/FilesRepositoryTests.cs b/Modules/Files/test/Files.Infrastructure.Tests/Tests/Repositories/FilesRepositoryTests.cs index c3467d09d5..dc0d8d3ca1 100644 --- a/Modules/Files/test/Files.Infrastructure.Tests/Tests/Repositories/FilesRepositoryTests.cs +++ b/Modules/Files/test/Files.Infrastructure.Tests/Tests/Repositories/FilesRepositoryTests.cs @@ -1,7 +1,7 @@ using System.Data.Common; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.Persistence.BlobStorage; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Files.Application.Infrastructure.Persistence; +using Backbone.Modules.Files.Abstractions; using Backbone.Modules.Files.Domain.Entities; using Backbone.Modules.Files.Infrastructure.Persistence.Database; using Backbone.Modules.Files.Infrastructure.Persistence.Database.Repository; diff --git a/Modules/Files/test/Files.Infrastructure.Tests/packages.lock.json b/Modules/Files/test/Files.Infrastructure.Tests/packages.lock.json index 37bb9361eb..088d0b341f 100644 --- a/Modules/Files/test/Files.Infrastructure.Tests/packages.lock.json +++ b/Modules/Files/test/Files.Infrastructure.Tests/packages.lock.json @@ -936,13 +936,11 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Files.Application": { + "Backbone.Modules.Files.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Files.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Files.Domain": "[1.0.0, )" } }, "Backbone.Modules.Files.Contracts": { @@ -962,9 +960,9 @@ "Backbone.Modules.Files.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Files.Application": "[1.0.0, )", + "Backbone.Modules.Files.Abstractions": "[1.0.0, )", "Backbone.Modules.Files.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1073,16 +1071,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", diff --git a/Modules/Files/test/Files.Application.Tests/Files.Application.Tests.csproj b/Modules/Files/test/Files.Module.Tests/Files.Module.Tests.csproj similarity index 86% rename from Modules/Files/test/Files.Application.Tests/Files.Application.Tests.csproj rename to Modules/Files/test/Files.Module.Tests/Files.Module.Tests.csproj index 3f92b905a9..9ca765ba75 100644 --- a/Modules/Files/test/Files.Application.Tests/Files.Application.Tests.csproj +++ b/Modules/Files/test/Files.Module.Tests/Files.Module.Tests.csproj @@ -15,7 +15,7 @@ - + diff --git a/Modules/Files/test/Files.Application.Tests/Tests/Files/Queries/GetFileContent/ValidatorTests.cs b/Modules/Files/test/Files.Module.Tests/Tests/Files/Queries/GetFileContent/ValidatorTests.cs similarity index 84% rename from Modules/Files/test/Files.Application.Tests/Tests/Files/Queries/GetFileContent/ValidatorTests.cs rename to Modules/Files/test/Files.Module.Tests/Tests/Files/Queries/GetFileContent/ValidatorTests.cs index f40acb4dc5..448bb80a40 100644 --- a/Modules/Files/test/Files.Application.Tests/Tests/Files/Queries/GetFileContent/ValidatorTests.cs +++ b/Modules/Files/test/Files.Module.Tests/Tests/Files/Queries/GetFileContent/ValidatorTests.cs @@ -1,9 +1,9 @@ -using Backbone.Modules.Files.Application.Files.Queries.GetFileContent; +using Backbone.Modules.Files.Module.Features.Files.GetFileContent; using Backbone.Modules.Files.Domain.Entities; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Files.Application.Tests.Tests.Files.Queries.GetFileContent; +namespace Backbone.Modules.Files.Module.Tests.Tests.Files.Queries.GetFileContent; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Files/test/Files.Application.Tests/Tests/Files/Queries/GetFileMetadata/ValidatorTests.cs b/Modules/Files/test/Files.Module.Tests/Tests/Files/Queries/GetFileMetadata/ValidatorTests.cs similarity index 84% rename from Modules/Files/test/Files.Application.Tests/Tests/Files/Queries/GetFileMetadata/ValidatorTests.cs rename to Modules/Files/test/Files.Module.Tests/Tests/Files/Queries/GetFileMetadata/ValidatorTests.cs index 2980f1c24d..abcc8e9e8c 100644 --- a/Modules/Files/test/Files.Application.Tests/Tests/Files/Queries/GetFileMetadata/ValidatorTests.cs +++ b/Modules/Files/test/Files.Module.Tests/Tests/Files/Queries/GetFileMetadata/ValidatorTests.cs @@ -1,9 +1,9 @@ -using Backbone.Modules.Files.Application.Files.Queries.GetFileMetadata; +using Backbone.Modules.Files.Module.Features.Files.GetFileMetadata; using Backbone.Modules.Files.Domain.Entities; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Files.Application.Tests.Tests.Files.Queries.GetFileMetadata; +namespace Backbone.Modules.Files.Module.Tests.Tests.Files.Queries.GetFileMetadata; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Files/test/Files.Application.Tests/Tests/Files/Queries/ListFileMetadata/ValidatorTests.cs b/Modules/Files/test/Files.Module.Tests/Tests/Files/Queries/ListFileMetadata/ValidatorTests.cs similarity index 87% rename from Modules/Files/test/Files.Application.Tests/Tests/Files/Queries/ListFileMetadata/ValidatorTests.cs rename to Modules/Files/test/Files.Module.Tests/Tests/Files/Queries/ListFileMetadata/ValidatorTests.cs index e6eab2b42e..4571d9489a 100644 --- a/Modules/Files/test/Files.Application.Tests/Tests/Files/Queries/ListFileMetadata/ValidatorTests.cs +++ b/Modules/Files/test/Files.Module.Tests/Tests/Files/Queries/ListFileMetadata/ValidatorTests.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.Modules.Files.Application.Files.Queries.ListFileMetadata; +using Backbone.Modules.Files.Module.Features.Files.ListFileMetadata; using Backbone.Modules.Files.Domain.Entities; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Files.Application.Tests.Tests.Files.Queries.ListFileMetadata; +namespace Backbone.Modules.Files.Module.Tests.Tests.Files.Queries.ListFileMetadata; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Files/test/Files.Application.Tests/Tests/Identities/Commands/DeleteFilesOfIdentity/HandlerTests.cs b/Modules/Files/test/Files.Module.Tests/Tests/Identities/Commands/DeleteFilesOfIdentity/HandlerTests.cs similarity index 78% rename from Modules/Files/test/Files.Application.Tests/Tests/Identities/Commands/DeleteFilesOfIdentity/HandlerTests.cs rename to Modules/Files/test/Files.Module.Tests/Tests/Identities/Commands/DeleteFilesOfIdentity/HandlerTests.cs index e99e4bc004..32540a8a87 100644 --- a/Modules/Files/test/Files.Application.Tests/Tests/Identities/Commands/DeleteFilesOfIdentity/HandlerTests.cs +++ b/Modules/Files/test/Files.Module.Tests/Tests/Identities/Commands/DeleteFilesOfIdentity/HandlerTests.cs @@ -1,10 +1,10 @@ using System.Linq.Expressions; -using Backbone.Modules.Files.Application.Identities.Commands.DeleteFilesOfIdentity; -using Backbone.Modules.Files.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; +using Backbone.Modules.Files.Abstractions; using FakeItEasy; using File = Backbone.Modules.Files.Domain.Entities.File; -namespace Backbone.Modules.Files.Application.Tests.Tests.Identities.Commands.DeleteFilesOfIdentity; +namespace Backbone.Modules.Files.Module.Tests.Tests.Identities.Commands.DeleteFilesOfIdentity; public class HandlerTests : AbstractTestsBase { diff --git a/Modules/Files/test/Files.Application.Tests/Tests/Identities/Commands/DeleteFilesOfIdentity/ValidatorTests.cs b/Modules/Files/test/Files.Module.Tests/Tests/Identities/Commands/DeleteFilesOfIdentity/ValidatorTests.cs similarity index 82% rename from Modules/Files/test/Files.Application.Tests/Tests/Identities/Commands/DeleteFilesOfIdentity/ValidatorTests.cs rename to Modules/Files/test/Files.Module.Tests/Tests/Identities/Commands/DeleteFilesOfIdentity/ValidatorTests.cs index 033890a015..0df02cbc64 100644 --- a/Modules/Files/test/Files.Application.Tests/Tests/Identities/Commands/DeleteFilesOfIdentity/ValidatorTests.cs +++ b/Modules/Files/test/Files.Module.Tests/Tests/Identities/Commands/DeleteFilesOfIdentity/ValidatorTests.cs @@ -1,8 +1,8 @@ -using Backbone.Modules.Files.Application.Identities.Commands.DeleteFilesOfIdentity; +using Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Files.Application.Tests.Tests.Identities.Commands.DeleteFilesOfIdentity; +namespace Backbone.Modules.Files.Module.Tests.Tests.Identities.Commands.DeleteFilesOfIdentity; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Files/test/Files.Application.Tests/Tests/Identities/IdentityDeleterTests.cs b/Modules/Files/test/Files.Module.Tests/Tests/Identities/IdentityDeleterTests.cs similarity index 86% rename from Modules/Files/test/Files.Application.Tests/Tests/Identities/IdentityDeleterTests.cs rename to Modules/Files/test/Files.Module.Tests/Tests/Identities/IdentityDeleterTests.cs index d41b03b44f..acf418c8d8 100644 --- a/Modules/Files/test/Files.Application.Tests/Tests/Identities/IdentityDeleterTests.cs +++ b/Modules/Files/test/Files.Module.Tests/Tests/Identities/IdentityDeleterTests.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Identities; -using Backbone.Modules.Files.Application.Identities; -using Backbone.Modules.Files.Application.Identities.Commands.DeleteFilesOfIdentity; +using Backbone.Modules.Files.Module.Features.Identities.DeleteIdentity; +using Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; using FakeItEasy; using MediatR; -namespace Backbone.Modules.Files.Application.Tests.Tests.Identities; +namespace Backbone.Modules.Files.Module.Tests.Tests.Identities; public class IdentityDeleterTests : AbstractTestsBase { diff --git a/Modules/Files/test/Files.Application.Tests/packages.lock.json b/Modules/Files/test/Files.Module.Tests/packages.lock.json similarity index 57% rename from Modules/Files/test/Files.Application.Tests/packages.lock.json rename to Modules/Files/test/Files.Module.Tests/packages.lock.json index 7c242502a3..aba3fe8991 100644 --- a/Modules/Files/test/Files.Application.Tests/packages.lock.json +++ b/Modules/Files/test/Files.Module.Tests/packages.lock.json @@ -38,6 +38,22 @@ "xunit.v3.core.mtp-v2": "[3.2.2]" } }, + "Asp.Versioning.Abstractions": { + "type": "Transitive", + "resolved": "10.1.0", + "contentHash": "RwdgC5O0baZ4pt30pAKKPQHq2CV4unBKA4HWoTeu7NY9ZwXM0dWYGf1Ipc5GK0eFBe9cMeqz4pGpPncMz4/ZNQ==", + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.0" + } + }, + "Asp.Versioning.Http": { + "type": "Transitive", + "resolved": "10.0.1", + "contentHash": "g0ayV/9ho3tGgooC6eF5p1063I1WzlxFJDYQrigcGnW+mLvui6eXrcW5hzTHhQREroUR3ZwXQrIN2SAIoi+KDw==", + "dependencies": { + "Asp.Versioning.Abstractions": "10.1.0" + } + }, "AWSSDK.Core": { "type": "Transitive", "resolved": "4.0.100.9", @@ -66,16 +82,6 @@ "System.Memory.Data": "1.0.2" } }, - "Azure.Identity": { - "type": "Transitive", - "resolved": "1.17.1", - "contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Microsoft.Identity.Client": "4.78.0", - "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" - } - }, "Azure.Storage.Common": { "type": "Transitive", "resolved": "12.28.0", @@ -227,6 +233,11 @@ "Grpc.Core.Api": "2.71.0" } }, + "libsodium": { + "type": "Transitive", + "resolved": "1.0.22", + "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" + }, "MedallionTopologicalSort": { "type": "Transitive", "resolved": "1.0.0", @@ -250,6 +261,25 @@ "Microsoft.AspNetCore.Cryptography.Internal": "10.0.10" } }, + "Microsoft.AspNetCore.DataProtection": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "5sfrNrBShTlJeXvWNxjPS7ilLY4H6MICZPMZr/2vjoDoBH5Z8sQYJwbhulqfXh4yIpxIto0TcmOQHOElvpq+iQ==", + "dependencies": { + "Microsoft.AspNetCore.Cryptography.Internal": "10.0.10", + "Microsoft.AspNetCore.DataProtection.Abstractions": "10.0.10", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", + "Microsoft.Extensions.Logging.Abstractions": "10.0.10", + "Microsoft.Extensions.Options": "10.0.10", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "Microsoft.AspNetCore.DataProtection.Abstractions": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "q2RNx0N/qrsU+JgbPE78I9pu5ekwguitAFVoeE1NCgxtkUTguvf7oTzBnn42zSQxuugJ4fmj0RSarob8Rvorrg==" + }, "Microsoft.Azure.Amqp": { "type": "Transitive", "resolved": "2.7.0", @@ -260,6 +290,11 @@ "resolved": "10.0.9", "contentHash": "Aq7M8lG6BrHeatqKqncVm9m55ec34k6nnfPRLe/PvGg+b/pAsRM2ejofeKmCLjTXMa+5NGXm382f8CG/D5WDow==" }, + "Microsoft.Bcl.Cryptography": { + "type": "Transitive", + "resolved": "10.0.2", + "contentHash": "LG9Yll3B5aNpxv0+D47g6LiOiKBIlodhcHdQwcYzo8VeexFLGqx5ymetmA2aBRyo9cCcWsQWrFsdbsr8LvmWDw==" + }, "Microsoft.CodeCoverage": { "type": "Transitive", "resolved": "18.8.1", @@ -267,22 +302,34 @@ }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", + "dependencies": { + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" + } + }, + "Microsoft.Data.SqlClient.Extensions.Abstractions": { + "type": "Transitive", + "resolved": "7.0.2", + "contentHash": "Zx7z61fG2Nc6LdDn4jA7b5Aj1ABrljkOPRE31RvVUdjF6IgbG60leDUhMCafsnWFgaheiK3iqpLe+kbf5Z5L8Q==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)" } }, + "Microsoft.Data.SqlClient.Internal.Logging": { + "type": "Transitive", + "resolved": "7.0.2", + "contentHash": "iqgYBbGSVy/DIYWjzmQOa964Kn4rs4wW5vg2IamqVK0fQqfTiILVR5hMK27XWqoyONtAZs+VxH354cPJBtSnbg==" + }, "Microsoft.Data.SqlClient.SNI.runtime": { "type": "Transitive", "resolved": "6.0.2", @@ -329,6 +376,21 @@ "Microsoft.SqlServer.Types": "160.1000.6" } }, + "Microsoft.Extensions.AmbientMetadata.Application": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "/FYCIyhRLrDwIg29tB/21/Rp7XMaEP/gWR5Cxyi4GgWcN/v/XXUpU52yhQux0s2SQy1Z0C1wnhptCMvLaaT45Q==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.10", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10" + } + }, + "Microsoft.Extensions.ApiDescription.Server": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "NCWCGiwRwje8773yzPQhvucYnnfeR+ZoB1VRIrIMp4uaeUNw7jvEPHij3HIbwCDuNCrNcphA00KSAR9yD9qmbg==" + }, "Microsoft.Extensions.Caching.Abstractions": { "type": "Transitive", "resolved": "10.0.10", @@ -399,6 +461,14 @@ "Microsoft.Extensions.FileProviders.Physical": "10.0.10" } }, + "Microsoft.Extensions.DependencyInjection.AutoActivation": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "LXwOAsnrflu2ln+Bxj7y3Zc/Pn4HquCCRzW81oOIuRsM8F75TxwA/ZpSFZ5E1+YkVpndz7BcHY4ThFSjjA4vbQ==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10" + } + }, "Microsoft.Extensions.DependencyModel": { "type": "Transitive", "resolved": "10.0.10", @@ -423,6 +493,14 @@ "Microsoft.Extensions.Options": "10.0.10" } }, + "Microsoft.Extensions.Diagnostics.ExceptionSummarization": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "tXmzwQeWgiycaLOtvSFnz0TPkJxXTyZrkwSVPTr83FgSiMj3BD/8eIbvrpGi5rzc2AgfKyegKo1ntJlJFey1Zg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10" + } + }, "Microsoft.Extensions.Diagnostics.HealthChecks": { "type": "Transitive", "resolved": "10.0.10", @@ -462,6 +540,48 @@ "resolved": "10.0.10", "contentHash": "jSOCVxEwCd4Aq925kJVz1kSO1EpX2OHYKL04qVREXkDU7Ce3pVDdHPYm+fEy8y/th2kJf/DAstRHpJAqoNWP8w==" }, + "Microsoft.Extensions.Http": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "DuEBLw2y7ZBfilnaJtlge8f2M49932v43t7j1InceXVjcZzxNrSEkobYXdgZkXuPFnFbKcbWpAS+fZgYEW1BhA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", + "Microsoft.Extensions.Diagnostics": "10.0.10", + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.Extensions.Logging.Abstractions": "10.0.10", + "Microsoft.Extensions.Options": "10.0.10" + } + }, + "Microsoft.Extensions.Http.Diagnostics": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "2pYnolFkigH7N6A5WHdGx93iZ8dIhrBnu4ZkjvB6RwbHzYmIy/iXVe12pdrViNDdeBSmKZ5FA9YP/xhwLT7q7A==", + "dependencies": { + "Microsoft.Extensions.Http": "10.0.10", + "Microsoft.Extensions.Telemetry": "10.8.0" + } + }, + "Microsoft.Extensions.Http.Polly": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "ceKyX9V/C+mtapMfXQ0ClKRkxDHAW2AAJoDgTcsh7UdOteCQKB5wRTFgHJ82Lh/3O+UlPA47LRGEZkRxtz/lCA==", + "dependencies": { + "Microsoft.Extensions.Http": "10.0.10", + "Polly": "7.2.4", + "Polly.Extensions.Http": "3.0.0" + } + }, + "Microsoft.Extensions.Http.Resilience": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "XtbZyYVxSNn1Aj2Z0PA8yauS12hPszTWDZ3GtZ5Vww7Ai3d8Pm841jMBnTvoTf1t9mRf3eSB38V5KUWxH6/4oQ==", + "dependencies": { + "Microsoft.Extensions.Http.Diagnostics": "10.8.0", + "Microsoft.Extensions.ObjectPool": "10.0.10", + "Microsoft.Extensions.Resilience": "10.8.0" + } + }, "Microsoft.Extensions.Logging.Configuration": { "type": "Transitive", "resolved": "10.0.10", @@ -545,6 +665,31 @@ "resolved": "10.0.10", "contentHash": "5wu/GrYVd8mG2DVUw3vFJzF+O336TyTGg/Kmcgw9bfwYhCoFiV5lR5QeEmKecJyrW4W54nMfD3p3589E8a7czQ==" }, + "Microsoft.Extensions.Resilience": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "RH/gv0ZcCnQ3d30lxb8+T2o661TwZq/K5eMwp488goQLX1QYqWN3i8L8XlN9DhrqP2Zcf0EtsWaKpJO3yHDUTw==", + "dependencies": { + "Microsoft.Extensions.Diagnostics": "10.0.10", + "Microsoft.Extensions.Diagnostics.ExceptionSummarization": "10.8.0", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10", + "Microsoft.Extensions.Telemetry.Abstractions": "10.8.0", + "Polly.Extensions": "8.4.2", + "Polly.RateLimiting": "8.4.2" + } + }, + "Microsoft.Extensions.Telemetry": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "IIWjDZguUJt6yNld9J4V88xuOUzpC76wBwfnRJLRmacmyTTl9jA8+KP5PuHPi7CKz/Vk/q+lQYmobiopuzapzA==", + "dependencies": { + "Microsoft.Extensions.AmbientMetadata.Application": "10.8.0", + "Microsoft.Extensions.DependencyInjection.AutoActivation": "10.8.0", + "Microsoft.Extensions.Logging.Configuration": "10.0.10", + "Microsoft.Extensions.ObjectPool": "10.0.10", + "Microsoft.Extensions.Telemetry.Abstractions": "10.8.0" + } + }, "Microsoft.Extensions.Telemetry.Abstractions": { "type": "Transitive", "resolved": "10.8.0", @@ -575,50 +720,57 @@ }, "Microsoft.IdentityModel.Abstractions": { "type": "Transitive", - "resolved": "8.14.0", - "contentHash": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==" + "resolved": "8.19.2", + "contentHash": "HJbo/lnSfNHUfphPRT910poQc4T2/9+8svFLvzuaYHGAOJ2Tu+oEDqpX0BVP3BJ4OuUM1kylEKyaiX2fCAK3Cw==" }, "Microsoft.IdentityModel.JsonWebTokens": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "3Izi75UCUssvo8LPx3OVnEeZay58qaFicrtSnbtUt7q8qQi0gy46gh4V8VUTkMVMKXV6VMyjBVmeNNgeCUJuIw==", + "resolved": "8.19.2", + "contentHash": "ui3fuBT4fs8kdKfBthI4NzLYIBIneEVS8UrL1JVBzAn80UiKmngBBi0BEByE7n/9c+EElcfFlCMFFTqpkBSLNA==", "dependencies": { - "Microsoft.IdentityModel.Tokens": "7.7.1" + "Microsoft.IdentityModel.Tokens": "8.19.2" } }, "Microsoft.IdentityModel.Logging": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "BZNgSq/o8gsKExdYoBKPR65fdsxW0cTF8PsdqB8y011AGUJJW300S/ZIsEUD0+sOmGc003Gwv3FYbjrVjvsLNQ==", + "resolved": "8.19.2", + "contentHash": "r5YLDIxGOnkVJHrqXv/iD1FM1CgGrQOdriXuvuWvTPmKbnGANhEysq9XKmN6IHjf2a+9bAGEpnoRBsAQlvJU5w==", "dependencies": { - "Microsoft.IdentityModel.Abstractions": "7.7.1" + "Microsoft.IdentityModel.Abstractions": "8.19.2" } }, "Microsoft.IdentityModel.Protocols": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "h+fHHBGokepmCX+QZXJk4Ij8OApCb2n2ktoDkNX5CXteXsOxTHMNgjPGpAwdJMFvAL7TtGarUnk3o97NmBq2QQ==", + "resolved": "8.19.2", + "contentHash": "sGxSsSrZXNmca6D+jHH2rVRyo2nNRd/g4H9CFbPmLLq0xgoH1U0orLWE5minfijw7+zq49tBs7txenbfAErRoQ==", "dependencies": { - "Microsoft.IdentityModel.Tokens": "7.7.1" + "Microsoft.IdentityModel.Tokens": "8.19.2" } }, "Microsoft.IdentityModel.Protocols.OpenIdConnect": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "yT2Hdj8LpPbcT9C9KlLVxXl09C8zjFaVSaApdOwuecMuoV4s6Sof/mnTDz/+F/lILPIBvrWugR9CC7iRVZgbfQ==", + "resolved": "8.16.0", + "contentHash": "h4yVXyJsEBBX5lg2G5ftMsi5JzcNEGAzrNphA6DQ6eOd8P0s+cDCOyPwVTYLePZvJL5unbPvYIvzrbTXzFjXnQ==", "dependencies": { - "Microsoft.IdentityModel.Protocols": "7.7.1", - "System.IdentityModel.Tokens.Jwt": "7.7.1" + "Microsoft.IdentityModel.Protocols": "8.16.0", + "System.IdentityModel.Tokens.Jwt": "8.16.0" } }, "Microsoft.IdentityModel.Tokens": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "fQ0VVCba75lknUHGldi3iTKAYUQqbzp1Un8+d9cm9nON0Gs8NAkXddNg8iaUB0qi/ybtAmNWizTR4avdkCJ9pQ==", + "resolved": "8.19.2", + "contentHash": "GtPC1S02uH1gOO4fQ+zRysIicKmEXaYFP8PIkdJYXqMyruYhopre4ozVHp0XiDSA0+GJvOZH9prxCPvgBMg4Ww==", "dependencies": { - "Microsoft.IdentityModel.Logging": "7.7.1" + "Microsoft.Bcl.Cryptography": "10.0.2", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.IdentityModel.Logging": "8.19.2" } }, + "Microsoft.OpenApi": { + "type": "Transitive", + "resolved": "2.7.5", + "contentHash": "0FA67RSnRM4tcBKqiqVu/HPdZ9+QOKbmeRjxRUGTCjPU4C0bmUhd97Dso7Yild5P7nOV6GxJ2xrK0Kv/O9xp0w==" + }, "Microsoft.SqlServer.Server": { "type": "Transitive", "resolved": "1.0.0", @@ -706,11 +858,257 @@ "Microsoft.Extensions.Logging.Abstractions": "10.0.0" } }, + "OpenIddict": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "Dih/QGs3ptgvsioSOdvn/6KMy3el5ImMimp/9SV9VX/FqTT6CxBOGoxaukfJeVqgcxQrgge1vQvFp3kWtgOKGg==", + "dependencies": { + "OpenIddict.Abstractions": "7.6.0", + "OpenIddict.Client": "7.6.0", + "OpenIddict.Client.SystemIntegration": "7.6.0", + "OpenIddict.Client.SystemNetHttp": "7.6.0", + "OpenIddict.Client.WebIntegration": "7.6.0", + "OpenIddict.Core": "7.6.0", + "OpenIddict.Server": "7.6.0", + "OpenIddict.Validation": "7.6.0", + "OpenIddict.Validation.ServerIntegration": "7.6.0", + "OpenIddict.Validation.SystemNetHttp": "7.6.0" + } + }, + "OpenIddict.Abstractions": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "Fp2MUvm6wwsqk6+ieUM/3MTMlbCL1zwSXixM0xC22FgKcl5EQB7E0vV38IRI/rSF8UGgvC/AOjMOF6FoFyks8g==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", + "Microsoft.Extensions.Primitives": "10.0.10", + "Microsoft.IdentityModel.Tokens": "8.19.2" + } + }, + "OpenIddict.Client": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "X+Sg1wRKeVOeayJuZ4/0M74zXRENvXOAl2JRPF4MaEOoS9Pj6WCWMLriWS0wwEC1ODxQmLaG3tYZfcdC9hU40g==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.IdentityModel.JsonWebTokens": "8.19.2", + "Microsoft.IdentityModel.Protocols": "8.19.2", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.Client.AspNetCore": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "XjEj75mTkvMn1sj4jONWLTRK6KzeY/Hou8218nwLnJnqYmKJ1th7UDfadNTb530KSC+WPLxfvi7grzIv0xzebw==", + "dependencies": { + "OpenIddict.Client": "7.6.0" + } + }, + "OpenIddict.Client.DataProtection": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ZVhuFSzPbAaZkiRRrr77oyJnciWhytPnTZ1ByaCGfDx1b977crbcJww2asfkMpgNzcbWWAR6SgcS05hklsQflw==", + "dependencies": { + "Microsoft.AspNetCore.DataProtection": "10.0.10", + "OpenIddict.Client": "7.6.0", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "OpenIddict.Client.SystemIntegration": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "yqnyQH6CG46+y2Rp4UcIOXNcWgDvITW43PULI9sr6xYCS34J/kO6GU6fhwOGUfUJjRdOis3Xj00WwUZxZUQ5ZQ==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", + "OpenIddict.Client": "7.6.0" + } + }, + "OpenIddict.Client.SystemNetHttp": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "HsiL7rCRCFd7D1uvi6+HLmlkw9ykbLsEJ1GJMttuLB3/C8/LcqX+wHxr1W/GXl2YXhleNMW21I5AeVtGnfd9tg==", + "dependencies": { + "Microsoft.Extensions.Http.Polly": "10.0.10", + "Microsoft.Extensions.Http.Resilience": "10.8.0", + "OpenIddict.Client": "7.6.0" + } + }, + "OpenIddict.Client.WebIntegration": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "vJzIkHZwjB8vp6Hhxa8s9ruh/L+ZgpJUszGVP+kQQoqDQ8yZygbl0xWKuAHQ4OCIk3FTeSib9xH8uetm47YPgg==", + "dependencies": { + "OpenIddict.Client": "7.6.0", + "OpenIddict.Client.SystemNetHttp": "7.6.0" + } + }, + "OpenIddict.EntityFrameworkCore.Models": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "DrWB0dLfsg3mZhWABAlqSZKXin4Q4Pn8V4S7/1JxP5T/7Ncl0y45rM9L2EWv/zdydaiTOFKi4jRDBZAgBxUjaQ==" + }, + "OpenIddict.Server": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "0c7wlRYcP2Smgjp3PWyyojZ972H26otp6irW/WAFEbg4ZylcUvtlw0lkrCr/K8s5lAnYZwrpyzguwrJhXGKPVg==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.IdentityModel.JsonWebTokens": "8.19.2", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.Server.AspNetCore": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "m2Hk2R4gaTlEYBvNHz2fvIr38p1agiR2nW2gi5WMgSByFHxeEK5uhxqVGdSB2kEHRtp9kza/zBWBgIM4TdcVqw==", + "dependencies": { + "OpenIddict.Server": "7.6.0" + } + }, + "OpenIddict.Server.DataProtection": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ScGEt6uNuk2MZ/6DzVAMi/QegZulkvYKPRMrRu5/8/uI8P5o5XbEhEvancFx9YmBHL1uGE8SIByfTfxJx8kefA==", + "dependencies": { + "Microsoft.AspNetCore.DataProtection": "10.0.10", + "OpenIddict.Server": "7.6.0", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "OpenIddict.Validation": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ovzLQJ31uWZpgLdRVuD9Gmu8wxvhvbXW32MFTglFblhfqRwj/hMcEGOo8hdl+ir3QpDr9NUDAORA+v3S7xc6IA==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.IdentityModel.JsonWebTokens": "8.19.2", + "Microsoft.IdentityModel.Protocols": "8.19.2", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.Validation.AspNetCore": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "oby5/Ymdxd+g1TGtyTGrcK5J3/NSI80aw2CJgULwwIxraiCjiIfexrBjCxkPchWqPNFe6aAdGJ/Jz6amHNfrzg==", + "dependencies": { + "OpenIddict.Validation": "7.6.0" + } + }, + "OpenIddict.Validation.DataProtection": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ckC2xcPeJ/kLSyJXNOmpmFLnA1qM6zC8RR5d2pUtoToA6caMikebkL3NmRjBgxBRVvFmi7x9lMJ7+YmrI+uAlg==", + "dependencies": { + "Microsoft.AspNetCore.DataProtection": "10.0.10", + "OpenIddict.Validation": "7.6.0", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "OpenIddict.Validation.ServerIntegration": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "0bHhKsMV45UMPM5Phh51+g/tMUJNRzOWe6p/5opKeMQV8XoO3y3J9o/ZbfZ0j4qTTbQ7pqzEKSZaS4cGs0B3nQ==", + "dependencies": { + "OpenIddict.Server": "7.6.0", + "OpenIddict.Validation": "7.6.0" + } + }, + "OpenIddict.Validation.SystemNetHttp": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "N3MHlVaik22apnhxCTsqP6TjwRB/h874+5ks/m1+wKmOWqMyJ5UjIaZCvUOrDSMtDiEVted8qkjEJRzjAe0rGQ==", + "dependencies": { + "Microsoft.Extensions.Http.Polly": "10.0.10", + "Microsoft.Extensions.Http.Resilience": "10.8.0", + "OpenIddict.Validation": "7.6.0" + } + }, + "OpenTelemetry": { + "type": "Transitive", + "resolved": "1.18.0", + "contentHash": "13AKxycK+olOLe061MjliPTNBR/DUkjyRr0b9zwUhKyMjFS8lXS7G31R85rkbM55up2YFmdykWdAw2giBDJpiQ==", + "dependencies": { + "Microsoft.Extensions.Configuration.EnvironmentVariables": "10.0.0", + "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Configuration": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "1.18.0" + } + }, + "OpenTelemetry.Api.ProviderBuilderExtensions": { + "type": "Transitive", + "resolved": "1.18.0", + "contentHash": "io6A6PJFp3vIObRGf6oPjdHsdglkinXt/0SpTDJHrVnsLxUtOzwh/QwTsnhBJ43wJ6QcGMkyNzsSSY8XEB1Q5Q==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "OpenTelemetry.Api": "1.18.0" + } + }, "Polly.Core": { "type": "Transitive", "resolved": "8.7.0", "contentHash": "BS2t+nsBer16PIebCEPNBK5fgMisADQyRCd7K+BgkMWpFmSaiYE+rVVNpFhGRqUkJmNSLmw0uCNzHHWfgml28Q==" }, + "Polly.Extensions": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "GZ9vRVmR0jV2JtZavt+pGUsQ1O1cuRKG7R7VOZI6ZDy9y6RNPvRvXK1tuS4ffUrv8L0FTea59oEuQzgS0R7zSA==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "Polly.Core": "8.4.2" + } + }, + "Polly.Extensions.Http": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "drrG+hB3pYFY7w1c3BD+lSGYvH2oIclH8GRSehgfyP5kjnFnHKQuuBhuHLv+PWyFuaTDyk/vfRpnxOzd11+J8g==", + "dependencies": { + "Polly": "7.1.0" + } + }, + "Polly.RateLimiting": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "ehTImQ/eUyO07VYW2WvwSmU9rRH200SKJ/3jku9rOkyWE0A2JxNFmAVms8dSn49QLSjmjFRRSgfNyOgr/2PSmA==", + "dependencies": { + "Polly.Core": "8.4.2", + "System.Threading.RateLimiting": "8.0.0" + } + }, + "runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "A8v6PGmk+UGbfWo5Ixup0lPM4swuSwOiayJExZwKIOjTlFFQIsu3QnDXECosBEyrWSPryxBVrdqtJyhK3BaupQ==", + "dependencies": { + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": "4.4.0" + } + }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, + "Serilog.Extensions.Logging": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "vx0kABKl2dWbBhhqAfTOk53/i8aV/5VaT3a6il9gn72Wqs2pM7EK2OB6No6xdqK2IaY6Zf9gdjLuK9BVa2rT+Q==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.0", + "Serilog": "4.2.0" + } + }, "SQLitePCLRaw.bundle_e_sqlite3": { "type": "Transitive", "resolved": "2.1.11", @@ -733,6 +1131,27 @@ "SQLitePCLRaw.core": "2.1.11" } }, + "Swashbuckle.AspNetCore.Swagger": { + "type": "Transitive", + "resolved": "10.2.3", + "contentHash": "1jUUs3WQnrS0FUtaZPLSy1yYMEwS1zlvDmvQ2/eldPHUANX0LJSLVZecCMgSMdeGiRqeaRrIXLtSz++TCiTMww==", + "dependencies": { + "Microsoft.OpenApi": "2.7.5" + } + }, + "Swashbuckle.AspNetCore.SwaggerGen": { + "type": "Transitive", + "resolved": "10.2.3", + "contentHash": "y7t4coDRAeFYChmvlMRiH2OjbiRrm9AVIDgt17fQfs3x9PVAI5PiwWYOhg+4F13R4Q36WDc9lqfoOnNa3tNbGg==", + "dependencies": { + "Swashbuckle.AspNetCore.Swagger": "10.2.3" + } + }, + "Swashbuckle.AspNetCore.SwaggerUI": { + "type": "Transitive", + "resolved": "10.2.3", + "contentHash": "nthWONRs/FJ4yyG206g1cC52WEG8EqrjuMWjGdR+5XG7lbjFto6NqcI9EMICgVFom/UivIjUVwI76ZHbHwTPfQ==" + }, "System.ClientModel": { "type": "Transitive", "resolved": "1.14.0", @@ -751,11 +1170,11 @@ }, "System.Configuration.ConfigurationManager": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "vPinosRgEk1CGjohbv0pDuz6gPprkWo5xvBTjOJjks5JOgOEWvPndq5NngGxiTcBcy1+k9GwzZ1c3Bp2fU5ezw==", + "resolved": "9.0.13", + "contentHash": "GbBrJq9S/gYpHzm7Pxx6Y5tDyfSfyxW6tlP5oiKJV38uf19Wp+GIIAnWfyL1zmNiz1+EjwVapw2WkBFvvqKQzg==", "dependencies": { - "System.Diagnostics.EventLog": "9.0.11", - "System.Security.Cryptography.ProtectedData": "9.0.11" + "System.Diagnostics.EventLog": "9.0.13", + "System.Security.Cryptography.ProtectedData": "9.0.13" } }, "System.Diagnostics.EventLog": { @@ -765,11 +1184,11 @@ }, "System.IdentityModel.Tokens.Jwt": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "rQkO1YbAjLwnDJSMpRhRtrc6XwIcEOcUvoEcge+evurpzSZM3UNK+MZfD3sKyTlYsvknZ6eJjSBfnmXqwOsT9Q==", + "resolved": "8.16.0", + "contentHash": "rrs2u7DRMXQG2yh0oVyF/vLwosfRv20Ld2iEpYcKwQWXHjfV+gFXNQsQ9p008kR9Ou4pxBs68Q6/9zC8Gi1wjg==", "dependencies": { - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Tokens": "7.7.1" + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Tokens": "8.16.0" } }, "System.IO.Hashing": { @@ -792,13 +1211,21 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "System.Security.Cryptography.ProtectedData": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "s8yUYuYYu+PAwvBdhLG1KyrGrk9gkYeuPxfAsXsTqqWyepwSyEw8hAaflW4nO98NG52YpYI1am2+9o+79h2RtQ==" + "resolved": "9.0.13", + "contentHash": "t8S9IDpjJKsLpLkeBdW8cWtcPyYqrGu93Dej1RO6WwuL/lkFSqWlan3rMJfortqz1mRIh+sys2AFsSA6jWJ3Jg==" + }, + "System.Security.Cryptography.Xml": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "Mz6Y+s+uMQKj1H2BUF0OhlmaOQkLgSG34/IrUaBDirYBQ6bgwcFvO/XtXWcoDlBLFoFB0uKqDNhybHOd+fQK1A==", + "dependencies": { + "System.Security.Cryptography.Pkcs": "10.0.10" + } }, "System.Threading.RateLimiting": { "type": "Transitive", @@ -862,6 +1289,33 @@ "xunit.v3.runner.common": "[3.2.2]" } }, + "Backbone.BuildingBlocks.API": { + "type": "Project", + "dependencies": { + "Asp.Versioning.Mvc": "[10.0.1, 10.0.1]", + "Asp.Versioning.Mvc.ApiExplorer": "[10.0.1, 10.0.1]", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Module": "[1.0.0, )", + "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", + "Backbone.Tooling": "[1.0.0, )", + "DotNetDiag.HealthChecks.NpgSql": "[10.0.10, 10.0.10]", + "DotNetDiag.HealthChecks.SqlServer": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.Relational": "[10.0.10, 10.0.10]", + "OpenTelemetry.Exporter.OpenTelemetryProtocol": "[1.18.0, )", + "OpenTelemetry.Extensions.Hosting": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.AspNetCore": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.EntityFrameworkCore": "[1.18.0-beta.1, )", + "OpenTelemetry.Instrumentation.Http": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.Runtime": "[1.18.0, 1.18.0]", + "Polly": "[8.7.0, 8.7.0]", + "Serilog.Enrichers.Sensitive": "[2.1.0, 2.1.0]", + "Serilog.Extensions.Hosting": "[10.0.0, 10.0.0]", + "Swashbuckle.AspNetCore": "[10.2.3, 10.2.3]", + "System.Data.SqlClient": "[4.9.1, 4.9.1]" + } + }, "Backbone.BuildingBlocks.Application": { "type": "Project", "dependencies": { @@ -919,6 +1373,15 @@ "Serilog": "[4.4.0, 4.4.0]" } }, + "Backbone.BuildingBlocks.Module": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Microsoft.Extensions.Configuration.Abstractions": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[10.0.10, 10.0.10]", + "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" + } + }, "Backbone.Common.Infrastructure": { "type": "Project", "dependencies": { @@ -929,6 +1392,13 @@ "Polly": "[8.7.0, 8.7.0]" } }, + "Backbone.Crypto": { + "type": "Project", + "dependencies": { + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", + "NSec.Cryptography": "[26.4.0, 26.4.0]" + } + }, "Backbone.DevelopmentKit.Identity": { "type": "Project", "dependencies": { @@ -936,13 +1406,75 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Files.Application": { + "Backbone.Modules.Announcements.Contracts": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )" + } + }, + "Backbone.Modules.Devices.Application": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Files.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Crypto": "[1.0.0, )", + "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", + "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", + "FluentValidation": "[12.1.1, 12.1.1]", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "OpenIddict.Core": "[7.6.0, 7.6.0]", + "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", + "Polly": "[8.7.0, 8.7.0]" + } + }, + "Backbone.Modules.Devices.Contracts": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )" + } + }, + "Backbone.Modules.Devices.Domain": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )", + "Backbone.DevelopmentKit.Identity": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Tooling": "[1.0.0, )", + "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]" + } + }, + "Backbone.Modules.Devices.Infrastructure": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", + "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "FirebaseAdmin": "[3.6.0, 3.6.0]", + "JWT": "[11.1.0, 11.1.0]", + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.Relational": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.DependencyInjection": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Identity.Core": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Identity.Stores": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Logging": "[10.0.10, 10.0.10]", + "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, 10.0.3]", + "OpenIddict.AspNetCore": "[7.6.0, 7.6.0]", + "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", + "Polly": "[8.7.0, 8.7.0]" + } + }, + "Backbone.Modules.Files.Abstractions": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Application": "[1.0.0, )", + "Backbone.Modules.Files.Domain": "[1.0.0, )" } }, "Backbone.Modules.Files.Contracts": { @@ -959,6 +1491,57 @@ "Backbone.Tooling": "[1.0.0, )" } }, + "Backbone.Modules.Files.Infrastructure": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", + "Backbone.Modules.Files.Abstractions": "[1.0.0, )", + "Backbone.Modules.Files.Domain": "[1.0.0, )", + "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", + "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, 10.0.3]" + } + }, + "Backbone.Modules.Files.Infrastructure.Database.Postgres": { + "type": "Project", + "dependencies": { + "Backbone.Modules.Files.Infrastructure": "[1.0.0, )" + } + }, + "Backbone.Modules.Files.Infrastructure.Database.SqlServer": { + "type": "Project", + "dependencies": { + "Backbone.Modules.Files.Infrastructure": "[1.0.0, )" + } + }, + "Backbone.Modules.Files.Module": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.API": "[1.0.0, )", + "Backbone.BuildingBlocks.Module": "[1.0.0, )", + "Backbone.Modules.Files.Abstractions": "[1.0.0, )", + "Backbone.Modules.Files.Domain": "[1.0.0, )", + "Backbone.Modules.Files.Infrastructure": "[1.0.0, )", + "Backbone.Modules.Files.Infrastructure.Database.Postgres": "[1.0.0, )", + "Backbone.Modules.Files.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Tooling": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" + } + }, + "Backbone.Modules.Synchronization.Contracts": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )" + } + }, + "Backbone.Modules.Tokens.Contracts": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )" + } + }, "Backbone.Tooling": { "type": "Project", "dependencies": { @@ -980,6 +1563,24 @@ "Shouldly": "[4.3.0, 4.3.0]" } }, + "Asp.Versioning.Mvc": { + "type": "CentralTransitive", + "requested": "[10.0.1, 10.0.1]", + "resolved": "10.0.1", + "contentHash": "OqoFPKKxXkNmw62H3CgXkPrf1L4PPwwyYr9QMP6itt/khKTIayqaHhK6F2e3jt6KHc4s23cWAUbu+Z5GPEeMaw==", + "dependencies": { + "Asp.Versioning.Http": "10.0.1" + } + }, + "Asp.Versioning.Mvc.ApiExplorer": { + "type": "CentralTransitive", + "requested": "[10.0.1, 10.0.1]", + "resolved": "10.0.1", + "contentHash": "ylPZe+LheFp0pt2tSMq2pPeGAkMLqWVOn5+1/xOB/eUj889n9b35Sny08bSQ0ziAGIFjp3BBTXaYsWJjRoFV4A==", + "dependencies": { + "Asp.Versioning.Mvc": "10.0.1" + } + }, "Autofac": { "type": "CentralTransitive", "requested": "[9.3.2, 9.3.2]", @@ -1016,12 +1617,44 @@ "Azure.Storage.Common": "12.28.0" } }, + "BouncyCastle.Cryptography": { + "type": "CentralTransitive", + "requested": "[2.7.0, 2.7.0]", + "resolved": "2.7.0", + "contentHash": "U+12df8UEWHgBi04YVf/Lgi2dy3SItlIYvHjjEVa/BngCQIzDCDRBk50DDByCfDvSbe5pRNFr3b7UrVK2kMcLw==" + }, + "CSharpFunctionalExtensions": { + "type": "CentralTransitive", + "requested": "[3.7.0, 3.7.0]", + "resolved": "3.7.0", + "contentHash": "eMZp8tc88O96eEFutiIskF3LE8lFY3fjbNRGfNa1ca0CD9sB8A00r5ltyYDih/7UFdJdVbhVq7tGeHI8xj6DlQ==" + }, "Dapper": { "type": "CentralTransitive", "requested": "[2.1.79, 2.1.79]", "resolved": "2.1.79", "contentHash": "8YijbzgTfmqmQOnVNorYM6K++pxqnW3nJ4aC1sRHzxUA2CcuoJ9gsTem3kgBnPRMc38zZHl4Esb6hAezXIEEuw==" }, + "DotNetDiag.HealthChecks.NpgSql": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "lxb6wQ1YC/TpvZMVgbyeLP5dYOg/RJWLg1xlR+I0FeyfyMmukppKdwzBOrKRtZ8FHG3nV9xrVTaPdwRw0yL4Vw==", + "dependencies": { + "Microsoft.Extensions.Diagnostics.HealthChecks": "10.0.9", + "Npgsql": "10.0.3" + } + }, + "DotNetDiag.HealthChecks.SqlServer": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "6t2HP5VQR0GZDJiw8iZvzOTRC+84irUeaUuWvcqcnc4K5Mzrn/A9V0ucoyjySXOF1vGkdTHjlJMknJVYC9c2Hg==", + "dependencies": { + "Microsoft.Data.SqlClient": "7.0.2", + "Microsoft.Extensions.Diagnostics.HealthChecks": "10.0.9" + } + }, "EFCore.BulkExtensions.Core": { "type": "CentralTransitive", "requested": "[10.0.1, 10.0.1]", @@ -1055,6 +1688,16 @@ "NetTopologySuite.IO.SqlServerBytes": "2.1.0" } }, + "FirebaseAdmin": { + "type": "CentralTransitive", + "requested": "[3.6.0, 3.6.0]", + "resolved": "3.6.0", + "contentHash": "aP8UWyQYACDOZqnHN9WB77TS0DlB8kVj8/HB7evUaAhAgPJQ9y4NmISJ3kkYkWBG5va3PHvYN5H+ZDBhABSEFQ==", + "dependencies": { + "Google.Api.Gax.Rest": "4.13.1", + "Google.Apis.Auth": "1.73.0" + } + }, "FluentValidation": { "type": "CentralTransitive", "requested": "[12.1.1, 12.1.1]", @@ -1091,6 +1734,15 @@ "Google.Apis.Storage.v1": "[1.74.0.4115, 2.0.0)" } }, + "JWT": { + "type": "CentralTransitive", + "requested": "[11.1.0, 11.1.0]", + "resolved": "11.1.0", + "contentHash": "GbmNr2WUyY3Ma0rwuvmTDnE5tIV8gFNDWeua9Fn54HwrpvGfwQzi7HtEAnMgI4quf4MuJr0iwPkt9sKrNCq1Tg==", + "dependencies": { + "Newtonsoft.Json": "13.0.4" + } + }, "MediatR": { "type": "CentralTransitive", "requested": "[12.5.0, 12.5.0]", @@ -1107,6 +1759,16 @@ "resolved": "2.0.1", "contentHash": "FYv95bNT4UwcNA+G/J1oX5OpRiSUxteXaUt2BJbRSdRNiIUNbggJF69wy6mnk2wYToaanpdXZdCwVylt96MpwQ==" }, + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "/ZV8RMWbWob1ZGsF5f1wVJNNlFLPKCf2ba834PpQiNhirVQ/ksup5SujtuUsvByHEZgv+9dmjC/4Xdi75axmXQ==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "10.0.10", + "Microsoft.Extensions.Identity.Stores": "10.0.10" + } + }, "Microsoft.Data.Sqlite.Core": { "type": "CentralTransitive", "requested": "[10.0.10, 10.0.10]", @@ -1322,6 +1984,17 @@ "Microsoft.Extensions.Options": "10.0.10" } }, + "Microsoft.Extensions.Identity.Stores": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "WMG/9wPJPnwU2w1R/WPLO/RL2UpGpBhw9z6odAAUkFdZypzzXl620FJWEoPpuBUq6Q4GYgMg0FQVRCO6gO4MQQ==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "10.0.10", + "Microsoft.Extensions.Identity.Core": "10.0.10", + "Microsoft.Extensions.Logging": "10.0.10" + } + }, "Microsoft.Extensions.Logging": { "type": "CentralTransitive", "requested": "[10.0.10, 10.0.10]", @@ -1363,12 +2036,118 @@ "Npgsql": "10.0.3" } }, + "NSec.Cryptography": { + "type": "CentralTransitive", + "requested": "[26.4.0, 26.4.0]", + "resolved": "26.4.0", + "contentHash": "0vsCtY5f+YgQROiWNqzgWp+l2pddfk9FkWoGV/bEo0MuEYPKlJWuoA8aOfO6qp3f+EnObKE3zSJhn1PspJeJVg==", + "dependencies": { + "libsodium": "[1.0.22, 1.0.23)" + } + }, + "OpenIddict.AspNetCore": { + "type": "CentralTransitive", + "requested": "[7.6.0, 7.6.0]", + "resolved": "7.6.0", + "contentHash": "FblhXU1SzSjL1nPsK5kqi+uMofNYLg1gwBU/qqc8diOafTv/6jLOhpCzzk+wISR8OnkS7H3oFMcTjy8aaTm8ww==", + "dependencies": { + "OpenIddict": "7.6.0", + "OpenIddict.Client.AspNetCore": "7.6.0", + "OpenIddict.Client.DataProtection": "7.6.0", + "OpenIddict.Server.AspNetCore": "7.6.0", + "OpenIddict.Server.DataProtection": "7.6.0", + "OpenIddict.Validation.AspNetCore": "7.6.0", + "OpenIddict.Validation.DataProtection": "7.6.0" + } + }, + "OpenIddict.Core": { + "type": "CentralTransitive", + "requested": "[7.6.0, 7.6.0]", + "resolved": "7.6.0", + "contentHash": "LJQ+GsSY6Nfw5FZ4NzCvL2kwYU1GNz6ygiUNGvqcKP0qXwstU59RDAjNKTCGkPPq4TQGnETqr4UsJgyK+AFxeA==", + "dependencies": { + "Microsoft.Extensions.Caching.Memory": "10.0.10", + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.Extensions.Options": "10.0.10", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[7.6.0, 7.6.0]", + "resolved": "7.6.0", + "contentHash": "BWbgvgKbDcg3EuNJvmXtUzeLxg9c4bU+PfDnZetCjGwcnlCsWcASkjVexKKevtUgWxRWJTQFRchMA09OKmOF/w==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "10.0.10", + "OpenIddict.Core": "7.6.0", + "OpenIddict.EntityFrameworkCore.Models": "7.6.0" + } + }, "OpenTelemetry.Api": { "type": "CentralTransitive", "requested": "[1.18.0, )", "resolved": "1.18.0", "contentHash": "Dhzm5oughIY9EWckt2J1yXcEbXpki5WCL2q7prJoYxzH6C7jdkfGtPMTkUVZZ4AhjJKzQnlC+kLSIlmIVwC4Vw==" }, + "OpenTelemetry.Exporter.OpenTelemetryProtocol": { + "type": "CentralTransitive", + "requested": "[1.18.0, )", + "resolved": "1.18.0", + "contentHash": "Et3WAviooKGObZjUZN8d6eTsdJs1YM3ZoN+KlWSAHksTmHG1nyGi9XGo2wb0fkFMWK0g80FOPdR1njg52Dm+aw==", + "dependencies": { + "OpenTelemetry": "1.18.0" + } + }, + "OpenTelemetry.Extensions.Hosting": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "u+JMA82H65MKwMvd2qUpL8C2qE4Jux2nvX9hmy036UK/Apv2YyIRYCttF/vlX6nMPcAKI8BXkscmL4QG3C69fw==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", + "OpenTelemetry": "1.18.0" + } + }, + "OpenTelemetry.Instrumentation.AspNetCore": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "hBiMXE/CGIAHUOpi0gScNkjHB0L9XbCin5lZObL+dMBl4OmpndnHgxP3JZDnnGtU6qOzdeh8TYUV9f6Jgmmhlw==", + "dependencies": { + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[1.18.0-beta.1, )", + "resolved": "1.18.0-beta.1", + "contentHash": "n15cNXxkSl9G6KD41wZYmujjERYOBiIgn2VeesTFhLtHZ+QQQE3baLrCk7UyzidEw/uGObRcW3SKhqpyMpGe1w==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Http": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "/X57peOOa4a+9V4DSVXbuIWdsAxmU5gsxw8lu+gJU0zuewsYhC9f6qdm8GEW0VvqG9e+gxn0HdVR5G3YHcWDTw==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Runtime": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "McuXGjBJDL/Cown2PxfUQysK98MZG7ZDjO/IKUtaAx8t1m0PB0d+QtJC79RFTVipMhRIwjJiULNOp0OGfZbvwg==", + "dependencies": { + "OpenTelemetry.Api": "[1.18.0, 2.0.0)" + } + }, "Polly": { "type": "CentralTransitive", "requested": "[8.7.0, 8.7.0]", @@ -1403,6 +2182,25 @@ "resolved": "4.4.0", "contentHash": "ZC6Le3rr4TVJJjS4KsQAesxeF1EhW9qcZmmG7eP5Y2G3+gTGkJEUXkq4+tZNPtyp05I0wWOxnIjwtxFweJsObw==" }, + "Serilog.Enrichers.Sensitive": { + "type": "CentralTransitive", + "requested": "[2.1.0, 2.1.0]", + "resolved": "2.1.0", + "contentHash": "nlaEYMoHjJqncjQgc0Nv4LOIkAwUt4Nvmx3EMNjY4MKC7QqZs9zB0v/NwFnaWzLF7qztc7mna1bjn20Auohu0g==" + }, + "Serilog.Extensions.Hosting": { + "type": "CentralTransitive", + "requested": "[10.0.0, 10.0.0]", + "resolved": "10.0.0", + "contentHash": "E7juuIc+gzoGxgzFooFgAV8g9BfiSXNKsUok9NmEpyAXg2odkcPsMa/Yo4axkJRlh0se7mkYQ1GXDaBemR+b6w==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Serilog": "4.3.0", + "Serilog.Extensions.Logging": "10.0.0" + } + }, "Shouldly": { "type": "CentralTransitive", "requested": "[4.3.0, 4.3.0]", @@ -1424,25 +2222,50 @@ "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "Swashbuckle.AspNetCore": { + "type": "CentralTransitive", + "requested": "[10.2.3, 10.2.3]", + "resolved": "10.2.3", + "contentHash": "8KNh1RWvofdU6DVLyBs4Z/OpUMnmf8oNvJQc0QxpwySRbi42bwLfdVMMrXZWANg5U5KQGQq1xW6r/hlcqw99tQ==", + "dependencies": { + "Microsoft.Extensions.ApiDescription.Server": "10.0.0", + "Swashbuckle.AspNetCore.Swagger": "10.2.3", + "Swashbuckle.AspNetCore.SwaggerGen": "10.2.3", + "Swashbuckle.AspNetCore.SwaggerUI": "10.2.3" + } + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/linux-arm64": { + "libsodium": { + "type": "Transitive", + "resolved": "1.0.22", + "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" + }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1463,6 +2286,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1478,33 +2316,46 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "SQLitePCLRaw.lib.e_sqlite3": { "type": "CentralTransitive", "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/linux-x64": { + "libsodium": { + "type": "Transitive", + "resolved": "1.0.22", + "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" + }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1525,6 +2376,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1540,33 +2406,46 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "SQLitePCLRaw.lib.e_sqlite3": { "type": "CentralTransitive", "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/osx-arm64": { + "libsodium": { + "type": "Transitive", + "resolved": "1.0.22", + "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" + }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1587,6 +2466,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1602,33 +2496,46 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "SQLitePCLRaw.lib.e_sqlite3": { "type": "CentralTransitive", "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/win-x64": { + "libsodium": { + "type": "Transitive", + "resolved": "1.0.22", + "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" + }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1649,6 +2556,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1664,14 +2586,23 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "SQLitePCLRaw.lib.e_sqlite3": { "type": "CentralTransitive", "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } } } From a522526a7f83da27d9bd277b924298d0b5870e5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20H=C3=BCgel?= Date: Fri, 2 Oct 2026 08:30:59 +0200 Subject: [PATCH 15/25] refactor: migrate Quotas and Devices modules --- .../AdminApi/src/AdminApi/AdminApi.csproj | 4 +- .../AdminApi/Controllers/ClientsController.cs | 12 +- .../Controllers/IdentitiesController.cs | 24 +- .../Controllers/MessagesController.cs | 2 +- .../AdminApi/Controllers/MetricsController.cs | 2 +- .../Controllers/RelationshipsController.cs | 2 +- .../AdminApi/Controllers/TiersController.cs | 12 +- Applications/AdminApi/src/AdminApi/Dockerfile | 4 +- .../IServiceCollectionExtensions.cs | 3 +- Applications/AdminApi/src/AdminApi/Program.cs | 4 +- .../AdminApi/src/AdminApi/packages.lock.json | 57 +- .../packages.lock.json | 59 +- .../Commands/Clients/CreateClientCommand.cs | 2 +- .../Commands/Clients/DeleteClientsCommand.cs | 2 +- .../Commands/Clients/ListClientsCommand.cs | 2 +- .../Commands/Tiers/CreateTierCommand.cs | 2 +- .../Commands/Tiers/ListTiersCommand.cs | 2 +- Applications/AdminCli/src/AdminCli/Dockerfile | 2 +- Applications/AdminCli/src/AdminCli/Program.cs | 2 +- .../AdminCli/src/AdminCli/packages.lock.json | 32 +- .../Controllers/Devices/DevicesController.cs | 115 -- .../Devices/IdentitiesController.cs | 119 -- .../IdentityDeletionProcessesController.cs | 66 - .../Devices/PushNotificationsController.cs | 49 - .../Notifications/NotificationsController.cs | 28 - .../Controllers/Quotas/QuotasController.cs | 30 - .../Relationships/RelationshipsController.cs | 2 +- .../Synchronization/SyncRunsController.cs | 2 +- .../ConsumerApi/src/DevicesDbContextSeeder.cs | 8 +- .../IServiceCollectionExtensions.cs | 4 +- Applications/ConsumerApi/src/Program.cs | 6 +- .../ConsumerApi/src/QuotasDbContextSeeder.cs | 2 +- .../ConsumerApi/src/packages.lock.json | 57 +- .../packages.lock.json | 57 +- .../src/DatabaseMigrator/Dockerfile | 4 +- .../src/DatabaseMigrator/packages.lock.json | 76 +- .../DatabaseMigrator.Tests/packages.lock.json | 76 +- .../src/EventHandlerService/Dockerfile | 4 +- .../src/EventHandlerService/Program.cs | 4 +- .../EventHandlerService/packages.lock.json | 57 +- .../packages.lock.json | 57 +- .../Housekeeper/src/Housekeeper/Dockerfile | 4 +- .../Housekeeper/src/Housekeeper/Executor.cs | 2 +- .../Housekeeper/src/Housekeeper/Program.cs | 2 +- .../src/Housekeeper/packages.lock.json | 48 +- .../DeletionProcessLogger.cs | 2 +- .../src/Job.IdentityDeletion/Dockerfile | 4 +- .../Job.IdentityDeletion.csproj | 3 - .../src/Job.IdentityDeletion/Program.cs | 4 +- .../ServicesExtensions.cs | 4 +- .../Workers/ActualDeletionWorker.cs | 12 +- .../Workers/SendGracePeriodRemindersWorker.cs | 2 +- .../Job.IdentityDeletion/packages.lock.json | 57 +- .../packages.lock.json | 59 +- .../Tests/ActualDeletionWorkerTests.cs | 6 +- .../packages.lock.json | 59 +- .../SseServer/Controllers/SseController.cs | 4 +- .../IServiceCollectionExtensions.cs | 4 +- .../SseServer/src/SseServer/Program.cs | 3 +- .../src/SseServer/packages.lock.json | 32 +- .../test/SseServerTests/packages.lock.json | 32 +- .../Backbone.Tests.ArchUnit.csproj | 6 +- Backbone.Tests.ArchUnit/CleanArchitecture.cs | 1 - .../VerticalSliceArchitecture.cs | 12 +- Backbone.Tests.ArchUnit/packages.lock.json | 102 +- Backbone.slnx | 8 +- .../EndpointRouteBuilderExtensions.cs | 3 + .../MinimalApi/EnvelopeHttpResults.cs | 2 + .../src/BuildingBlocks.API/packages.lock.json | 88 +- .../src/BuildingBlocks.Domain/AssemblyInfo.cs | 2 +- .../packages.lock.json | 88 +- .../Announcements.Module/packages.lock.json | 72 +- .../packages.lock.json | 72 +- .../src/Challenges.Module/packages.lock.json | 78 +- .../packages.lock.json | 78 +- .../DeviceRegistrationErrors.cs | 10 + .../Devices.Abstractions.csproj | 6 + .../IChallengesRepository.cs | 2 +- .../IDevicePasswordService.cs | 8 + .../IIdentitiesRepository.cs | 2 +- .../IOAuthClientsRepository.cs | 3 +- .../IPnsRegistrationsRepository.cs | 2 +- .../IRelationshipTemplatesRepository.cs | 2 +- .../IRelationshipsRepository.cs | 2 +- .../ITiersRepository.cs | 2 +- ...neActiveDeletionProcessAllowedException.cs | 2 +- .../IPushNotificationRegistrationService.cs | 4 +- .../NotificationIdAttribute.cs | 2 +- .../Devices.Abstractions}/packages.lock.json | 58 +- .../Queries/GetClient/GetClientQuery.cs | 9 - .../Devices.Application.csproj | 22 - .../ExecuteHousekeepingCommand.cs | 5 - .../Commands/RegisterDevice/Handler.cs | 120 -- .../GetActiveDevice/GetActiveDeviceQuery.cs | 6 - .../ChangeFeatureFlagsCommand.cs | 5 - ...etionProcessGracePeriodRemindersCommand.cs | 5 - .../TriggerRipeDeletionProcessesCommand.cs | 5 - .../GetOwnIdentity/GetOwnIdentityQuery.cs | 5 - .../NewAnnouncementPushNotification.cs | 8 - .../DeletionStartsPushNotification.cs | 5 - .../BackupDeviceUsedPushNotification.cs | 5 - .../Tokens/TokenLockedPushNotification.cs | 5 - .../DeleteDeviceRegistrationCommand.cs | 5 - .../CreateQueuedForDeletionTierCommand.cs | 5 - .../SeedTestUsers/SeedTestUsersCommand.cs | 5 - .../Devices.Application/packages.lock.json | 1505 ----------------- .../Entities/Identities/Device.cs | 3 + .../packages.lock.json | 88 +- .../packages.lock.json | 88 +- .../DevicePasswordService.cs | 14 + .../Devices.Infrastructure.csproj | 3 +- .../IServiceCollectionExtensions.cs | 3 +- .../Repository/ChallengesRepository.cs | 2 +- .../Repository/IdentitiesRepository.cs | 7 +- .../Repository/OAuthClientsRepository.cs | 8 +- .../Repository/PnsRegistrationsRepository.cs | 2 +- .../RelationshipTemplateRepository.cs | 2 +- .../Repository/RelationshipsRepository.cs | 2 +- .../Persistence/Repository/TiersRepository.cs | 2 +- .../ApplePushNotificationServiceConnector.cs | 2 +- .../Fcm/FirebaseCloudMessagingConnector.cs | 2 +- .../IServiceCollectionExtensions.cs | 2 +- .../PushNotifications/PushService.cs | 4 +- .../Devices.Infrastructure/packages.lock.json | 97 +- .../ApplicationConfiguration.cs | 2 +- .../ApplicationErrors.cs | 4 +- ...ApplicationServiceCollectionExtensions.cs} | 9 +- .../src/Devices.Module/Devices.Module.csproj | 13 +- .../DevicesEndpointExtensions.cs | 63 + .../DevicesEventBusExtensions.cs} | 16 +- .../src/Devices.Module/DevicesModule.cs | 4 +- .../Authorization/ExchangeToken/Endpoint.cs | 55 +- .../Clients/ChangeClientSecret/Command.cs} | 2 +- .../Clients}/ChangeClientSecret/Handler.cs | 5 +- .../Clients/ChangeClientSecret/Response.cs} | 2 +- .../Clients}/ChangeClientSecret/Validator.cs | 2 +- .../Features/Clients/CreateClient/Command.cs} | 2 +- .../Features/Clients}/CreateClient/Handler.cs | 5 +- .../Clients/CreateClient/Response.cs} | 2 +- .../Clients}/CreateClient/Validator.cs | 2 +- .../Features/Clients/DeleteClient/Command.cs} | 2 +- .../Features/Clients}/DeleteClient/Handler.cs | 4 +- .../Clients}/DeleteClient/Validator.cs | 2 +- .../Features/Clients}/GetClient/Handler.cs | 8 +- .../Features/Clients/GetClient/Query.cs | 9 + .../Features/Clients}/ListClients/Handler.cs | 4 +- .../Features/Clients/ListClients/Query.cs} | 2 +- .../Features/Clients/ListClients/Response.cs} | 4 +- .../Features/Clients/Shared}/ClientDTO.cs | 2 +- .../Clients/Shared}/ClientIdGenerator.cs | 2 +- .../Clients/Shared}/PasswordGenerator.cs | 2 +- .../Features/Clients/UpdateClient/Command.cs} | 2 +- .../Features/Clients}/UpdateClient/Handler.cs | 4 +- .../Clients/UpdateClient/Response.cs} | 2 +- .../Clients}/UpdateClient/Validator.cs | 2 +- .../Devices/ChangePassword/Command.cs} | 2 +- .../Devices/ChangePassword/Endpoint.cs | 29 + .../Devices}/ChangePassword/Handler.cs | 17 +- .../Devices}/ChangePassword/Validator.cs | 2 +- .../Features/Devices/DeleteDevice/Command.cs} | 2 +- .../Features/Devices/DeleteDevice/Endpoint.cs | 27 + .../Features/Devices}/DeleteDevice/Handler.cs | 4 +- .../Devices}/DeleteDevice/Validator.cs | 2 +- .../Devices/ExecuteHousekeeping/Command.cs | 5 + .../Devices}/ExecuteHousekeeping/Handler.cs | 6 +- .../Devices/GetActiveDevice/Endpoint.cs | 26 + .../Devices}/GetActiveDevice/Handler.cs | 6 +- .../Features/Devices/GetActiveDevice/Query.cs | 6 + .../Features/Devices/ListDevices/Endpoint.cs | 35 + .../Features/Devices}/ListDevices/Handler.cs | 4 +- .../Features/Devices/ListDevices/Query.cs} | 2 +- .../Features/Devices/ListDevices/Response.cs} | 4 +- .../Devices}/ListDevices/Validator.cs | 4 +- .../Devices/RegisterDevice/Command.cs} | 4 +- .../Devices/RegisterDevice/Endpoint.cs | 37 + .../Devices/RegisterDevice/Handler.cs | 57 + .../Devices/RegisterDevice/Request.cs | 11 + .../Devices/RegisterDevice/Response.cs} | 4 +- .../Devices}/RegisterDevice/Validator.cs | 5 +- .../Devices/Shared}/ChallengeValidator.cs | 10 +- .../Features/Devices/Shared}/DeviceDTO.cs | 4 +- .../Devices/Shared/DynamicJsonConverter.cs | 65 + .../Features/Devices/Shared}/PublicKey.cs | 8 +- .../Features/Devices/Shared}/Signature.cs | 6 +- .../Devices/Shared}/SignedChallengeDTO.cs | 2 +- .../Validators/SignedChallengeDTOValidator.cs | 3 +- .../Devices/UpdateActiveDevice/Command.cs} | 4 +- .../Devices/UpdateActiveDevice/Endpoint.cs | 29 + .../Devices}/UpdateActiveDevice/Handler.cs | 6 +- .../Devices}/UpdateActiveDevice/Validator.cs | 4 +- .../AnnouncementCreated/Handler.cs} | 6 +- .../DomainEvents/BackupDeviceUsed/Handler.cs} | 6 +- .../DatawalletModificationCreated/Handler.cs} | 4 +- .../ExternalEventCreated/Handler.cs} | 6 +- .../Handler.cs} | 4 +- .../DomainEvents/TokenLocked/Handler.cs} | 8 +- .../CancelDeletionProcess/Command.cs} | 4 +- .../CancelDeletionProcess/Endpoint.cs | 27 + .../CancelDeletionProcess/Handler.cs | 8 +- .../CancelDeletionProcess/Response.cs} | 4 +- .../CancelDeletionProcess/Validator.cs | 4 +- .../Identities/ChangeFeatureFlags/Command.cs | 5 + .../Identities/ChangeFeatureFlags/Endpoint.cs | 26 + .../Identities}/ChangeFeatureFlags/Handler.cs | 6 +- .../ChangeFeatureFlags/Validator.cs | 4 +- .../Identities/CreateIdentity/Command.cs} | 4 +- .../Identities/CreateIdentity/Endpoint.cs | 51 + .../Identities}/CreateIdentity/Handler.cs | 8 +- .../Identities/CreateIdentity/Request.cs | 20 + .../Identities/CreateIdentity/Response.cs} | 4 +- .../Identities}/CreateIdentity/Validator.cs | 5 +- .../Identities/DeleteIdentity/Command.cs} | 4 +- .../Identities}/DeleteIdentity/Handler.cs | 4 +- .../DeleteIdentity}/IdentityDeleter.cs | 8 +- .../Identities}/DeleteIdentity/Validator.cs | 4 +- .../GetDeletionProcessAsOwner/Endpoint.cs | 28 + .../GetDeletionProcessAsOwner/Handler.cs | 6 +- .../GetDeletionProcessAsOwner/Query.cs} | 4 +- .../GetDeletionProcessAsOwner/Validator.cs | 4 +- .../GetDeletionProcessAsSupport/Handler.cs | 8 +- .../GetDeletionProcessAsSupport/Query.cs} | 4 +- .../GetDeletionProcessAsSupport/Validator.cs | 4 +- .../Identities}/GetIdentity/Handler.cs | 4 +- .../Features/Identities/GetIdentity/Query.cs} | 2 +- .../Identities/GetIdentity/Response.cs} | 4 +- .../Identities}/GetIdentity/Validator.cs | 4 +- .../Identities/GetOwnIdentity/Endpoint.cs | 25 + .../Identities}/GetOwnIdentity/Handler.cs | 6 +- .../Identities/GetOwnIdentity/Query.cs | 5 + .../Identities/GetOwnIdentity/Response.cs} | 4 +- .../Command.cs} | 4 +- .../HandleCompletedDeletionProcess/Handler.cs | 6 +- .../Validator.cs | 4 +- .../Command.cs} | 4 +- .../Handler.cs | 4 +- .../IsIdentityOfUserDeleted/Endpoint.cs | 27 + .../IsIdentityOfUserDeleted/Handler.cs | 6 +- .../IsIdentityOfUserDeleted/Query.cs} | 4 +- .../IsIdentityOfUserDeleted/Response.cs} | 2 +- .../IsIdentityOfUserDeleted/Validator.cs | 4 +- .../Handler.cs | 4 +- .../Query.cs} | 4 +- .../Response.cs} | 4 +- .../ListDeletionProcessesAsOwner/Endpoint.cs | 25 + .../ListDeletionProcessesAsOwner/Handler.cs | 4 +- .../ListDeletionProcessesAsOwner/Query.cs} | 2 +- .../ListDeletionProcessesAsOwner/Response.cs} | 4 +- .../ListDeletionProcessesAsSupport/Handler.cs | 4 +- .../ListDeletionProcessesAsSupport/Query.cs} | 2 +- .../Response.cs} | 4 +- .../Validator.cs | 4 +- .../ListDeletionProcessesAuditLogs/Handler.cs | 4 +- .../ListDeletionProcessesAuditLogs/Query.cs} | 4 +- .../Response.cs} | 6 +- .../Validator.cs | 4 +- .../Identities/ListFeatureFlags/Endpoint.cs | 27 + .../Identities}/ListFeatureFlags/Handler.cs | 4 +- .../Identities/ListFeatureFlags/Query.cs} | 2 +- .../Identities/ListFeatureFlags/Response.cs} | 2 +- .../Identities}/ListFeatureFlags/Validator.cs | 2 +- .../Identities}/ListIdentities/Handler.cs | 4 +- .../Identities/ListIdentities/Query.cs} | 2 +- .../Identities/ListIdentities/Response.cs} | 4 +- .../Identities}/ListIdentities/Validator.cs | 4 +- .../Identities/LogDeletionProcess/Command.cs} | 4 +- .../Identities}/LogDeletionProcess/Handler.cs | 4 +- .../LogDeletionProcess/Validator.cs | 4 +- .../Command.cs | 5 + .../Handler.cs | 6 +- .../StartDeletionProcess/Command.cs} | 2 +- .../StartDeletionProcess/Endpoint.cs | 26 + .../StartDeletionProcess/Handler.cs | 8 +- .../StartDeletionProcess/Response.cs} | 4 +- .../TriggerRipeDeletionProcesses/Command.cs | 5 + .../TriggerRipeDeletionProcesses/Handler.cs | 6 +- .../TriggerRipeDeletionProcesses/Response.cs} | 4 +- .../Identities/UpdateIdentity/Command.cs} | 2 +- .../Identities}/UpdateIdentity/Handler.cs | 4 +- .../Identities}/UpdateIdentity/Validator.cs | 2 +- .../SendNotification/Command.cs} | 4 +- .../SendNotification/Endpoint.cs | 29 + .../SendNotification/Handler.cs | 6 +- .../SendNotification/Validator.cs | 4 +- .../DeleteDeviceRegistration/Command.cs | 5 + .../DeleteDeviceRegistration/Endpoint.cs | 25 + .../DeleteDeviceRegistration/Handler.cs | 5 +- .../Command.cs} | 4 +- .../Handler.cs | 4 +- .../Validator.cs | 4 +- .../SendTestNotification/Command.cs} | 2 +- .../SendTestNotification/Endpoint.cs | 26 + .../SendTestNotification/Handler.cs | 4 +- .../SendTestNotification/Validator.cs | 2 +- .../NewAnnouncementPushNotification.cs | 8 + ...letModificationsCreatedPushNotification.cs | 3 +- ...ProcessCancelledByOwnerPushNotification.cs | 2 +- ...cessGracePeriodReminderPushNotification.cs | 2 +- .../DeletionProcessStartedPushNotification.cs | 2 +- .../DeletionStartsPushNotification.cs | 5 + .../BackupDeviceUsedPushNotification.cs | 5 + .../ExternalEventCreatedPushNotification.cs | 3 +- .../Shared}/TestPushNotification.cs | 2 +- .../Tokens/TokenLockedPushNotification.cs | 5 + .../UpdateDeviceRegistration/Command.cs} | 2 +- .../UpdateDeviceRegistration/Endpoint.cs | 29 + .../UpdateDeviceRegistration/Handler.cs | 7 +- .../UpdateDeviceRegistration/Response.cs} | 2 +- .../UpdateDeviceRegistration/Validator.cs | 2 +- .../Features/Shared}/ChallengeDTO.cs | 2 +- .../IdentityDeletionProcessDetailsDTO.cs | 2 +- .../IdentityDeletionProcessOverviewDTO.cs | 2 +- .../Features/Shared}/IdentitySummaryDTO.cs | 4 +- .../CreateQueuedForDeletionTier/Command.cs | 5 + .../CreateQueuedForDeletionTier/Handler.cs | 4 +- .../Features/Tiers/CreateTier/Command.cs} | 2 +- .../Features/Tiers}/CreateTier/Handler.cs | 4 +- .../Features/Tiers/CreateTier/Response.cs} | 4 +- .../Features/Tiers}/CreateTier/Validator.cs | 2 +- .../Features/Tiers/DeleteTier/Command.cs} | 2 +- .../Features/Tiers}/DeleteTier/Handler.cs | 4 +- .../Features/Tiers}/DeleteTier/Validator.cs | 2 +- .../Features/Tiers}/ListTiers/Handler.cs | 4 +- .../Features/Tiers/ListTiers/Query.cs} | 2 +- .../Features/Tiers/ListTiers/Response.cs} | 4 +- .../Features/Tiers/Shared}/TierDTO.cs | 2 +- .../Tiers/Shared}/TierQueryableExtensions.cs | 3 +- .../Features/Users/SeedTestUsers/Command.cs | 5 + .../Features/Users}/SeedTestUsers/Handler.cs | 5 +- .../src/Devices.Module/packages.lock.json | 133 +- .../Devices.Infrastructure.Tests.csproj | 1 + ...lePushNotificationServiceConnectorTests.cs | 2 +- .../PushNotificationTextProviderTests.cs | 6 +- .../PushNotifications/PushServiceTests.cs | 2 +- .../packages.lock.json | 600 +++++-- .../Devices.Module.Tests.csproj} | 2 +- .../TestDataGenerator.cs | 2 +- .../Commands/DeleteDevice/ValidatorTests.cs | 6 +- .../Queries/ListDevices/ValidatorTests.cs | 6 +- ...ouncementCreatedDomainEventHandlerTests.cs | 6 +- ...rnalEventCreatedDomainEventHandlerTests.cs | 10 +- .../TokenLockedDomainEventHandlerTests.cs | 10 +- .../CancelDeletionProcess/HandlerTests.cs | 10 +- .../CancelDeletionProcess/ValidatorTests.cs | 4 +- .../Commands/DeleteIdentity/ValidatorTests.cs | 4 +- .../LogDeletionProcess/ValidatorTests.cs | 4 +- .../HandlerTests.cs | 8 +- .../StartDeletionProcess/HandlerTests.cs | 8 +- .../UpdateDeletionProcesses/HandlerTests.cs | 8 +- .../Commands/UpdateIdentity/HandlerTests.cs | 6 +- .../Commands/UpdateIdentity/ValidatorTests.cs | 4 +- .../Tests/Identities/IdentityDeleterTests.cs | 9 +- .../ValidatorTests.cs | 4 +- .../ValidatorTests.cs | 4 +- .../ValidatorTests.cs | 4 +- .../HandlerTests.cs | 4 +- .../ValidatorTests.cs | 4 +- .../Queries/GetIdentity/ValidatorTests.cs | 4 +- .../Queries/ListIdentities/ValidatorTests.cs | 4 +- .../DatawalletModified/HandlerTests.cs | 8 +- .../ValidatorTests.cs | 4 +- .../UpdateDeviceRegistration/HandlerTests.cs | 7 +- .../Commands/CreateTier/ValidatorTests.cs | 6 +- .../Tiers/Commands/DeleteTier/HandlerTests.cs | 6 +- .../Commands/DeleteTier/ValidatorTests.cs | 4 +- .../packages.lock.json | 600 +++++-- .../Files/src/Files.Module/packages.lock.json | 78 +- .../Files.Module.Tests/packages.lock.json | 78 +- .../src/Messages.Module/packages.lock.json | 78 +- .../Messages.Module.Tests/packages.lock.json | 78 +- .../IChallengesRepository.cs | 2 +- .../IDatawalletModificationsRepository.cs | 2 +- .../IDevicesRepository.cs | 2 +- .../IFilesRepository.cs | 2 +- .../IIdentitiesRepository.cs | 2 +- .../IIdentityDeletionProcessesRepository.cs | 2 +- .../IMessagesRepository.cs | 2 +- .../IMetricsRepository.cs | 2 +- .../IRelationshipTemplatesRepository.cs | 2 +- .../IRelationshipsRepository.cs | 2 +- .../ITiersRepository.cs | 2 +- .../ITokensRepository.cs | 2 +- .../Quotas.Abstractions.csproj | 5 + .../Quotas.Abstractions/packages.lock.json | 89 + .../Quotas.Application.csproj | 15 - .../SeedQueuedForDeletionTierCommand.cs | 5 - .../Quotas/src/Quotas.Domain/AssemblyInfo.cs | 2 +- .../packages.lock.json | 46 +- .../packages.lock.json | 46 +- .../Database/IServiceCollectionExtensions.cs | 5 +- .../Repository/ChallengesRepository.cs | 2 +- .../DatawalletModificationsRepository.cs | 2 +- .../Repository/DevicesRepository.cs | 2 +- .../Persistence/Repository/FilesRepository.cs | 2 +- .../Repository/IdentitiesRepository.cs | 2 +- .../IdentityDeletionProcessesRepository.cs | 2 +- .../Repository/MessagesRepository.cs | 2 +- .../Repository/MetricsRepository.cs | 2 +- .../RelationshipTemplatesRepository.cs | 2 +- .../Repository/RelationshipsRepository.cs | 2 +- .../Persistence/Repository/TiersRepository.cs | 2 +- .../Repository/TokensRepository.cs | 2 +- .../Quotas.Infrastructure.csproj | 4 +- .../Quotas.Infrastructure/packages.lock.json | 42 +- .../ApplicationConfiguration.cs | 2 +- ...ApplicationServiceCollectionExtensions.cs} | 10 +- .../DomainEvents/FileUploaded/Handler.cs} | 4 +- .../DomainEvents/IdentityCreated/Handler.cs} | 4 +- .../DomainEvents/MessageCreated/Handler.cs} | 4 +- .../RelationshipStatusChanged/Handler.cs} | 4 +- .../RelationshipTemplateCreated/Handler.cs} | 4 +- .../DomainEvents/TierCreated/Handler.cs} | 4 +- .../DomainEvents/TierDeleted/Handler.cs} | 4 +- .../TierOfIdentityChanged/Handler.cs} | 4 +- .../TierQuotaDefinitionCreated/Handler.cs} | 4 +- .../TierQuotaDefinitionDeleted/Handler.cs} | 6 +- .../DomainEvents/TokenCreated/Handler.cs} | 4 +- .../CreateQuotaForIdentity/Command.cs} | 4 +- .../CreateQuotaForIdentity/Handler.cs | 8 +- .../CreateQuotaForIdentity/Validator.cs | 2 +- .../Identities/DeleteIdentity/Command.cs} | 2 +- .../Identities}/DeleteIdentity/Handler.cs | 4 +- .../DeleteIdentity}/IdentityDeleter.cs | 4 +- .../Identities}/DeleteIdentity/Validator.cs | 2 +- .../DeleteQuotaForIdentity/Command.cs} | 2 +- .../DeleteQuotaForIdentity/Handler.cs | 4 +- .../DeleteQuotaForIdentity/Validator.cs | 2 +- .../Identities}/GetIdentity/Handler.cs | 4 +- .../Features/Identities/GetIdentity/Query.cs} | 2 +- .../Identities/GetIdentity/Response.cs} | 4 +- .../Identities}/GetIdentity/Validator.cs | 2 +- .../ListQuotasForIdentity/Endpoint.cs | 25 + .../ListQuotasForIdentity/Handler.cs | 4 +- .../ListQuotasForIdentity/Query.cs} | 2 +- .../ListQuotasForIdentity/Response.cs} | 2 +- .../Features/Metrics}/ListMetrics/Handler.cs | 4 +- .../Features/Metrics/ListMetrics/Query.cs} | 2 +- .../Features/Metrics/ListMetrics/Response.cs} | 4 +- .../Metrics/Shared}/MetricStatusesService.cs | 4 +- ...mberOfCreatedChallengesMetricCalculator.cs | 4 +- ...DatawalletModificationsMetricCalculator.cs | 4 +- .../NumberOfCreatedDevicesMetricCalculator.cs | 4 +- .../Shared}/NumberOfFilesMetricCalculator.cs | 4 +- ...OfRelationshipTemplatesMetricCalculator.cs | 4 +- .../NumberOfRelationshipsMetricCalculator.cs | 4 +- .../NumberOfSentMessagesMetricCalculator.cs | 4 +- ...tartedDeletionProcessesMetricCalculator.cs | 4 +- .../Shared}/NumberOfTokensMetricCalculator.cs | 4 +- .../ServiceProviderMetricCalculatorFactory.cs | 2 +- .../UsedFileStorageSpaceMetricCalculator.cs | 4 +- .../Features/Shared}/IndividualQuotaDTO.cs | 2 +- .../Features/Shared}/MetricDTO.cs | 2 +- .../Features/Shared}/QuotaDTO.cs | 2 +- .../Features/Shared}/TierDetailsDTO.cs | 2 +- .../Shared}/TierQuotaDefinitionDTO.cs | 2 +- .../Tiers/CreateQuotaForTier/Command.cs} | 4 +- .../Tiers}/CreateQuotaForTier/Handler.cs | 6 +- .../Tiers}/CreateQuotaForTier/Validator.cs | 2 +- .../DeleteTierQuotaDefinition/Command.cs} | 2 +- .../DeleteTierQuotaDefinition/Handler.cs | 4 +- .../DeleteTierQuotaDefinition/Validator.cs | 2 +- .../Features/Tiers}/GetTier/Handler.cs | 6 +- .../Features/Tiers/GetTier/Query.cs} | 4 +- .../Features/Tiers}/GetTier/Validator.cs | 2 +- .../SeedQueuedForDeletionTier/Command.cs | 5 + .../SeedQueuedForDeletionTier/Handler.cs | 4 +- .../src/Quotas.Module/Quotas.Module.csproj | 9 +- .../Quotas.Module/QuotasEndpointExtensions.cs | 16 + .../QuotasEventBusExtensions.cs} | 26 +- .../Quotas/src/Quotas.Module/QuotasModule.cs | 2 - .../src/Quotas.Module/packages.lock.json | 98 +- .../packages.lock.json | 28 +- ...edFileStorageSpaceMetricCalculatorTests.cs | 6 +- .../Quotas.Module.Tests.csproj} | 2 +- .../TestDoubles/AddMockTiersRepository.cs | 4 +- .../TestDoubles/FindMetricsStubRepository.cs | 4 +- .../FindTierQuotaDefinitionsStubRepository.cs | 4 +- .../TestDoubles/FindTiersStubRepository.cs | 4 +- .../MetricStatusesStubRepository.cs | 2 +- .../TierDeletedDomainEventHandlerTests.cs | 6 +- .../HandlerTests.cs | 6 +- .../IdentityCreatedDomainEventHandlerTests.cs | 8 +- .../Tests/Identities/IdentityDeleterTests.cs | 5 +- ...efinitionCreatedDomainEventHandlerTests.cs | 8 +- .../Tests/QuotaCheck/QuotaCheckerImplTests.cs | 4 +- .../CreateQuotaForIdentity/HandlerTests.cs | 10 +- .../TierCreatedDomainEventHandlerTests.cs | 6 +- .../packages.lock.json | 1094 ++++++++++-- .../Relationships.Module/packages.lock.json | 78 +- .../Synchronization.Module/packages.lock.json | 66 +- .../Tags/src/Tags.Module/packages.lock.json | 88 +- .../src/Tokens.Module/packages.lock.json | 72 +- .../Tokens.Module.Tests/packages.lock.json | 72 +- 492 files changed, 4362 insertions(+), 5488 deletions(-) delete mode 100644 Applications/ConsumerApi/src/Controllers/Devices/DevicesController.cs delete mode 100644 Applications/ConsumerApi/src/Controllers/Devices/IdentitiesController.cs delete mode 100644 Applications/ConsumerApi/src/Controllers/Devices/IdentityDeletionProcessesController.cs delete mode 100644 Applications/ConsumerApi/src/Controllers/Devices/PushNotificationsController.cs delete mode 100644 Applications/ConsumerApi/src/Controllers/Notifications/NotificationsController.cs delete mode 100644 Applications/ConsumerApi/src/Controllers/Quotas/QuotasController.cs create mode 100644 Modules/Devices/src/Devices.Abstractions/DeviceRegistrationErrors.cs create mode 100644 Modules/Devices/src/Devices.Abstractions/Devices.Abstractions.csproj rename Modules/Devices/src/{Devices.Application/Infrastructure/Persistence/Repository => Devices.Abstractions}/IChallengesRepository.cs (68%) create mode 100644 Modules/Devices/src/Devices.Abstractions/IDevicePasswordService.cs rename Modules/Devices/src/{Devices.Application/Infrastructure/Persistence/Repository => Devices.Abstractions}/IIdentitiesRepository.cs (97%) rename Modules/Devices/src/{Devices.Application/Infrastructure/Persistence/Repository => Devices.Abstractions}/IOAuthClientsRepository.cs (84%) rename Modules/Devices/src/{Devices.Application/Infrastructure/Persistence/Repository => Devices.Abstractions}/IPnsRegistrationsRepository.cs (90%) rename Modules/Devices/src/{Devices.Application/Infrastructure/Persistence/Repository => Devices.Abstractions}/IRelationshipTemplatesRepository.cs (76%) rename Modules/Devices/src/{Devices.Application/Infrastructure/Persistence/Repository => Devices.Abstractions}/IRelationshipsRepository.cs (84%) rename Modules/Devices/src/{Devices.Application/Infrastructure/Persistence/Repository => Devices.Abstractions}/ITiersRepository.cs (93%) rename Modules/Devices/src/{Devices.Application => Devices.Abstractions}/OnlyOneActiveDeletionProcessAllowedException.cs (84%) rename Modules/Devices/src/{Devices.Application/Infrastructure => Devices.Abstractions}/PushNotifications/IPushNotificationRegistrationService.cs (86%) rename Modules/Devices/src/{Devices.Application/Infrastructure => Devices.Abstractions}/PushNotifications/NotificationIdAttribute.cs (80%) rename Modules/{Quotas/src/Quotas.Application => Devices/src/Devices.Abstractions}/packages.lock.json (98%) delete mode 100644 Modules/Devices/src/Devices.Application/Clients/Queries/GetClient/GetClientQuery.cs delete mode 100644 Modules/Devices/src/Devices.Application/Devices.Application.csproj delete mode 100644 Modules/Devices/src/Devices.Application/Devices/Commands/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs delete mode 100644 Modules/Devices/src/Devices.Application/Devices/Commands/RegisterDevice/Handler.cs delete mode 100644 Modules/Devices/src/Devices.Application/Devices/Queries/GetActiveDevice/GetActiveDeviceQuery.cs delete mode 100644 Modules/Devices/src/Devices.Application/Identities/Commands/ChangeFeatureFlags/ChangeFeatureFlagsCommand.cs delete mode 100644 Modules/Devices/src/Devices.Application/Identities/Commands/SendDeletionProcessGracePeriodReminders/SendDeletionProcessGracePeriodRemindersCommand.cs delete mode 100644 Modules/Devices/src/Devices.Application/Identities/Commands/TriggerRipeDeletionProcesses/TriggerRipeDeletionProcessesCommand.cs delete mode 100644 Modules/Devices/src/Devices.Application/Identities/Queries/GetOwnIdentity/GetOwnIdentityQuery.cs delete mode 100644 Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/Announcements/NewAnnouncementPushNotification.cs delete mode 100644 Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/DeletionProcess/DeletionStartsPushNotification.cs delete mode 100644 Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/Device/BackupDeviceUsedPushNotification.cs delete mode 100644 Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/Tokens/TokenLockedPushNotification.cs delete mode 100644 Modules/Devices/src/Devices.Application/PushNotifications/Commands/DeleteDeviceRegistration/DeleteDeviceRegistrationCommand.cs delete mode 100644 Modules/Devices/src/Devices.Application/Tiers/Commands/CreateQueuedForDeletionTier/CreateQueuedForDeletionTierCommand.cs delete mode 100644 Modules/Devices/src/Devices.Application/Users/Commands/SeedTestUsers/SeedTestUsersCommand.cs delete mode 100644 Modules/Devices/src/Devices.Application/packages.lock.json create mode 100644 Modules/Devices/src/Devices.Infrastructure/DevicePasswordService.cs rename Modules/Devices/src/{Devices.Application => Devices.Module}/ApplicationConfiguration.cs (97%) rename Modules/Devices/src/{Devices.Application => Devices.Module}/ApplicationErrors.cs (95%) rename Modules/Devices/src/{Devices.Application/Extensions/IServiceCollectionExtensions.cs => Devices.Module/ApplicationServiceCollectionExtensions.cs} (85%) create mode 100644 Modules/Devices/src/Devices.Module/DevicesEndpointExtensions.cs rename Modules/Devices/src/{Devices.Application/Extensions/IEventBusExtensions.cs => Devices.Module/DevicesEventBusExtensions.cs} (74%) rename Applications/ConsumerApi/src/Controllers/AuthorizationController.cs => Modules/Devices/src/Devices.Module/Features/Authorization/ExchangeToken/Endpoint.cs (66%) rename Modules/Devices/src/{Devices.Application/Clients/Commands/ChangeClientSecret/ChangeClientSecretCommand.cs => Devices.Module/Features/Clients/ChangeClientSecret/Command.cs} (70%) rename Modules/Devices/src/{Devices.Application/Clients/Commands => Devices.Module/Features/Clients}/ChangeClientSecret/Handler.cs (84%) rename Modules/Devices/src/{Devices.Application/Clients/Commands/ChangeClientSecret/ChangeClientSecretResponse.cs => Devices.Module/Features/Clients/ChangeClientSecret/Response.cs} (89%) rename Modules/Devices/src/{Devices.Application/Clients/Commands => Devices.Module/Features/Clients}/ChangeClientSecret/Validator.cs (74%) rename Modules/Devices/src/{Devices.Application/Clients/Commands/CreateClient/CreateClientCommand.cs => Devices.Module/Features/Clients/CreateClient/Command.cs} (80%) rename Modules/Devices/src/{Devices.Application/Clients/Commands => Devices.Module/Features/Clients}/CreateClient/Handler.cs (94%) rename Modules/Devices/src/{Devices.Application/Clients/Commands/CreateClient/CreateClientResponse.cs => Devices.Module/Features/Clients/CreateClient/Response.cs} (89%) rename Modules/Devices/src/{Devices.Application/Clients/Commands => Devices.Module/Features/Clients}/CreateClient/Validator.cs (78%) rename Modules/Devices/src/{Devices.Application/Clients/Commands/DeleteClient/DeleteClientCommand.cs => Devices.Module/Features/Clients/DeleteClient/Command.cs} (59%) rename Modules/Devices/src/{Devices.Application/Clients/Commands => Devices.Module/Features/Clients}/DeleteClient/Handler.cs (87%) rename Modules/Devices/src/{Devices.Application/Clients/Commands => Devices.Module/Features/Clients}/DeleteClient/Validator.cs (78%) rename Modules/Devices/src/{Devices.Application/Clients/Queries => Devices.Module/Features/Clients}/GetClient/Handler.cs (76%) create mode 100644 Modules/Devices/src/Devices.Module/Features/Clients/GetClient/Query.cs rename Modules/Devices/src/{Devices.Application/Clients/Queries => Devices.Module/Features/Clients}/ListClients/Handler.cs (83%) rename Modules/Devices/src/{Devices.Application/Clients/Queries/ListClients/ListClientsQuery.cs => Devices.Module/Features/Clients/ListClients/Query.cs} (51%) rename Modules/Devices/src/{Devices.Application/Clients/Queries/ListClients/ListClientsResponse.cs => Devices.Module/Features/Clients/ListClients/Response.cs} (76%) rename Modules/Devices/src/{Devices.Application/Clients/DTOs => Devices.Module/Features/Clients/Shared}/ClientDTO.cs (90%) rename Modules/Devices/src/{Devices.Application => Devices.Module/Features/Clients/Shared}/ClientIdGenerator.cs (95%) rename Modules/Devices/src/{Devices.Application => Devices.Module/Features/Clients/Shared}/PasswordGenerator.cs (88%) rename Modules/Devices/src/{Devices.Application/Clients/Commands/UpdateClient/UpdateClientCommand.cs => Devices.Module/Features/Clients/UpdateClient/Command.cs} (75%) rename Modules/Devices/src/{Devices.Application/Clients/Commands => Devices.Module/Features/Clients}/UpdateClient/Handler.cs (92%) rename Modules/Devices/src/{Devices.Application/Clients/Commands/UpdateClient/UpdateClientResponse.cs => Devices.Module/Features/Clients/UpdateClient/Response.cs} (88%) rename Modules/Devices/src/{Devices.Application/Clients/Commands => Devices.Module/Features/Clients}/UpdateClient/Validator.cs (81%) rename Modules/Devices/src/{Devices.Application/Devices/Commands/ChangePassword/ChangePasswordCommand.cs => Devices.Module/Features/Devices/ChangePassword/Command.cs} (68%) create mode 100644 Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Endpoint.cs rename Modules/Devices/src/{Devices.Application/Devices/Commands => Devices.Module/Features/Devices}/ChangePassword/Handler.cs (66%) rename Modules/Devices/src/{Devices.Application/Devices/Commands => Devices.Module/Features/Devices}/ChangePassword/Validator.cs (81%) rename Modules/Devices/src/{Devices.Application/Devices/Commands/DeleteDevice/DeleteDeviceCommand.cs => Devices.Module/Features/Devices/DeleteDevice/Command.cs} (59%) create mode 100644 Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Endpoint.cs rename Modules/Devices/src/{Devices.Application/Devices/Commands => Devices.Module/Features/Devices}/DeleteDevice/Handler.cs (91%) rename Modules/Devices/src/{Devices.Application/Devices/Commands => Devices.Module/Features/Devices}/DeleteDevice/Validator.cs (82%) create mode 100644 Modules/Devices/src/Devices.Module/Features/Devices/ExecuteHousekeeping/Command.cs rename Modules/Devices/src/{Devices.Application/Devices/Commands => Devices.Module/Features/Devices}/ExecuteHousekeeping/Handler.cs (84%) create mode 100644 Modules/Devices/src/Devices.Module/Features/Devices/GetActiveDevice/Endpoint.cs rename Modules/Devices/src/{Devices.Application/Devices/Queries => Devices.Module/Features/Devices}/GetActiveDevice/Handler.cs (80%) create mode 100644 Modules/Devices/src/Devices.Module/Features/Devices/GetActiveDevice/Query.cs create mode 100644 Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Endpoint.cs rename Modules/Devices/src/{Devices.Application/Devices/Queries => Devices.Module/Features/Devices}/ListDevices/Handler.cs (85%) rename Modules/Devices/src/{Devices.Application/Devices/Queries/ListDevices/ListDevicesQuery.cs => Devices.Module/Features/Devices/ListDevices/Query.cs} (77%) rename Modules/Devices/src/{Devices.Application/Devices/Queries/ListDevices/ListDevicesResponse.cs => Devices.Module/Features/Devices/ListDevices/Response.cs} (80%) rename Modules/Devices/src/{Devices.Application/Devices/Queries => Devices.Module/Features/Devices}/ListDevices/Validator.cs (65%) rename Modules/Devices/src/{Devices.Application/Devices/Commands/RegisterDevice/RegisterDeviceCommand.cs => Devices.Module/Features/Devices/RegisterDevice/Command.cs} (70%) create mode 100644 Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Endpoint.cs create mode 100644 Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Handler.cs create mode 100644 Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Request.cs rename Modules/Devices/src/{Devices.Application/Devices/Commands/RegisterDevice/RegisterDeviceResponse.cs => Devices.Module/Features/Devices/RegisterDevice/Response.cs} (81%) rename Modules/Devices/src/{Devices.Application/Devices/Commands => Devices.Module/Features/Devices}/RegisterDevice/Validator.cs (71%) rename Modules/Devices/src/{Devices.Application => Devices.Module/Features/Devices/Shared}/ChallengeValidator.cs (89%) rename Modules/Devices/src/{Devices.Application/Devices/DTOs => Devices.Module/Features/Devices/Shared}/DeviceDTO.cs (89%) create mode 100644 Modules/Devices/src/Devices.Module/Features/Devices/Shared/DynamicJsonConverter.cs rename Modules/Devices/src/{Devices.Application/Devices/DTOs => Devices.Module/Features/Devices/Shared}/PublicKey.cs (93%) rename Modules/Devices/src/{Devices.Application/Devices/DTOs => Devices.Module/Features/Devices/Shared}/Signature.cs (91%) rename Modules/Devices/src/{Devices.Application/Devices/DTOs => Devices.Module/Features/Devices/Shared}/SignedChallengeDTO.cs (67%) rename Modules/Devices/src/{Devices.Application/Devices/DTOs => Devices.Module/Features/Devices/Shared}/Validators/SignedChallengeDTOValidator.cs (70%) rename Modules/Devices/src/{Devices.Application/Devices/Commands/UpdateActiveDevice/UpdateActiveDeviceCommand.cs => Devices.Module/Features/Devices/UpdateActiveDevice/Command.cs} (54%) create mode 100644 Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Endpoint.cs rename Modules/Devices/src/{Devices.Application/Devices/Commands => Devices.Module/Features/Devices}/UpdateActiveDevice/Handler.cs (87%) rename Modules/Devices/src/{Devices.Application/Devices/Commands => Devices.Module/Features/Devices}/UpdateActiveDevice/Validator.cs (68%) rename Modules/Devices/src/{Devices.Application/DomainEvents/Incoming/AnnouncementCreated/AnnouncementCreatedDomainEventHandler.cs => Devices.Module/Features/DomainEvents/AnnouncementCreated/Handler.cs} (84%) rename Modules/Devices/src/{Devices.Application/DomainEvents/Incoming/BackupDeviceUsed/BackupDeviceUsedDomainEventHandler.cs => Devices.Module/Features/DomainEvents/BackupDeviceUsed/Handler.cs} (73%) rename Modules/Devices/src/{Devices.Application/DomainEvents/Incoming/DatawalletModificationCreated/DatawalletModifiedDomainEventHandler.cs => Devices.Module/Features/DomainEvents/DatawalletModificationCreated/Handler.cs} (84%) rename Modules/Devices/src/{Devices.Application/DomainEvents/Incoming/ExternalEventCreated/ExternalEventCreatedDomainEventHandler.cs => Devices.Module/Features/DomainEvents/ExternalEventCreated/Handler.cs} (82%) rename Modules/Devices/src/{Devices.Application/DomainEvents/Incoming/IdentityDeletionProcessStarted/IdentityDeletionProcessStartedDomainEventHandler.cs => Devices.Module/Features/DomainEvents/IdentityDeletionProcessStarted/Handler.cs} (81%) rename Modules/Devices/src/{Devices.Application/DomainEvents/Incoming/TokenLocked/TokenLockedDomainEventHandler.cs => Devices.Module/Features/DomainEvents/TokenLocked/Handler.cs} (78%) rename Modules/Devices/src/{Devices.Application/Identities/Commands/CancelDeletionProcess/CancelDeletionProcessCommand.cs => Devices.Module/Features/Identities/CancelDeletionProcess/Command.cs} (58%) create mode 100644 Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Endpoint.cs rename Modules/Devices/src/{Devices.Application/Identities/Commands => Devices.Module/Features/Identities}/CancelDeletionProcess/Handler.cs (85%) rename Modules/Devices/src/{Devices.Application/Identities/Commands/CancelDeletionProcess/CancelDeletionProcessResponse.cs => Devices.Module/Features/Identities/CancelDeletionProcess/Response.cs} (64%) rename Modules/Devices/src/{Devices.Application/Identities/Commands => Devices.Module/Features/Identities}/CancelDeletionProcess/Validator.cs (67%) create mode 100644 Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Command.cs create mode 100644 Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Endpoint.cs rename Modules/Devices/src/{Devices.Application/Identities/Commands => Devices.Module/Features/Identities}/ChangeFeatureFlags/Handler.cs (89%) rename Modules/Devices/src/{Devices.Application/Identities/Commands => Devices.Module/Features/Identities}/ChangeFeatureFlags/Validator.cs (85%) rename Modules/Devices/src/{Devices.Application/Identities/Commands/CreateIdentity/CreateIdentityCommand.cs => Devices.Module/Features/Identities/CreateIdentity/Command.cs} (75%) create mode 100644 Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Endpoint.cs rename Modules/Devices/src/{Devices.Application/Identities/Commands => Devices.Module/Features/Identities}/CreateIdentity/Handler.cs (94%) create mode 100644 Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Request.cs rename Modules/Devices/src/{Devices.Application/Identities/Commands/CreateIdentity/CreateIdentityResponse.cs => Devices.Module/Features/Identities/CreateIdentity/Response.cs} (83%) rename Modules/Devices/src/{Devices.Application/Identities/Commands => Devices.Module/Features/Identities}/CreateIdentity/Validator.cs (75%) rename Modules/Devices/src/{Devices.Application/Identities/Commands/DeleteIdentity/DeleteIdentityCommand.cs => Devices.Module/Features/Identities/DeleteIdentity/Command.cs} (52%) rename Modules/Devices/src/{Devices.Application/Identities/Commands => Devices.Module/Features/Identities}/DeleteIdentity/Handler.cs (76%) rename Modules/Devices/src/{Devices.Application/Identities => Devices.Module/Features/Identities/DeleteIdentity}/IdentityDeleter.cs (74%) rename Modules/Devices/src/{Devices.Application/Identities/Commands => Devices.Module/Features/Identities}/DeleteIdentity/Validator.cs (66%) create mode 100644 Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Endpoint.cs rename Modules/Devices/src/{Devices.Application/Identities/Queries => Devices.Module/Features/Identities}/GetDeletionProcessAsOwner/Handler.cs (84%) rename Modules/Devices/src/{Devices.Application/Identities/Queries/GetDeletionProcessAsOwner/GetDeletionProcessAsOwnerQuery.cs => Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Query.cs} (52%) rename Modules/Devices/src/{Devices.Application/Identities/Queries => Devices.Module/Features/Identities}/GetDeletionProcessAsOwner/Validator.cs (66%) rename Modules/Devices/src/{Devices.Application/Identities/Queries => Devices.Module/Features/Identities}/GetDeletionProcessAsSupport/Handler.cs (76%) rename Modules/Devices/src/{Devices.Application/Identities/Queries/GetDeletionProcessAsSupport/GetDeletionProcessAsSupportQuery.cs => Devices.Module/Features/Identities/GetDeletionProcessAsSupport/Query.cs} (61%) rename Modules/Devices/src/{Devices.Application/Identities/Queries => Devices.Module/Features/Identities}/GetDeletionProcessAsSupport/Validator.cs (75%) rename Modules/Devices/src/{Devices.Application/Identities/Queries => Devices.Module/Features/Identities}/GetIdentity/Handler.cs (82%) rename Modules/{Quotas/src/Quotas.Application/Identities/Queries/GetIdentity/GetIdentityQuery.cs => Devices/src/Devices.Module/Features/Identities/GetIdentity/Query.cs} (63%) rename Modules/Devices/src/{Devices.Application/Identities/Queries/GetIdentity/GetIdentityResponse.cs => Devices.Module/Features/Identities/GetIdentity/Response.cs} (59%) rename Modules/Devices/src/{Devices.Application/Identities/Queries => Devices.Module/Features/Identities}/GetIdentity/Validator.cs (65%) create mode 100644 Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Endpoint.cs rename Modules/Devices/src/{Devices.Application/Identities/Queries => Devices.Module/Features/Identities}/GetOwnIdentity/Handler.cs (76%) create mode 100644 Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Query.cs rename Modules/Devices/src/{Devices.Application/Identities/Queries/GetOwnIdentity/GetOwnIdentityResponse.cs => Devices.Module/Features/Identities/GetOwnIdentity/Response.cs} (82%) rename Modules/Devices/src/{Devices.Application/Identities/Commands/HandleCompletedDeletionProcess/HandleCompletedDeletionProcessCommand.cs => Devices.Module/Features/Identities/HandleCompletedDeletionProcess/Command.cs} (62%) rename Modules/Devices/src/{Devices.Application/Identities/Commands => Devices.Module/Features/Identities}/HandleCompletedDeletionProcess/Handler.cs (85%) rename Modules/Devices/src/{Devices.Application/Identities/Commands => Devices.Module/Features/Identities}/HandleCompletedDeletionProcess/Validator.cs (72%) rename Modules/Devices/src/{Devices.Application/Identities/Commands/HandleErrorDuringIdentityDeletion/HandleErrorDuringIdentityDeletionCommand.cs => Devices.Module/Features/Identities/HandleErrorDuringIdentityDeletion/Command.cs} (60%) rename Modules/Devices/src/{Devices.Application/Identities/Commands => Devices.Module/Features/Identities}/HandleErrorDuringIdentityDeletion/Handler.cs (86%) create mode 100644 Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Endpoint.cs rename Modules/Devices/src/{Devices.Application/Identities/Queries => Devices.Module/Features/Identities}/IsIdentityOfUserDeleted/Handler.cs (87%) rename Modules/Devices/src/{Devices.Application/Identities/Queries/IsIdentityOfUserDeleted/IsIdentityOfUserDeletedQuery.cs => Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Query.cs} (56%) rename Modules/Devices/src/{Devices.Application/Identities/Queries/IsIdentityOfUserDeleted/IsIdentityOfUserDeletedResponse.cs => Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Response.cs} (76%) rename Modules/Devices/src/{Devices.Application/Identities/Queries => Devices.Module/Features/Identities}/IsIdentityOfUserDeleted/Validator.cs (65%) rename Modules/Devices/src/{Devices.Application/Identities/Queries => Devices.Module/Features/Identities}/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Handler.cs (81%) rename Modules/Devices/src/{Devices.Application/Identities/Queries/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeletingQuery.cs => Devices.Module/Features/Identities/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Query.cs} (52%) rename Modules/Devices/src/{Devices.Application/Identities/Queries/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeletingResponse.cs => Devices.Module/Features/Identities/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Response.cs} (64%) create mode 100644 Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Endpoint.cs rename Modules/Devices/src/{Devices.Application/Identities/Queries => Devices.Module/Features/Identities}/ListDeletionProcessesAsOwner/Handler.cs (86%) rename Modules/Devices/src/{Devices.Application/Identities/Queries/ListDeletionProcessesAsOwner/ListDeletionProcessesAsOwnerQuery.cs => Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Query.cs} (54%) rename Modules/Devices/src/{Devices.Application/Identities/Queries/ListDeletionProcessesAsOwner/ListDeletionProcessesAsOwnerResponse.cs => Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Response.cs} (74%) rename Modules/Devices/src/{Devices.Application/Identities/Queries => Devices.Module/Features/Identities}/ListDeletionProcessesAsSupport/Handler.cs (83%) rename Modules/Devices/src/{Devices.Application/Identities/Queries/ListDeletionProcessesAsSupport/ListDeletionProcessesAsSupportQuery.cs => Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Query.cs} (64%) rename Modules/Devices/src/{Devices.Application/Identities/Queries/ListDeletionProcessesAsSupport/GetDeletionProcessesAsSupportResponse.cs => Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Response.cs} (75%) rename Modules/Devices/src/{Devices.Application/Identities/Queries => Devices.Module/Features/Identities}/ListDeletionProcessesAsSupport/Validator.cs (66%) rename Modules/Devices/src/{Devices.Application/Identities/Queries => Devices.Module/Features/Identities}/ListDeletionProcessesAuditLogs/Handler.cs (83%) rename Modules/Devices/src/{Devices.Application/Identities/Queries/ListDeletionProcessesAuditLogs/ListDeletionProcessesAuditLogsQuery.cs => Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Query.cs} (58%) rename Modules/Devices/src/{Devices.Application/Identities/Queries/ListDeletionProcessesAuditLogs/ListDeletionProcessesAuditLogsResponse.cs => Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Response.cs} (65%) rename Modules/Devices/src/{Devices.Application/Identities/Queries => Devices.Module/Features/Identities}/ListDeletionProcessesAuditLogs/Validator.cs (66%) create mode 100644 Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Endpoint.cs rename Modules/Devices/src/{Devices.Application/Identities/Queries => Devices.Module/Features/Identities}/ListFeatureFlags/Handler.cs (93%) rename Modules/Devices/src/{Devices.Application/Identities/Queries/ListFeatureFlags/ListFeatureFlagsQuery.cs => Devices.Module/Features/Identities/ListFeatureFlags/Query.cs} (64%) rename Modules/Devices/src/{Devices.Application/Identities/Queries/ListFeatureFlags/ListFeatureFlagsResponse.cs => Devices.Module/Features/Identities/ListFeatureFlags/Response.cs} (80%) rename Modules/Devices/src/{Devices.Application/Identities/Queries => Devices.Module/Features/Identities}/ListFeatureFlags/Validator.cs (79%) rename Modules/Devices/src/{Devices.Application/Identities/Queries => Devices.Module/Features/Identities}/ListIdentities/Handler.cs (84%) rename Modules/Devices/src/{Devices.Application/Identities/Queries/ListIdentities/ListIdentitiesQuery.cs => Devices.Module/Features/Identities/ListIdentities/Query.cs} (76%) rename Modules/Devices/src/{Devices.Application/Identities/Queries/ListIdentities/ListIdentitiesResponse.cs => Devices.Module/Features/Identities/ListIdentities/Response.cs} (71%) rename Modules/Devices/src/{Devices.Application/Identities/Queries => Devices.Module/Features/Identities}/ListIdentities/Validator.cs (65%) rename Modules/Devices/src/{Devices.Application/Identities/Commands/LogDeletionProcess/LogDeletionProcessCommand.cs => Devices.Module/Features/Identities/LogDeletionProcess/Command.cs} (61%) rename Modules/Devices/src/{Devices.Application/Identities/Commands => Devices.Module/Features/Identities}/LogDeletionProcess/Handler.cs (79%) rename Modules/Devices/src/{Devices.Application/Identities/Commands => Devices.Module/Features/Identities}/LogDeletionProcess/Validator.cs (66%) create mode 100644 Modules/Devices/src/Devices.Module/Features/Identities/SendDeletionProcessGracePeriodReminders/Command.cs rename Modules/Devices/src/{Devices.Application/Identities/Commands => Devices.Module/Features/Identities}/SendDeletionProcessGracePeriodReminders/Handler.cs (95%) rename Modules/Devices/src/{Devices.Application/Identities/Commands/StartDeletionProcess/StartDeletionProcessCommand.cs => Devices.Module/Features/Identities/StartDeletionProcess/Command.cs} (64%) create mode 100644 Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Endpoint.cs rename Modules/Devices/src/{Devices.Application/Identities/Commands => Devices.Module/Features/Identities}/StartDeletionProcess/Handler.cs (88%) rename Modules/Devices/src/{Devices.Application/Identities/Commands/StartDeletionProcess/StartDeletionProcessResponse.cs => Devices.Module/Features/Identities/StartDeletionProcess/Response.cs} (65%) create mode 100644 Modules/Devices/src/Devices.Module/Features/Identities/TriggerRipeDeletionProcesses/Command.cs rename Modules/Devices/src/{Devices.Application/Identities/Commands => Devices.Module/Features/Identities}/TriggerRipeDeletionProcesses/Handler.cs (83%) rename Modules/Devices/src/{Devices.Application/Identities/Commands/TriggerRipeDeletionProcesses/TriggerRipeDeletionProcessesResponse.cs => Devices.Module/Features/Identities/TriggerRipeDeletionProcesses/Response.cs} (82%) rename Modules/Devices/src/{Devices.Application/Identities/Commands/UpdateIdentity/UpdateIdentityCommand.cs => Devices.Module/Features/Identities/UpdateIdentity/Command.cs} (66%) rename Modules/Devices/src/{Devices.Application/Identities/Commands => Devices.Module/Features/Identities}/UpdateIdentity/Handler.cs (88%) rename Modules/Devices/src/{Devices.Application/Identities/Commands => Devices.Module/Features/Identities}/UpdateIdentity/Validator.cs (84%) rename Modules/Devices/src/{Devices.Application/Notifications/Commands/SendNotification/SendNotificationCommand.cs => Devices.Module/Features/Notifications/SendNotification/Command.cs} (59%) create mode 100644 Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Endpoint.cs rename Modules/Devices/src/{Devices.Application/Notifications/Commands => Devices.Module/Features/Notifications}/SendNotification/Handler.cs (92%) rename Modules/Devices/src/{Devices.Application/Notifications/Commands => Devices.Module/Features/Notifications}/SendNotification/Validator.cs (78%) create mode 100644 Modules/Devices/src/Devices.Module/Features/PushNotifications/DeleteDeviceRegistration/Command.cs create mode 100644 Modules/Devices/src/Devices.Module/Features/PushNotifications/DeleteDeviceRegistration/Endpoint.cs rename Modules/Devices/src/{Devices.Application/PushNotifications/Commands => Devices.Module/Features/PushNotifications}/DeleteDeviceRegistration/Handler.cs (77%) rename Modules/Devices/src/{Devices.Application/PushNotifications/Commands/DeletePnsRegistrationsOfIdentity/DeletePnsRegistrationsOfIdentityCommand.cs => Devices.Module/Features/PushNotifications/DeletePnsRegistrationsOfIdentity/Command.cs} (50%) rename Modules/Devices/src/{Devices.Application/PushNotifications/Commands => Devices.Module/Features/PushNotifications}/DeletePnsRegistrationsOfIdentity/Handler.cs (76%) rename Modules/Devices/src/{Devices.Application/PushNotifications/Commands => Devices.Module/Features/PushNotifications}/DeletePnsRegistrationsOfIdentity/Validator.cs (65%) rename Modules/Devices/src/{Devices.Application/PushNotifications/Commands/SendTestNotification/SendTestNotificationCommand.cs => Devices.Module/Features/PushNotifications/SendTestNotification/Command.cs} (56%) create mode 100644 Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Endpoint.cs rename Modules/Devices/src/{Devices.Application/PushNotifications/Commands => Devices.Module/Features/PushNotifications}/SendTestNotification/Handler.cs (85%) rename Modules/Devices/src/{Devices.Application/PushNotifications/Commands => Devices.Module/Features/PushNotifications}/SendTestNotification/Validator.cs (71%) create mode 100644 Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/Announcements/NewAnnouncementPushNotification.cs rename Modules/Devices/src/{Devices.Application/Infrastructure/PushNotifications => Devices.Module/Features/PushNotifications/Shared}/Datawallet/DatawalletModificationsCreatedPushNotification.cs (57%) rename Modules/Devices/src/{Devices.Application/Infrastructure/PushNotifications => Devices.Module/Features/PushNotifications/Shared}/DeletionProcess/DeletionProcessCancelledByOwnerPushNotification.cs (60%) rename Modules/Devices/src/{Devices.Application/Infrastructure/PushNotifications => Devices.Module/Features/PushNotifications/Shared}/DeletionProcess/DeletionProcessGracePeriodReminderPushNotification.cs (63%) rename Modules/Devices/src/{Devices.Application/Infrastructure/PushNotifications => Devices.Module/Features/PushNotifications/Shared}/DeletionProcess/DeletionProcessStartedPushNotification.cs (58%) create mode 100644 Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/DeletionProcess/DeletionStartsPushNotification.cs create mode 100644 Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/Device/BackupDeviceUsedPushNotification.cs rename Modules/Devices/src/{Devices.Application/Infrastructure/PushNotifications => Devices.Module/Features/PushNotifications/Shared}/ExternalEvents/ExternalEventCreatedPushNotification.cs (53%) rename Modules/Devices/src/{Devices.Application/Infrastructure/PushNotifications => Devices.Module/Features/PushNotifications/Shared}/TestPushNotification.cs (66%) create mode 100644 Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/Tokens/TokenLockedPushNotification.cs rename Modules/Devices/src/{Devices.Application/PushNotifications/Commands/UpdateDeviceRegistration/UpdateDeviceRegistrationCommand.cs => Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Command.cs} (75%) create mode 100644 Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Endpoint.cs rename Modules/Devices/src/{Devices.Application/PushNotifications/Commands => Devices.Module/Features/PushNotifications}/UpdateDeviceRegistration/Handler.cs (92%) rename Modules/Devices/src/{Devices.Application/PushNotifications/Commands/UpdateDeviceRegistration/UpdateDeviceRegistrationResponse.cs => Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Response.cs} (76%) rename Modules/Devices/src/{Devices.Application/PushNotifications/Commands => Devices.Module/Features/PushNotifications}/UpdateDeviceRegistration/Validator.cs (88%) rename Modules/Devices/src/{Devices.Application/DTOs => Devices.Module/Features/Shared}/ChallengeDTO.cs (68%) rename Modules/Devices/src/{Devices.Application/DTOs => Devices.Module/Features/Shared}/IdentityDeletionProcessDetailsDTO.cs (97%) rename Modules/Devices/src/{Devices.Application/DTOs => Devices.Module/Features/Shared}/IdentityDeletionProcessOverviewDTO.cs (96%) rename Modules/Devices/src/{Devices.Application/DTOs => Devices.Module/Features/Shared}/IdentitySummaryDTO.cs (88%) create mode 100644 Modules/Devices/src/Devices.Module/Features/Tiers/CreateQueuedForDeletionTier/Command.cs rename Modules/Devices/src/{Devices.Application/Tiers/Commands => Devices.Module/Features/Tiers}/CreateQueuedForDeletionTier/Handler.cs (79%) rename Modules/Devices/src/{Devices.Application/Tiers/Commands/CreateTier/CreateTierCommand.cs => Devices.Module/Features/Tiers/CreateTier/Command.cs} (63%) rename Modules/Devices/src/{Devices.Application/Tiers/Commands => Devices.Module/Features/Tiers}/CreateTier/Handler.cs (90%) rename Modules/Devices/src/{Devices.Application/Tiers/Commands/CreateTier/CreateTierResponse.cs => Devices.Module/Features/Tiers/CreateTier/Response.cs} (50%) rename Modules/Devices/src/{Devices.Application/Tiers/Commands => Devices.Module/Features/Tiers}/CreateTier/Validator.cs (80%) rename Modules/Devices/src/{Devices.Application/Tiers/Commands/DeleteTier/DeleteTierCommand.cs => Devices.Module/Features/Tiers/DeleteTier/Command.cs} (60%) rename Modules/Devices/src/{Devices.Application/Tiers/Commands => Devices.Module/Features/Tiers}/DeleteTier/Handler.cs (91%) rename Modules/Devices/src/{Devices.Application/Tiers/Commands => Devices.Module/Features/Tiers}/DeleteTier/Validator.cs (80%) rename Modules/Devices/src/{Devices.Application/Tiers/Queries => Devices.Module/Features/Tiers}/ListTiers/Handler.cs (78%) rename Modules/Devices/src/{Devices.Application/Tiers/Queries/ListTiers/ListTiersQuery.cs => Devices.Module/Features/Tiers/ListTiers/Query.cs} (73%) rename Modules/Devices/src/{Devices.Application/Tiers/Queries/ListTiers/ListTiersResponse.cs => Devices.Module/Features/Tiers/ListTiers/Response.cs} (80%) rename Modules/Devices/src/{Devices.Application/Tiers/DTOs => Devices.Module/Features/Tiers/Shared}/TierDTO.cs (74%) rename Modules/Devices/src/{Devices.Application/Extensions => Devices.Module/Features/Tiers/Shared}/TierQueryableExtensions.cs (76%) create mode 100644 Modules/Devices/src/Devices.Module/Features/Users/SeedTestUsers/Command.cs rename Modules/Devices/src/{Devices.Application/Users/Commands => Devices.Module/Features/Users}/SeedTestUsers/Handler.cs (91%) rename Modules/Devices/test/{Devices.Application.Tests/Devices.Application.Tests.csproj => Devices.Module.Tests/Devices.Module.Tests.csproj} (87%) rename Modules/Devices/test/{Devices.Application.Tests => Devices.Module.Tests}/TestDataGenerator.cs (97%) rename Modules/Devices/test/{Devices.Application.Tests => Devices.Module.Tests}/Tests/Devices/Commands/DeleteDevice/ValidatorTests.cs (79%) rename Modules/Devices/test/{Devices.Application.Tests => Devices.Module.Tests}/Tests/Devices/Queries/ListDevices/ValidatorTests.cs (82%) rename Modules/Devices/test/{Devices.Application.Tests => Devices.Module.Tests}/Tests/DomainEvents/Incoming/AnnouncementCreatedDomainEventHandlerTests.cs (89%) rename Modules/Devices/test/{Devices.Application.Tests => Devices.Module.Tests}/Tests/DomainEvents/Incoming/ExternalEventCreatedDomainEventHandlerTests.cs (89%) rename Modules/Devices/test/{Devices.Application.Tests => Devices.Module.Tests}/Tests/DomainEvents/Incoming/TokenLockedDomainEventHandlerTests.cs (73%) rename Modules/Devices/test/{Devices.Application.Tests => Devices.Module.Tests}/Tests/Identities/Commands/CancelDeletionProcess/HandlerTests.cs (89%) rename Modules/Devices/test/{Devices.Application.Tests => Devices.Module.Tests}/Tests/Identities/Commands/CancelDeletionProcess/ValidatorTests.cs (83%) rename Modules/Devices/test/{Devices.Application.Tests => Devices.Module.Tests}/Tests/Identities/Commands/DeleteIdentity/ValidatorTests.cs (83%) rename Modules/Devices/test/{Devices.Application.Tests => Devices.Module.Tests}/Tests/Identities/Commands/LogDeletionProcess/ValidatorTests.cs (84%) rename Modules/Devices/test/{Devices.Application.Tests => Devices.Module.Tests}/Tests/Identities/Commands/SendDeletionProcessGracePeriodReminders/HandlerTests.cs (96%) rename Modules/Devices/test/{Devices.Application.Tests => Devices.Module.Tests}/Tests/Identities/Commands/StartDeletionProcess/HandlerTests.cs (90%) rename Modules/Devices/test/{Devices.Application.Tests => Devices.Module.Tests}/Tests/Identities/Commands/UpdateDeletionProcesses/HandlerTests.cs (89%) rename Modules/Devices/test/{Devices.Application.Tests => Devices.Module.Tests}/Tests/Identities/Commands/UpdateIdentity/HandlerTests.cs (95%) rename Modules/Devices/test/{Devices.Application.Tests => Devices.Module.Tests}/Tests/Identities/Commands/UpdateIdentity/ValidatorTests.cs (88%) rename Modules/Devices/test/{Devices.Application.Tests => Devices.Module.Tests}/Tests/Identities/IdentityDeleterTests.cs (81%) rename Modules/Devices/test/{Devices.Application.Tests => Devices.Module.Tests}/Tests/Identities/Queries/GetDeletionProcessAsOwner/ValidatorTests.cs (82%) rename Modules/Devices/test/{Devices.Application.Tests => Devices.Module.Tests}/Tests/Identities/Queries/GetDeletionProcessAsSupport/ValidatorTests.cs (88%) rename Modules/Devices/test/{Devices.Application.Tests => Devices.Module.Tests}/Tests/Identities/Queries/GetDeletionProcessesAsSupport/ValidatorTests.cs (81%) rename Modules/Devices/test/{Devices.Application.Tests => Devices.Module.Tests}/Tests/Identities/Queries/GetDeletionProcessesAuditLogs/HandlerTests.cs (96%) rename Modules/Devices/test/{Devices.Application.Tests => Devices.Module.Tests}/Tests/Identities/Queries/GetDeletionProcessesAuditLogs/ValidatorTests.cs (81%) rename Modules/Devices/test/{Devices.Application.Tests => Devices.Module.Tests}/Tests/Identities/Queries/GetIdentity/ValidatorTests.cs (83%) rename Modules/Devices/test/{Devices.Application.Tests => Devices.Module.Tests}/Tests/Identities/Queries/ListIdentities/ValidatorTests.cs (85%) rename Modules/Devices/test/{Devices.Application.Tests => Devices.Module.Tests}/Tests/PushNotifications/DatawalletModified/HandlerTests.cs (75%) rename Modules/Devices/test/{Devices.Application.Tests => Devices.Module.Tests}/Tests/PushNotifications/DeletePnsRegistrationsOfIdentity/ValidatorTests.cs (81%) rename Modules/Devices/test/{Devices.Application.Tests => Devices.Module.Tests}/Tests/PushNotifications/UpdateDeviceRegistration/HandlerTests.cs (85%) rename Modules/Devices/test/{Devices.Application.Tests => Devices.Module.Tests}/Tests/Tiers/Commands/CreateTier/ValidatorTests.cs (77%) rename Modules/Devices/test/{Devices.Application.Tests => Devices.Module.Tests}/Tests/Tiers/Commands/DeleteTier/HandlerTests.cs (91%) rename Modules/Devices/test/{Devices.Application.Tests => Devices.Module.Tests}/Tests/Tiers/Commands/DeleteTier/ValidatorTests.cs (84%) rename Modules/Devices/test/{Devices.Application.Tests => Devices.Module.Tests}/packages.lock.json (79%) rename Modules/Quotas/src/{Quotas.Application/Infrastructure/Persistence/Repository => Quotas.Abstractions}/IChallengesRepository.cs (73%) rename Modules/Quotas/src/{Quotas.Application/Infrastructure/Persistence/Repository => Quotas.Abstractions}/IDatawalletModificationsRepository.cs (65%) rename Modules/Quotas/src/{Quotas.Application/Infrastructure/Persistence/Repository => Quotas.Abstractions}/IDevicesRepository.cs (63%) rename Modules/Quotas/src/{Quotas.Application/Infrastructure/Persistence/Repository => Quotas.Abstractions}/IFilesRepository.cs (76%) rename Modules/Quotas/src/{Quotas.Application/Infrastructure/Persistence/Repository => Quotas.Abstractions}/IIdentitiesRepository.cs (91%) rename Modules/Quotas/src/{Quotas.Application/Infrastructure/Persistence/Repository => Quotas.Abstractions}/IIdentityDeletionProcessesRepository.cs (68%) rename Modules/Quotas/src/{Quotas.Application/Infrastructure/Persistence/Repository => Quotas.Abstractions}/IMessagesRepository.cs (72%) rename Modules/Quotas/src/{Quotas.Application/Infrastructure/Persistence/Repository => Quotas.Abstractions}/IMetricsRepository.cs (82%) rename Modules/Quotas/src/{Quotas.Application/Infrastructure/Persistence/Repository => Quotas.Abstractions}/IRelationshipTemplatesRepository.cs (73%) rename Modules/Quotas/src/{Quotas.Application/Infrastructure/Persistence/Repository => Quotas.Abstractions}/IRelationshipsRepository.cs (66%) rename Modules/Quotas/src/{Quotas.Application/Infrastructure/Persistence/Repository => Quotas.Abstractions}/ITiersRepository.cs (84%) rename Modules/Quotas/src/{Quotas.Application/Infrastructure/Persistence/Repository => Quotas.Abstractions}/ITokensRepository.cs (72%) create mode 100644 Modules/Quotas/src/Quotas.Abstractions/Quotas.Abstractions.csproj create mode 100644 Modules/Quotas/src/Quotas.Abstractions/packages.lock.json delete mode 100644 Modules/Quotas/src/Quotas.Application/Quotas.Application.csproj delete mode 100644 Modules/Quotas/src/Quotas.Application/Tiers/Commands/SeedQueuedForDeletionTier/SeedQueuedForDeletionTierCommand.cs rename Modules/Quotas/src/{Quotas.Application => Quotas.Module}/ApplicationConfiguration.cs (82%) rename Modules/Quotas/src/{Quotas.Application/Extensions/IServiceCollectionExtensions.cs => Quotas.Module/ApplicationServiceCollectionExtensions.cs} (82%) rename Modules/Quotas/src/{Quotas.Application/DomainEvents/Incoming/FileUploaded/FileUploadedDomainEventHandler.cs => Quotas.Module/Features/DomainEvents/FileUploaded/Handler.cs} (87%) rename Modules/Quotas/src/{Quotas.Application/DomainEvents/Incoming/IdentityCreated/IdentityCreatedDomainEventHandler.cs => Quotas.Module/Features/DomainEvents/IdentityCreated/Handler.cs} (93%) rename Modules/Quotas/src/{Quotas.Application/DomainEvents/Incoming/MessageCreated/MessageCreatedDomainEventHandler.cs => Quotas.Module/Features/DomainEvents/MessageCreated/Handler.cs} (87%) rename Modules/Quotas/src/{Quotas.Application/DomainEvents/Incoming/RelationshipStatusChanged/RelationshipStatusChangedDomainEventHandler.cs => Quotas.Module/Features/DomainEvents/RelationshipStatusChanged/Handler.cs} (86%) rename Modules/Quotas/src/{Quotas.Application/DomainEvents/Incoming/RelationshipTemplateCreated/RelationshipTemplateCreatedDomainEventHandler.cs => Quotas.Module/Features/DomainEvents/RelationshipTemplateCreated/Handler.cs} (86%) rename Modules/Quotas/src/{Quotas.Application/DomainEvents/Incoming/TierCreated/TierCreatedDomainEventHandler.cs => Quotas.Module/Features/DomainEvents/TierCreated/Handler.cs} (89%) rename Modules/Quotas/src/{Quotas.Application/DomainEvents/Incoming/TierDeleted/TierDeletedDomainEventHandler.cs => Quotas.Module/Features/DomainEvents/TierDeleted/Handler.cs} (89%) rename Modules/Quotas/src/{Quotas.Application/DomainEvents/Incoming/TierOfIdentityChanged/TierOfIdentityChangedDomainEventHandler.cs => Quotas.Module/Features/DomainEvents/TierOfIdentityChanged/Handler.cs} (90%) rename Modules/Quotas/src/{Quotas.Application/DomainEvents/Incoming/TierQuotaDefinitionCreated/TierQuotaDefinitionCreatedDomainEventHandler.cs => Quotas.Module/Features/DomainEvents/TierQuotaDefinitionCreated/Handler.cs} (93%) rename Modules/Quotas/src/{Quotas.Application/DomainEvents/Incoming/TierQuotaDefinitionDeleted/TierQuotaDefinitionDeletedDomainEventHandler.cs => Quotas.Module/Features/DomainEvents/TierQuotaDefinitionDeleted/Handler.cs} (88%) rename Modules/Quotas/src/{Quotas.Application/DomainEvents/Incoming/TokenCreated/TokenCreatedDomainEventHandler.cs => Quotas.Module/Features/DomainEvents/TokenCreated/Handler.cs} (87%) rename Modules/Quotas/src/{Quotas.Application/Identities/Commands/CreateQuotaForIdentity/CreateQuotaForIdentityCommand.cs => Quotas.Module/Features/Identities/CreateQuotaForIdentity/Command.cs} (72%) rename Modules/Quotas/src/{Quotas.Application/Identities/Commands => Quotas.Module/Features/Identities}/CreateQuotaForIdentity/Handler.cs (90%) rename Modules/Quotas/src/{Quotas.Application/Identities/Commands => Quotas.Module/Features/Identities}/CreateQuotaForIdentity/Validator.cs (89%) rename Modules/Quotas/src/{Quotas.Application/Identities/Commands/DeleteIdentity/DeleteIdentityCommand.cs => Quotas.Module/Features/Identities/DeleteIdentity/Command.cs} (60%) rename Modules/Quotas/src/{Quotas.Application/Identities/Commands => Quotas.Module/Features/Identities}/DeleteIdentity/Handler.cs (77%) rename Modules/Quotas/src/{Quotas.Application/Identities => Quotas.Module/Features/Identities/DeleteIdentity}/IdentityDeleter.cs (83%) rename Modules/Quotas/src/{Quotas.Application/Identities/Commands => Quotas.Module/Features/Identities}/DeleteIdentity/Validator.cs (80%) rename Modules/Quotas/src/{Quotas.Application/Identities/Commands/DeleteQuotaForIdentity/DeleteQuotaForIdentityCommand.cs => Quotas.Module/Features/Identities/DeleteQuotaForIdentity/Command.cs} (68%) rename Modules/Quotas/src/{Quotas.Application/Identities/Commands => Quotas.Module/Features/Identities}/DeleteQuotaForIdentity/Handler.cs (91%) rename Modules/Quotas/src/{Quotas.Application/Identities/Commands => Quotas.Module/Features/Identities}/DeleteQuotaForIdentity/Validator.cs (84%) rename Modules/Quotas/src/{Quotas.Application/Identities/Queries => Quotas.Module/Features/Identities}/GetIdentity/Handler.cs (90%) rename Modules/{Devices/src/Devices.Application/Identities/Queries/GetIdentity/GetIdentityQuery.cs => Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Query.cs} (62%) rename Modules/Quotas/src/{Quotas.Application/Identities/Queries/GetIdentity/GetIdentityResponse.cs => Quotas.Module/Features/Identities/GetIdentity/Response.cs} (93%) rename Modules/Quotas/src/{Quotas.Application/Identities/Queries => Quotas.Module/Features/Identities}/GetIdentity/Validator.cs (80%) create mode 100644 Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Endpoint.cs rename Modules/Quotas/src/{Quotas.Application/Identities/Queries => Quotas.Module/Features/Identities}/ListQuotasForIdentity/Handler.cs (94%) rename Modules/Quotas/src/{Quotas.Application/Identities/Queries/ListQuotasForIdentity/ListQuotasForIdentityQuery.cs => Quotas.Module/Features/Identities/ListQuotasForIdentity/Query.cs} (53%) rename Modules/Quotas/src/{Quotas.Application/Identities/Queries/ListQuotasForIdentity/ListQuotasForIdentityResponse.cs => Quotas.Module/Features/Identities/ListQuotasForIdentity/Response.cs} (89%) rename Modules/Quotas/src/{Quotas.Application/Metrics/Queries => Quotas.Module/Features/Metrics}/ListMetrics/Handler.cs (77%) rename Modules/Quotas/src/{Quotas.Application/Metrics/Queries/ListMetrics/ListMetricsQuery.cs => Quotas.Module/Features/Metrics/ListMetrics/Query.cs} (51%) rename Modules/Quotas/src/{Quotas.Application/Metrics/Queries/ListMetrics/ListMetricsResponse.cs => Quotas.Module/Features/Metrics/ListMetrics/Response.cs} (70%) rename Modules/Quotas/src/{Quotas.Application/Metrics => Quotas.Module/Features/Metrics/Shared}/MetricStatusesService.cs (91%) rename Modules/Quotas/src/{Quotas.Application/Metrics => Quotas.Module/Features/Metrics/Shared}/NumberOfCreatedChallengesMetricCalculator.cs (84%) rename Modules/Quotas/src/{Quotas.Application/Metrics => Quotas.Module/Features/Metrics/Shared}/NumberOfCreatedDatawalletModificationsMetricCalculator.cs (85%) rename Modules/Quotas/src/{Quotas.Application/Metrics => Quotas.Module/Features/Metrics/Shared}/NumberOfCreatedDevicesMetricCalculator.cs (81%) rename Modules/Quotas/src/{Quotas.Application/Metrics => Quotas.Module/Features/Metrics/Shared}/NumberOfFilesMetricCalculator.cs (80%) rename Modules/Quotas/src/{Quotas.Application/Metrics => Quotas.Module/Features/Metrics/Shared}/NumberOfRelationshipTemplatesMetricCalculator.cs (84%) rename Modules/Quotas/src/{Quotas.Application/Metrics => Quotas.Module/Features/Metrics/Shared}/NumberOfRelationshipsMetricCalculator.cs (82%) rename Modules/Quotas/src/{Quotas.Application/Metrics => Quotas.Module/Features/Metrics/Shared}/NumberOfSentMessagesMetricCalculator.cs (81%) rename Modules/Quotas/src/{Quotas.Application/Metrics => Quotas.Module/Features/Metrics/Shared}/NumberOfStartedDeletionProcessesMetricCalculator.cs (85%) rename Modules/Quotas/src/{Quotas.Application/Metrics => Quotas.Module/Features/Metrics/Shared}/NumberOfTokensMetricCalculator.cs (80%) rename Modules/Quotas/src/{Quotas.Application/Metrics => Quotas.Module/Features/Metrics/Shared}/ServiceProviderMetricCalculatorFactory.cs (97%) rename Modules/Quotas/src/{Quotas.Application/Metrics => Quotas.Module/Features/Metrics/Shared}/UsedFileStorageSpaceMetricCalculator.cs (81%) rename Modules/Quotas/src/{Quotas.Application/DTOs => Quotas.Module/Features/Shared}/IndividualQuotaDTO.cs (88%) rename Modules/Quotas/src/{Quotas.Application/DTOs => Quotas.Module/Features/Shared}/MetricDTO.cs (83%) rename Modules/Quotas/src/{Quotas.Application/DTOs => Quotas.Module/Features/Shared}/QuotaDTO.cs (91%) rename Modules/Quotas/src/{Quotas.Application/DTOs => Quotas.Module/Features/Shared}/TierDetailsDTO.cs (91%) rename Modules/Quotas/src/{Quotas.Application/DTOs => Quotas.Module/Features/Shared}/TierQuotaDefinitionDTO.cs (88%) rename Modules/Quotas/src/{Quotas.Application/Tiers/Commands/CreateQuotaForTier/CreateQuotaForTierCommand.cs => Quotas.Module/Features/Tiers/CreateQuotaForTier/Command.cs} (73%) rename Modules/Quotas/src/{Quotas.Application/Tiers/Commands => Quotas.Module/Features/Tiers}/CreateQuotaForTier/Handler.cs (91%) rename Modules/Quotas/src/{Quotas.Application/Tiers/Commands => Quotas.Module/Features/Tiers}/CreateQuotaForTier/Validator.cs (89%) rename Modules/Quotas/src/{Quotas.Application/Tiers/Commands/DeleteTierQuotaDefinition/DeleteTierQuotaDefinitionCommand.cs => Quotas.Module/Features/Tiers/DeleteTierQuotaDefinition/Command.cs} (68%) rename Modules/Quotas/src/{Quotas.Application/Tiers/Commands => Quotas.Module/Features/Tiers}/DeleteTierQuotaDefinition/Handler.cs (90%) rename Modules/Quotas/src/{Quotas.Application/Tiers/Commands => Quotas.Module/Features/Tiers}/DeleteTierQuotaDefinition/Validator.cs (83%) rename Modules/Quotas/src/{Quotas.Application/Tiers/Queries => Quotas.Module/Features/Tiers}/GetTier/Handler.cs (83%) rename Modules/Quotas/src/{Quotas.Application/Tiers/Queries/GetTier/GetTierQuery.cs => Quotas.Module/Features/Tiers/GetTier/Query.cs} (50%) rename Modules/Quotas/src/{Quotas.Application/Tiers/Queries => Quotas.Module/Features/Tiers}/GetTier/Validator.cs (80%) create mode 100644 Modules/Quotas/src/Quotas.Module/Features/Tiers/SeedQueuedForDeletionTier/Command.cs rename Modules/Quotas/src/{Quotas.Application/Tiers/Commands => Quotas.Module/Features/Tiers}/SeedQueuedForDeletionTier/Handler.cs (92%) create mode 100644 Modules/Quotas/src/Quotas.Module/QuotasEndpointExtensions.cs rename Modules/Quotas/src/{Quotas.Application/Extensions/IEventBusExtensions.cs => Quotas.Module/QuotasEventBusExtensions.cs} (64%) rename Modules/Quotas/test/{Quotas.Application.Tests => Quotas.Module.Tests}/Metrics/UsedFileStorageSpaceMetricCalculatorTests.cs (86%) rename Modules/Quotas/test/{Quotas.Application.Tests/Quotas.Application.Tests.csproj => Quotas.Module.Tests/Quotas.Module.Tests.csproj} (85%) rename Modules/Quotas/test/{Quotas.Application.Tests => Quotas.Module.Tests}/TestDoubles/AddMockTiersRepository.cs (87%) rename Modules/Quotas/test/{Quotas.Application.Tests => Quotas.Module.Tests}/TestDoubles/FindMetricsStubRepository.cs (83%) rename Modules/Quotas/test/{Quotas.Application.Tests => Quotas.Module.Tests}/TestDoubles/FindTierQuotaDefinitionsStubRepository.cs (87%) rename Modules/Quotas/test/{Quotas.Application.Tests => Quotas.Module.Tests}/TestDoubles/FindTiersStubRepository.cs (86%) rename Modules/Quotas/test/{Quotas.Application.Tests => Quotas.Module.Tests}/TestDoubles/MetricStatusesStubRepository.cs (90%) rename Modules/Quotas/test/{Quotas.Application.Tests => Quotas.Module.Tests}/Tests/DomainEvents/TierDeleted/TierDeletedDomainEventHandlerTests.cs (82%) rename Modules/Quotas/test/{Quotas.Application.Tests => Quotas.Module.Tests}/Tests/Identities/Commands/DeleteIdentityCommandTests/HandlerTests.cs (78%) rename Modules/Quotas/test/{Quotas.Application.Tests => Quotas.Module.Tests}/Tests/Identities/IdentityCreatedDomainEventHandlerTests.cs (90%) rename Modules/Quotas/test/{Quotas.Application.Tests => Quotas.Module.Tests}/Tests/Identities/IdentityDeleterTests.cs (87%) rename Modules/Quotas/test/{Quotas.Application.Tests => Quotas.Module.Tests}/Tests/Identities/TierQuotaDefinitionCreatedDomainEventHandlerTests.cs (92%) rename Modules/Quotas/test/{Quotas.Application.Tests => Quotas.Module.Tests}/Tests/QuotaCheck/QuotaCheckerImplTests.cs (96%) rename Modules/Quotas/test/{Quotas.Application.Tests => Quotas.Module.Tests}/Tests/Quotas/CreateQuotaForIdentity/HandlerTests.cs (85%) rename Modules/Quotas/test/{Quotas.Application.Tests => Quotas.Module.Tests}/Tests/Tiers/TierCreatedDomainEventHandlerTests.cs (84%) rename Modules/Quotas/test/{Quotas.Application.Tests => Quotas.Module.Tests}/packages.lock.json (59%) diff --git a/Applications/AdminApi/src/AdminApi/AdminApi.csproj b/Applications/AdminApi/src/AdminApi/AdminApi.csproj index ba47d9c213..7d2ea5c79b 100644 --- a/Applications/AdminApi/src/AdminApi/AdminApi.csproj +++ b/Applications/AdminApi/src/AdminApi/AdminApi.csproj @@ -28,10 +28,8 @@ - - - + diff --git a/Applications/AdminApi/src/AdminApi/Controllers/ClientsController.cs b/Applications/AdminApi/src/AdminApi/Controllers/ClientsController.cs index 64ec018b73..b9781cf7ee 100644 --- a/Applications/AdminApi/src/AdminApi/Controllers/ClientsController.cs +++ b/Applications/AdminApi/src/AdminApi/Controllers/ClientsController.cs @@ -4,12 +4,12 @@ using Backbone.BuildingBlocks.API; using Backbone.BuildingBlocks.API.Mvc; using Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; -using Backbone.Modules.Devices.Application.Clients.Commands.ChangeClientSecret; -using Backbone.Modules.Devices.Application.Clients.Commands.CreateClient; -using Backbone.Modules.Devices.Application.Clients.Commands.DeleteClient; -using Backbone.Modules.Devices.Application.Clients.Commands.UpdateClient; -using Backbone.Modules.Devices.Application.Clients.DTOs; -using Backbone.Modules.Devices.Application.Clients.Queries.GetClient; +using Backbone.Modules.Devices.Module.Features.Clients.ChangeClientSecret; +using Backbone.Modules.Devices.Module.Features.Clients.CreateClient; +using Backbone.Modules.Devices.Module.Features.Clients.DeleteClient; +using Backbone.Modules.Devices.Module.Features.Clients.UpdateClient; +using Backbone.Modules.Devices.Module.Features.Clients.Shared; +using Backbone.Modules.Devices.Module.Features.Clients.GetClient; using MediatR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; diff --git a/Applications/AdminApi/src/AdminApi/Controllers/IdentitiesController.cs b/Applications/AdminApi/src/AdminApi/Controllers/IdentitiesController.cs index f7a28569cb..4a53898947 100644 --- a/Applications/AdminApi/src/AdminApi/Controllers/IdentitiesController.cs +++ b/Applications/AdminApi/src/AdminApi/Controllers/IdentitiesController.cs @@ -2,22 +2,22 @@ using Backbone.BuildingBlocks.API; using Backbone.BuildingBlocks.API.Mvc; using Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; -using Backbone.Modules.Devices.Application.Devices.DTOs; -using Backbone.Modules.Devices.Application.DTOs; -using Backbone.Modules.Devices.Application.Identities.Commands.CreateIdentity; -using Backbone.Modules.Devices.Application.Identities.Commands.UpdateIdentity; -using Backbone.Modules.Devices.Application.Identities.Queries.GetDeletionProcessAsSupport; -using Backbone.Modules.Devices.Application.Identities.Queries.ListDeletionProcessesAsSupport; -using Backbone.Modules.Devices.Application.Identities.Queries.ListDeletionProcessesAuditLogs; -using Backbone.Modules.Quotas.Application.DTOs; -using Backbone.Modules.Quotas.Application.Identities.Commands.CreateQuotaForIdentity; -using Backbone.Modules.Quotas.Application.Identities.Commands.DeleteQuotaForIdentity; +using Backbone.Modules.Devices.Module.Features.Devices.Shared; +using Backbone.Modules.Devices.Module.Features.Shared; +using Backbone.Modules.Devices.Module.Features.Identities.CreateIdentity; +using Backbone.Modules.Devices.Module.Features.Identities.UpdateIdentity; +using Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsSupport; +using Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsSupport; +using Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; +using Backbone.Modules.Quotas.Module.Features.Shared; +using Backbone.Modules.Quotas.Module.Features.Identities.CreateQuotaForIdentity; +using Backbone.Modules.Quotas.Module.Features.Identities.DeleteQuotaForIdentity; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using MediatR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; -using GetIdentityQueryDevices = Backbone.Modules.Devices.Application.Identities.Queries.GetIdentity.GetIdentityQuery; -using GetIdentityQueryQuotas = Backbone.Modules.Quotas.Application.Identities.Queries.GetIdentity.GetIdentityQuery; +using GetIdentityQueryDevices = Backbone.Modules.Devices.Module.Features.Identities.GetIdentity.GetIdentityQuery; +using GetIdentityQueryQuotas = Backbone.Modules.Quotas.Module.Features.Identities.GetIdentity.GetIdentityQuery; namespace Backbone.AdminApi.Controllers; diff --git a/Applications/AdminApi/src/AdminApi/Controllers/MessagesController.cs b/Applications/AdminApi/src/AdminApi/Controllers/MessagesController.cs index b272def8ae..502bca5068 100644 --- a/Applications/AdminApi/src/AdminApi/Controllers/MessagesController.cs +++ b/Applications/AdminApi/src/AdminApi/Controllers/MessagesController.cs @@ -7,7 +7,7 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Extensions; using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.Modules.Devices.Application; +using Backbone.Modules.Devices.Module; using MediatR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; diff --git a/Applications/AdminApi/src/AdminApi/Controllers/MetricsController.cs b/Applications/AdminApi/src/AdminApi/Controllers/MetricsController.cs index 5d086bcb04..54095b7cf5 100644 --- a/Applications/AdminApi/src/AdminApi/Controllers/MetricsController.cs +++ b/Applications/AdminApi/src/AdminApi/Controllers/MetricsController.cs @@ -1,7 +1,7 @@ using Backbone.AdminApi.Versions; using Backbone.BuildingBlocks.API; using Backbone.BuildingBlocks.API.Mvc; -using Backbone.Modules.Quotas.Application.Metrics.Queries.ListMetrics; +using Backbone.Modules.Quotas.Module.Features.Metrics.ListMetrics; using MediatR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; diff --git a/Applications/AdminApi/src/AdminApi/Controllers/RelationshipsController.cs b/Applications/AdminApi/src/AdminApi/Controllers/RelationshipsController.cs index ed26bc3521..9f072aa941 100644 --- a/Applications/AdminApi/src/AdminApi/Controllers/RelationshipsController.cs +++ b/Applications/AdminApi/src/AdminApi/Controllers/RelationshipsController.cs @@ -6,7 +6,7 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Extensions; using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.Modules.Devices.Application; +using Backbone.Modules.Devices.Module; using MediatR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; diff --git a/Applications/AdminApi/src/AdminApi/Controllers/TiersController.cs b/Applications/AdminApi/src/AdminApi/Controllers/TiersController.cs index 8f2b0317f4..5066867990 100644 --- a/Applications/AdminApi/src/AdminApi/Controllers/TiersController.cs +++ b/Applications/AdminApi/src/AdminApi/Controllers/TiersController.cs @@ -4,12 +4,12 @@ using Backbone.BuildingBlocks.API; using Backbone.BuildingBlocks.API.Mvc; using Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; -using Backbone.Modules.Devices.Application.Tiers.Commands.CreateTier; -using Backbone.Modules.Devices.Application.Tiers.Commands.DeleteTier; -using Backbone.Modules.Quotas.Application.DTOs; -using Backbone.Modules.Quotas.Application.Tiers.Commands.CreateQuotaForTier; -using Backbone.Modules.Quotas.Application.Tiers.Commands.DeleteTierQuotaDefinition; -using Backbone.Modules.Quotas.Application.Tiers.Queries.GetTier; +using Backbone.Modules.Devices.Module.Features.Tiers.CreateTier; +using Backbone.Modules.Devices.Module.Features.Tiers.DeleteTier; +using Backbone.Modules.Quotas.Module.Features.Shared; +using Backbone.Modules.Quotas.Module.Features.Tiers.CreateQuotaForTier; +using Backbone.Modules.Quotas.Module.Features.Tiers.DeleteTierQuotaDefinition; +using Backbone.Modules.Quotas.Module.Features.Tiers.GetTier; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using MediatR; using Microsoft.AspNetCore.Authorization; diff --git a/Applications/AdminApi/src/AdminApi/Dockerfile b/Applications/AdminApi/src/AdminApi/Dockerfile index e9a894a3f9..7e18f12fa0 100644 --- a/Applications/AdminApi/src/AdminApi/Dockerfile +++ b/Applications/AdminApi/src/AdminApi/Dockerfile @@ -49,14 +49,14 @@ COPY ["Modules/Challenges/src/Challenges.Module/Challenges.Module.csproj", "Modu COPY ["Modules/Challenges/src/Challenges.Infrastructure.Database.Postgres/Challenges.Infrastructure.Database.Postgres.csproj", "Modules/Challenges/src/Challenges.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Challenges/src/Challenges.Infrastructure.Database.Postgres/"] COPY ["Modules/Challenges/src/Challenges.Infrastructure.Database.SqlServer/Challenges.Infrastructure.Database.SqlServer.csproj", "Modules/Challenges/src/Challenges.Infrastructure.Database.SqlServer/packages.lock.json*", "Modules/Challenges/src/Challenges.Infrastructure.Database.SqlServer/"] -COPY ["Modules/Devices/src/Devices.Application/Devices.Application.csproj", "Modules/Devices/src/Devices.Application/packages.lock.json*", "Modules/Devices/src/Devices.Application/"] +COPY ["Modules/Devices/src/Devices.Abstractions/Devices.Abstractions.csproj", "Modules/Devices/src/Devices.Abstractions/packages.lock.json*", "Modules/Devices/src/Devices.Abstractions/"] COPY ["Modules/Devices/src/Devices.Domain/Devices.Domain.csproj", "Modules/Devices/src/Devices.Domain/packages.lock.json*", "Modules/Devices/src/Devices.Domain/"] COPY ["Modules/Devices/src/Devices.Infrastructure/Devices.Infrastructure.csproj", "Modules/Devices/src/Devices.Infrastructure/packages.lock.json*", "Modules/Devices/src/Devices.Infrastructure/"] COPY ["Modules/Devices/src/Devices.Module/Devices.Module.csproj", "Modules/Devices/src/Devices.Module/packages.lock.json*", "Modules/Devices/src/Devices.Module/"] COPY ["Modules/Devices/src/Devices.Infrastructure.Database.Postgres/Devices.Infrastructure.Database.Postgres.csproj", "Modules/Devices/src/Devices.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Devices/src/Devices.Infrastructure.Database.Postgres/"] COPY ["Modules/Devices/src/Devices.Infrastructure.Database.SqlServer/Devices.Infrastructure.Database.SqlServer.csproj", "Modules/Devices/src/Devices.Infrastructure.Database.SqlServer/packages.lock.json*", "Modules/Devices/src/Devices.Infrastructure.Database.SqlServer/"] -COPY ["Modules/Quotas/src/Quotas.Application/Quotas.Application.csproj", "Modules/Quotas/src/Quotas.Application/packages.lock.json*", "Modules/Quotas/src/Quotas.Application/"] +COPY ["Modules/Quotas/src/Quotas.Abstractions/Quotas.Abstractions.csproj", "Modules/Quotas/src/Quotas.Abstractions/packages.lock.json*", "Modules/Quotas/src/Quotas.Abstractions/"] COPY ["Modules/Quotas/src/Quotas.Domain/Quotas.Domain.csproj", "Modules/Quotas/src/Quotas.Domain/packages.lock.json*", "Modules/Quotas/src/Quotas.Domain/"] COPY ["Modules/Quotas/src/Quotas.Infrastructure/Quotas.Infrastructure.csproj", "Modules/Quotas/src/Quotas.Infrastructure/packages.lock.json*", "Modules/Quotas/src/Quotas.Infrastructure/"] COPY ["Modules/Quotas/src/Quotas.Module/Quotas.Module.csproj", "Modules/Quotas/src/Quotas.Module/packages.lock.json*", "Modules/Quotas/src/Quotas.Module/"] diff --git a/Applications/AdminApi/src/AdminApi/Extensions/IServiceCollectionExtensions.cs b/Applications/AdminApi/src/AdminApi/Extensions/IServiceCollectionExtensions.cs index 732c6324ca..d3a6cb20a2 100644 --- a/Applications/AdminApi/src/AdminApi/Extensions/IServiceCollectionExtensions.cs +++ b/Applications/AdminApi/src/AdminApi/Extensions/IServiceCollectionExtensions.cs @@ -9,8 +9,7 @@ using Backbone.BuildingBlocks.API.Mvc.ExceptionFilters; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; -using Backbone.Modules.Devices.Application.Devices.Commands.RegisterDevice; -using Backbone.Modules.Devices.Application.Devices.DTOs; +using Backbone.Modules.Devices.Module.Features.Devices.Shared; using FluentValidation; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.OData; diff --git a/Applications/AdminApi/src/AdminApi/Program.cs b/Applications/AdminApi/src/AdminApi/Program.cs index a3e2fc844a..87d6737e6d 100644 --- a/Applications/AdminApi/src/AdminApi/Program.cs +++ b/Applications/AdminApi/src/AdminApi/Program.cs @@ -112,8 +112,8 @@ static void ConfigureServices(IServiceCollection services, IConfiguration config services .AddModule(configuration) .AddModule(configuration) - .AddModule(configuration) - .AddModule(configuration) + .AddModule(configuration) + .AddModule(configuration) .AddModule(configuration); services diff --git a/Applications/AdminApi/src/AdminApi/packages.lock.json b/Applications/AdminApi/src/AdminApi/packages.lock.json index 032f65a763..c29669134d 100644 --- a/Applications/AdminApi/src/AdminApi/packages.lock.json +++ b/Applications/AdminApi/src/AdminApi/packages.lock.json @@ -1203,23 +1203,11 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Devices.Application": { + "Backbone.Modules.Devices.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Crypto": "[1.0.0, )", - "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Domain": "[1.0.0, )", - "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "OpenIddict.Core": "[7.6.0, 7.6.0]", - "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Devices.Domain": "[1.0.0, )" } }, "Backbone.Modules.Devices.Contracts": { @@ -1243,8 +1231,9 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", "FirebaseAdmin": "[3.6.0, 3.6.0]", "JWT": "[11.1.0, 11.1.0]", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1277,11 +1266,22 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Crypto": "[1.0.0, )", + "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", + "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", + "FluentValidation": "[12.1.1, 12.1.1]", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "OpenIddict.AspNetCore": "[7.6.0, 7.6.0]", + "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", + "Polly": "[8.7.0, 8.7.0]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, @@ -1297,18 +1297,10 @@ "Backbone.BuildingBlocks.Domain": "[1.0.0, )" } }, - "Backbone.Modules.Quotas.Application": { + "Backbone.Modules.Quotas.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Files.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Quotas.Contracts": "[1.0.0, )", - "Backbone.Modules.Quotas.Domain": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )" + "Backbone.Modules.Quotas.Domain": "[1.0.0, )" } }, "Backbone.Modules.Quotas.Contracts": { @@ -1330,9 +1322,9 @@ "Backbone.Modules.Quotas.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Quotas.Application": "[1.0.0, )", + "Backbone.Modules.Quotas.Abstractions": "[1.0.0, )", "Backbone.Modules.Quotas.Domain": "[1.0.0, )", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1357,10 +1349,17 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Quotas.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Files.Contracts": "[1.0.0, )", + "Backbone.Modules.Messages.Contracts": "[1.0.0, )", + "Backbone.Modules.Quotas.Abstractions": "[1.0.0, )", + "Backbone.Modules.Quotas.Contracts": "[1.0.0, )", + "Backbone.Modules.Quotas.Domain": "[1.0.0, )", "Backbone.Modules.Quotas.Infrastructure": "[1.0.0, )", "Backbone.Modules.Quotas.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Quotas.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/AdminApi/test/AdminApi.Tests.Integration/packages.lock.json b/Applications/AdminApi/test/AdminApi.Tests.Integration/packages.lock.json index 140e0ccb02..f79cd916fe 100644 --- a/Applications/AdminApi/test/AdminApi.Tests.Integration/packages.lock.json +++ b/Applications/AdminApi/test/AdminApi.Tests.Integration/packages.lock.json @@ -1557,10 +1557,8 @@ "Backbone.Modules.Announcements.Module": "[1.0.0, )", "Backbone.Modules.Challenges.Infrastructure": "[1.0.0, )", "Backbone.Modules.Challenges.Module": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", "Backbone.Modules.Devices.Module": "[1.0.0, )", - "Backbone.Modules.Quotas.Application": "[1.0.0, )", "Backbone.Modules.Quotas.Infrastructure": "[1.0.0, )", "Backbone.Modules.Quotas.Module": "[1.0.0, )", "Backbone.Modules.Tokens.Infrastructure": "[1.0.0, )", @@ -1842,23 +1840,11 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Devices.Application": { + "Backbone.Modules.Devices.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Crypto": "[1.0.0, )", - "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Domain": "[1.0.0, )", - "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "OpenIddict.Core": "[7.6.0, 7.6.0]", - "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Devices.Domain": "[1.0.0, )" } }, "Backbone.Modules.Devices.Contracts": { @@ -1882,8 +1868,9 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", "FirebaseAdmin": "[3.6.0, 3.6.0]", "JWT": "[11.1.0, 11.1.0]", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1916,11 +1903,22 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Crypto": "[1.0.0, )", + "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", + "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", + "FluentValidation": "[12.1.1, 12.1.1]", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "OpenIddict.AspNetCore": "[7.6.0, 7.6.0]", + "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", + "Polly": "[8.7.0, 8.7.0]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, @@ -1936,18 +1934,10 @@ "Backbone.BuildingBlocks.Domain": "[1.0.0, )" } }, - "Backbone.Modules.Quotas.Application": { + "Backbone.Modules.Quotas.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Files.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Quotas.Contracts": "[1.0.0, )", - "Backbone.Modules.Quotas.Domain": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )" + "Backbone.Modules.Quotas.Domain": "[1.0.0, )" } }, "Backbone.Modules.Quotas.Contracts": { @@ -1969,9 +1959,9 @@ "Backbone.Modules.Quotas.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Quotas.Application": "[1.0.0, )", + "Backbone.Modules.Quotas.Abstractions": "[1.0.0, )", "Backbone.Modules.Quotas.Domain": "[1.0.0, )", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1996,10 +1986,17 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Quotas.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Files.Contracts": "[1.0.0, )", + "Backbone.Modules.Messages.Contracts": "[1.0.0, )", + "Backbone.Modules.Quotas.Abstractions": "[1.0.0, )", + "Backbone.Modules.Quotas.Contracts": "[1.0.0, )", + "Backbone.Modules.Quotas.Domain": "[1.0.0, )", "Backbone.Modules.Quotas.Infrastructure": "[1.0.0, )", "Backbone.Modules.Quotas.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Quotas.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/AdminCli/src/AdminCli/Commands/Clients/CreateClientCommand.cs b/Applications/AdminCli/src/AdminCli/Commands/Clients/CreateClientCommand.cs index a9133c07eb..fc8abdf12b 100644 --- a/Applications/AdminCli/src/AdminCli/Commands/Clients/CreateClientCommand.cs +++ b/Applications/AdminCli/src/AdminCli/Commands/Clients/CreateClientCommand.cs @@ -57,7 +57,7 @@ public CreateClientCommand(IMediator mediator) : base(mediator, "create", "Creat private async Task CreateClient(string? clientId, string? displayName, string? clientSecret, string defaultTier, int? maxIdentities) { - var command = new Modules.Devices.Application.Clients.Commands.CreateClient.CreateClientCommand + var command = new Modules.Devices.Module.Features.Clients.CreateClient.CreateClientCommand { ClientId = clientId, DisplayName = displayName, diff --git a/Applications/AdminCli/src/AdminCli/Commands/Clients/DeleteClientsCommand.cs b/Applications/AdminCli/src/AdminCli/Commands/Clients/DeleteClientsCommand.cs index 31793e1ebd..9bf699bec0 100644 --- a/Applications/AdminCli/src/AdminCli/Commands/Clients/DeleteClientsCommand.cs +++ b/Applications/AdminCli/src/AdminCli/Commands/Clients/DeleteClientsCommand.cs @@ -1,6 +1,6 @@ using System.CommandLine; using Backbone.AdminCli.Commands.BaseClasses; -using Backbone.Modules.Devices.Application.Clients.Commands.DeleteClient; +using Backbone.Modules.Devices.Module.Features.Clients.DeleteClient; using MediatR; namespace Backbone.AdminCli.Commands.Clients; diff --git a/Applications/AdminCli/src/AdminCli/Commands/Clients/ListClientsCommand.cs b/Applications/AdminCli/src/AdminCli/Commands/Clients/ListClientsCommand.cs index ec71788021..5631c2b512 100644 --- a/Applications/AdminCli/src/AdminCli/Commands/Clients/ListClientsCommand.cs +++ b/Applications/AdminCli/src/AdminCli/Commands/Clients/ListClientsCommand.cs @@ -1,7 +1,7 @@ using System.CommandLine; using System.Text.Json; using Backbone.AdminCli.Commands.BaseClasses; -using Backbone.Modules.Devices.Application.Clients.Queries.ListClients; +using Backbone.Modules.Devices.Module.Features.Clients.ListClients; using MediatR; namespace Backbone.AdminCli.Commands.Clients; diff --git a/Applications/AdminCli/src/AdminCli/Commands/Tiers/CreateTierCommand.cs b/Applications/AdminCli/src/AdminCli/Commands/Tiers/CreateTierCommand.cs index 00dcdf8a5c..6b30430e5b 100644 --- a/Applications/AdminCli/src/AdminCli/Commands/Tiers/CreateTierCommand.cs +++ b/Applications/AdminCli/src/AdminCli/Commands/Tiers/CreateTierCommand.cs @@ -26,7 +26,7 @@ public class CreateTierCommand : AdminCliCommand private async Task CreateTier(string name) { - var response = await _mediator.Send(new Modules.Devices.Application.Tiers.Commands.CreateTier.CreateTierCommand { Name = name }, CancellationToken.None); + var response = await _mediator.Send(new Modules.Devices.Module.Features.Tiers.CreateTier.CreateTierCommand { Name = name }, CancellationToken.None); Console.WriteLine(JsonSerializer.Serialize(response, JSON_SERIALIZER_OPTIONS)); } diff --git a/Applications/AdminCli/src/AdminCli/Commands/Tiers/ListTiersCommand.cs b/Applications/AdminCli/src/AdminCli/Commands/Tiers/ListTiersCommand.cs index af20e1000e..cfae65f937 100644 --- a/Applications/AdminCli/src/AdminCli/Commands/Tiers/ListTiersCommand.cs +++ b/Applications/AdminCli/src/AdminCli/Commands/Tiers/ListTiersCommand.cs @@ -2,7 +2,7 @@ using System.Text.Json; using Backbone.AdminCli.Commands.BaseClasses; using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.Modules.Devices.Application.Tiers.Queries.ListTiers; +using Backbone.Modules.Devices.Module.Features.Tiers.ListTiers; using MediatR; namespace Backbone.AdminCli.Commands.Tiers; diff --git a/Applications/AdminCli/src/AdminCli/Dockerfile b/Applications/AdminCli/src/AdminCli/Dockerfile index 1b48c7e6e1..9cfba07792 100644 --- a/Applications/AdminCli/src/AdminCli/Dockerfile +++ b/Applications/AdminCli/src/AdminCli/Dockerfile @@ -40,7 +40,7 @@ COPY ["Modules/Announcements/src/Announcements.Infrastructure.Database.SqlServer COPY ["Modules/Announcements/src/Announcements.Domain/Announcements.Domain.csproj", "Modules/Announcements/src/Announcements.Domain/packages.lock.json*", "Modules/Announcements/src/Announcements.Domain/"] COPY ["Modules/Announcements/src/Announcements.Module/Announcements.Module.csproj", "Modules/Announcements/src/Announcements.Module/packages.lock.json*", "Modules/Announcements/src/Announcements.Module/"] -COPY ["Modules/Devices/src/Devices.Application/Devices.Application.csproj", "Modules/Devices/src/Devices.Application/packages.lock.json*", "Modules/Devices/src/Devices.Application/"] +COPY ["Modules/Devices/src/Devices.Abstractions/Devices.Abstractions.csproj", "Modules/Devices/src/Devices.Abstractions/packages.lock.json*", "Modules/Devices/src/Devices.Abstractions/"] COPY ["Modules/Devices/src/Devices.Infrastructure/Devices.Infrastructure.csproj", "Modules/Devices/src/Devices.Infrastructure/packages.lock.json*", "Modules/Devices/src/Devices.Infrastructure/"] COPY ["Modules/Devices/src/Devices.Domain/Devices.Domain.csproj", "Modules/Devices/src/Devices.Domain/packages.lock.json*", "Modules/Devices/src/Devices.Domain/"] COPY ["Modules/Devices/src/Devices.Module/Devices.Module.csproj", "Modules/Devices/src/Devices.Module/packages.lock.json*", "Modules/Devices/src/Devices.Module/"] diff --git a/Applications/AdminCli/src/AdminCli/Program.cs b/Applications/AdminCli/src/AdminCli/Program.cs index 8103fecb17..54c27aca1b 100644 --- a/Applications/AdminCli/src/AdminCli/Program.cs +++ b/Applications/AdminCli/src/AdminCli/Program.cs @@ -68,7 +68,7 @@ private static IServiceProvider BuildServiceProvider(IConfiguration configuratio services .AddModule(configuration) - .AddModule(configuration) + .AddModule(configuration) .AddModule(configuration); #pragma warning disable ASP0000 // We retrieve the Configuration via IOptions here so that it is validated diff --git a/Applications/AdminCli/src/AdminCli/packages.lock.json b/Applications/AdminCli/src/AdminCli/packages.lock.json index a8b8f6e8cd..b624bedd46 100644 --- a/Applications/AdminCli/src/AdminCli/packages.lock.json +++ b/Applications/AdminCli/src/AdminCli/packages.lock.json @@ -1296,23 +1296,11 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Devices.Application": { + "Backbone.Modules.Devices.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Crypto": "[1.0.0, )", - "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Domain": "[1.0.0, )", - "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "OpenIddict.Core": "[7.6.0, 7.6.0]", - "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Devices.Domain": "[1.0.0, )" } }, "Backbone.Modules.Devices.Contracts": { @@ -1336,8 +1324,9 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", "FirebaseAdmin": "[3.6.0, 3.6.0]", "JWT": "[11.1.0, 11.1.0]", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1370,11 +1359,22 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Crypto": "[1.0.0, )", + "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", + "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", + "FluentValidation": "[12.1.1, 12.1.1]", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "OpenIddict.AspNetCore": "[7.6.0, 7.6.0]", + "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", + "Polly": "[8.7.0, 8.7.0]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/ConsumerApi/src/Controllers/Devices/DevicesController.cs b/Applications/ConsumerApi/src/Controllers/Devices/DevicesController.cs deleted file mode 100644 index a990c8dbc1..0000000000 --- a/Applications/ConsumerApi/src/Controllers/Devices/DevicesController.cs +++ /dev/null @@ -1,115 +0,0 @@ -using Backbone.BuildingBlocks.API; -using Backbone.BuildingBlocks.API.Mvc; -using Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; -using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.ConsumerApi.Versions; -using Backbone.Modules.Devices.Application; -using Backbone.Modules.Devices.Application.Devices.Commands.ChangePassword; -using Backbone.Modules.Devices.Application.Devices.Commands.DeleteDevice; -using Backbone.Modules.Devices.Application.Devices.Commands.RegisterDevice; -using Backbone.Modules.Devices.Application.Devices.Commands.UpdateActiveDevice; -using Backbone.Modules.Devices.Application.Devices.DTOs; -using Backbone.Modules.Devices.Application.Devices.Queries.GetActiveDevice; -using Backbone.Modules.Devices.Application.Devices.Queries.ListDevices; -using Backbone.Modules.Devices.Domain.Entities.Identities; -using MediatR; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Options; -using OpenIddict.Validation.AspNetCore; -using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; - -namespace Backbone.ConsumerApi.Controllers.Devices; - -[V2] -[Route("api/v{v:apiVersion}/[controller]")] -[Authorize(OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme)] -public class DevicesController : ApiControllerBase -{ - private readonly ApplicationConfiguration _configuration; - - public DevicesController(IMediator mediator, IOptions options) : base(mediator) - { - _configuration = options.Value; - } - - [HttpPost] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status201Created)] - [ProducesError(StatusCodes.Status400BadRequest)] - public async Task RegisterDevice(RegisterDeviceRequest request, CancellationToken cancellationToken) - { - var command = new RegisterDeviceCommand - { - CommunicationLanguage = request.CommunicationLanguage ?? CommunicationLanguage.DEFAULT_LANGUAGE.Value, - SignedChallenge = request.SignedChallenge, - DevicePassword = request.DevicePassword, - IsBackupDevice = request.IsBackupDevice ?? false - }; - - var response = await _mediator.Send(command, cancellationToken); - - return Created("", response); - } - - [HttpPut("Self")] - [ProducesResponseType(StatusCodes.Status204NoContent)] - [ProducesError(StatusCodes.Status400BadRequest)] - public async Task UpdateActiveDevice(UpdateActiveDeviceCommand request, CancellationToken cancellationToken) - { - await _mediator.Send(request, cancellationToken); - - return NoContent(); - } - - [HttpPut("Self/Password")] - [ProducesResponseType(StatusCodes.Status204NoContent)] - [ProducesError(StatusCodes.Status400BadRequest)] - public async Task ChangePassword(ChangePasswordCommand request, CancellationToken cancellationToken) - { - await _mediator.Send(request, cancellationToken); - - return NoContent(); - } - - [HttpGet] - [ProducesResponseType(typeof(PagedHttpResponseEnvelope), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - public async Task ListDevices([FromQuery] PaginationFilter paginationFilter, [FromQuery] IEnumerable ids, CancellationToken cancellationToken) - { - paginationFilter.PageSize ??= _configuration.Pagination.DefaultPageSize; - - if (paginationFilter.PageSize > _configuration.Pagination.MaxPageSize) - throw new ApplicationException(GenericApplicationErrors.Validation.InvalidPageSize(_configuration.Pagination.MaxPageSize)); - - var response = await _mediator.Send(new ListDevicesQuery { PaginationFilter = paginationFilter, Ids = ids }, cancellationToken); - - return Paged(response); - } - - [HttpGet("Self")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - public async Task GetActiveDevice() - { - var response = await _mediator.Send(new GetActiveDeviceQuery()); - return Ok(response); - } - - [HttpDelete("{id}")] - [ProducesResponseType(StatusCodes.Status204NoContent)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesResponseType(StatusCodes.Status404NotFound)] - public async Task DeleteDevice([FromRoute] string id, CancellationToken cancellationToken) - { - await _mediator.Send(new DeleteDeviceCommand { DeviceId = id }, cancellationToken); - return NoContent(); - } -} - -public class RegisterDeviceRequest -{ - public required string DevicePassword { get; set; } - public string? CommunicationLanguage { get; set; } - public required SignedChallengeDTO SignedChallenge { get; set; } - public bool? IsBackupDevice { get; set; } -} diff --git a/Applications/ConsumerApi/src/Controllers/Devices/IdentitiesController.cs b/Applications/ConsumerApi/src/Controllers/Devices/IdentitiesController.cs deleted file mode 100644 index a2214f95c2..0000000000 --- a/Applications/ConsumerApi/src/Controllers/Devices/IdentitiesController.cs +++ /dev/null @@ -1,119 +0,0 @@ -using Backbone.BuildingBlocks.API; -using Backbone.BuildingBlocks.API.Mvc; -using Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; -using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.ConsumerApi.Versions; -using Backbone.Modules.Devices.Application.Devices.DTOs; -using Backbone.Modules.Devices.Application.Identities.Commands.ChangeFeatureFlags; -using Backbone.Modules.Devices.Application.Identities.Commands.CreateIdentity; -using Backbone.Modules.Devices.Application.Identities.Queries.GetOwnIdentity; -using Backbone.Modules.Devices.Application.Identities.Queries.IsIdentityOfUserDeleted; -using Backbone.Modules.Devices.Application.Identities.Queries.ListFeatureFlags; -using Backbone.Modules.Devices.Domain.Entities.Identities; -using Backbone.Modules.Devices.Infrastructure.OpenIddict; -using MediatR; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using OpenIddict.Core; -using OpenIddict.Validation.AspNetCore; - -namespace Backbone.ConsumerApi.Controllers.Devices; - -[V2] -[Route("api/v{v:apiVersion}/[controller]")] -[Authorize(OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme)] -public class IdentitiesController : ApiControllerBase -{ - private readonly OpenIddictApplicationManager _applicationManager; - - public IdentitiesController(IMediator mediator, OpenIddictApplicationManager applicationManager) : base(mediator) - { - _applicationManager = applicationManager; - } - - [HttpPost] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status201Created)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status404NotFound)] - [AllowAnonymous] - public async Task CreateIdentity(CreateIdentityRequest request, CancellationToken cancellationToken) - { - var client = await _applicationManager.FindByClientIdAsync(request.ClientId, cancellationToken); - - if (client == null || !await _applicationManager.ValidateClientSecretAsync(client, request.ClientSecret, cancellationToken)) - throw new OperationFailedException(GenericApplicationErrors.Unauthorized()); - - var command = new CreateIdentityCommand - { - ClientId = request.ClientId, - DevicePassword = request.DevicePassword, - IdentityPublicKey = request.IdentityPublicKey, - IdentityVersion = request.IdentityVersion, - CommunicationLanguage = request.DeviceCommunicationLanguage ?? CommunicationLanguage.DEFAULT_LANGUAGE.Value, - SignedChallenge = new SignedChallengeDTO - { - Challenge = request.SignedChallenge.Challenge, - Signature = request.SignedChallenge.Signature - } - }; - - var response = await _mediator.Send(command, cancellationToken); - - return Created(response); - } - - [HttpGet("Self")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - public async Task GetOwnIdentity(CancellationToken cancellationToken) - { - var response = await _mediator.Send(new GetOwnIdentityQuery(), cancellationToken); - return Ok(response); - } - - [HttpGet("IsDeleted")] - [AllowAnonymous] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - public async Task IsIdentityOfUserDeleted([FromQuery(Name = "username")] string username, CancellationToken cancellationToken) - { - var response = await _mediator.Send(new IsIdentityOfUserDeletedQuery { Username = username }, cancellationToken); - return Ok(response); - } - - [HttpPatch("Self/FeatureFlags")] - [ProducesResponseType(StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - public async Task ChangeFeatureFlags([FromBody] ChangeFeatureFlagsCommand request, CancellationToken cancellationToken) - { - await _mediator.Send(request, cancellationToken); - return NoContent(); - } - - [HttpGet("{identityAddress}/FeatureFlags")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status404NotFound)] - public async Task ListFeatureFlags([FromRoute] string identityAddress, CancellationToken cancellationToken) - { - var request = new ListFeatureFlagsQuery { IdentityAddress = identityAddress }; - var response = await _mediator.Send(request, cancellationToken); - return Ok(response); - } -} - -public class CreateIdentityRequest -{ - public required string ClientId { get; set; } - public required string ClientSecret { get; set; } - public required byte[] IdentityPublicKey { get; set; } - public required string DevicePassword { get; set; } - public string? DeviceCommunicationLanguage { get; set; } - public required byte IdentityVersion { get; set; } - public required CreateIdentityRequestSignedChallenge SignedChallenge { get; set; } -} - -public class CreateIdentityRequestSignedChallenge -{ - public required string Challenge { get; set; } - public required byte[] Signature { get; set; } -} diff --git a/Applications/ConsumerApi/src/Controllers/Devices/IdentityDeletionProcessesController.cs b/Applications/ConsumerApi/src/Controllers/Devices/IdentityDeletionProcessesController.cs deleted file mode 100644 index dd50aca23d..0000000000 --- a/Applications/ConsumerApi/src/Controllers/Devices/IdentityDeletionProcessesController.cs +++ /dev/null @@ -1,66 +0,0 @@ -using Backbone.BuildingBlocks.API; -using Backbone.BuildingBlocks.API.Mvc; -using Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; -using Backbone.ConsumerApi.Versions; -using Backbone.Modules.Devices.Application.DTOs; -using Backbone.Modules.Devices.Application.Identities.Commands.CancelDeletionProcess; -using Backbone.Modules.Devices.Application.Identities.Commands.StartDeletionProcess; -using Backbone.Modules.Devices.Application.Identities.Queries.GetDeletionProcessAsOwner; -using Backbone.Modules.Devices.Application.Identities.Queries.ListDeletionProcessesAsOwner; -using MediatR; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using OpenIddict.Validation.AspNetCore; - -namespace Backbone.ConsumerApi.Controllers.Devices; - -[V2] -[Route("api/v{v:apiVersion}/Identities/Self/DeletionProcesses")] -[Authorize(OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme)] -public class IdentityDeletionProcessesController : ApiControllerBase -{ - public IdentityDeletionProcessesController(IMediator mediator) : base(mediator) - { - } - - [HttpPost] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status201Created)] - [ProducesError(StatusCodes.Status400BadRequest)] - public async Task StartDeletionProcess(StartDeletionProcessCommand? request, CancellationToken cancellationToken) - { - request ??= new StartDeletionProcessCommand(); - var response = await _mediator.Send(request, cancellationToken); - - return Created("", response); - } - - [HttpGet("{id}")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status404NotFound)] - public async Task GetDeletionProcess([FromRoute] string id, CancellationToken cancellationToken) - { - var response = await _mediator.Send(new GetDeletionProcessAsOwnerQuery { Id = id }, cancellationToken); - return Ok(response); - } - - [HttpGet] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - public async Task ListDeletionProcesses(CancellationToken cancellationToken) - { - var response = await _mediator.Send(new ListDeletionProcessesAsOwnerQuery(), cancellationToken); - - return Ok(response); - } - - [HttpPut("{id}/Cancel")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status404NotFound)] - public async Task CancelDeletionProcess([FromRoute] string id, CancellationToken cancellationToken) - { - var response = await _mediator.Send(new CancelDeletionProcessCommand { DeletionProcessId = id }, cancellationToken); - - return Ok(response); - } -} diff --git a/Applications/ConsumerApi/src/Controllers/Devices/PushNotificationsController.cs b/Applications/ConsumerApi/src/Controllers/Devices/PushNotificationsController.cs deleted file mode 100644 index a041cc884b..0000000000 --- a/Applications/ConsumerApi/src/Controllers/Devices/PushNotificationsController.cs +++ /dev/null @@ -1,49 +0,0 @@ -using Backbone.BuildingBlocks.API; -using Backbone.BuildingBlocks.API.Mvc; -using Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; -using Backbone.ConsumerApi.Versions; -using Backbone.Modules.Devices.Application.PushNotifications.Commands.DeleteDeviceRegistration; -using Backbone.Modules.Devices.Application.PushNotifications.Commands.SendTestNotification; -using Backbone.Modules.Devices.Application.PushNotifications.Commands.UpdateDeviceRegistration; -using MediatR; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using OpenIddict.Validation.AspNetCore; - -namespace Backbone.ConsumerApi.Controllers.Devices; - -[V2] -[Route("api/v{v:apiVersion}/Devices/Self/[controller]")] -[Authorize(OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme)] -public class PushNotificationsController : ApiControllerBase -{ - public PushNotificationsController(IMediator mediator) : base(mediator) - { - } - - [HttpPut] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - public async Task RegisterForPushNotifications(UpdateDeviceRegistrationCommand request, CancellationToken cancellationToken) - { - var response = await _mediator.Send(request, cancellationToken); - return Ok(response); - } - - [HttpDelete] - [ProducesResponseType(StatusCodes.Status204NoContent)] - public async Task UnregisterFromPushNotifications(CancellationToken cancellationToken) - { - await _mediator.Send(new DeleteDeviceRegistrationCommand(), cancellationToken); - return NoContent(); - } - - [HttpPost("SendTestNotification")] - [ApiExplorerSettings(IgnoreApi = true)] // don't show this in the API docs as it's just for internal testing - [ProducesResponseType(StatusCodes.Status204NoContent)] - public async Task SendTestPushNotification([FromBody] dynamic data, CancellationToken cancellationToken) - { - await _mediator.Send(new SendTestNotificationCommand { Data = data }, cancellationToken); - return NoContent(); - } -} diff --git a/Applications/ConsumerApi/src/Controllers/Notifications/NotificationsController.cs b/Applications/ConsumerApi/src/Controllers/Notifications/NotificationsController.cs deleted file mode 100644 index 278bac7229..0000000000 --- a/Applications/ConsumerApi/src/Controllers/Notifications/NotificationsController.cs +++ /dev/null @@ -1,28 +0,0 @@ -using Backbone.BuildingBlocks.API.Mvc; -using Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; -using Backbone.ConsumerApi.Versions; -using Backbone.Modules.Devices.Application.Notifications.Commands.SendNotification; -using MediatR; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; - -namespace Backbone.ConsumerApi.Controllers.Notifications; - -[V2] -[Route("api/v{v:apiVersion}/[controller]")] -[Authorize("OpenIddict.Validation.AspNetCore")] -public class NotificationsController : ApiControllerBase -{ - public NotificationsController(IMediator mediator) : base(mediator) - { - } - - [HttpPost] - [ProducesResponseType(StatusCodes.Status204NoContent)] - [ProducesError(StatusCodes.Status400BadRequest)] - public async Task SendNotification(SendNotificationCommand request, CancellationToken cancellationToken) - { - await _mediator.Send(request, cancellationToken); - return NoContent(); - } -} diff --git a/Applications/ConsumerApi/src/Controllers/Quotas/QuotasController.cs b/Applications/ConsumerApi/src/Controllers/Quotas/QuotasController.cs deleted file mode 100644 index 6efb1d4569..0000000000 --- a/Applications/ConsumerApi/src/Controllers/Quotas/QuotasController.cs +++ /dev/null @@ -1,30 +0,0 @@ -using Backbone.BuildingBlocks.API; -using Backbone.BuildingBlocks.API.Mvc; -using Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; -using Backbone.ConsumerApi.Versions; -using Backbone.Modules.Quotas.Application.Identities.Queries.ListQuotasForIdentity; -using MediatR; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; - -namespace Backbone.ConsumerApi.Controllers.Quotas; - -[V2] -[Route("api/v{v:apiVersion}/[controller]")] -[Authorize("OpenIddict.Validation.AspNetCore")] -public class QuotasController : ApiControllerBase -{ - public QuotasController(IMediator mediator) : base(mediator) - { - } - - [HttpGet] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - public async Task ListIndividualQuotas(CancellationToken cancellationToken) - { - var response = await _mediator.Send(new ListQuotasForIdentityQuery(), cancellationToken); - - return Ok(response); - } -} diff --git a/Applications/ConsumerApi/src/Controllers/Relationships/RelationshipsController.cs b/Applications/ConsumerApi/src/Controllers/Relationships/RelationshipsController.cs index 2338a6df2c..a0dbda1aa0 100644 --- a/Applications/ConsumerApi/src/Controllers/Relationships/RelationshipsController.cs +++ b/Applications/ConsumerApi/src/Controllers/Relationships/RelationshipsController.cs @@ -4,7 +4,7 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Pagination; using Backbone.ConsumerApi.Versions; -using Backbone.Modules.Devices.Application.Identities.Queries.GetIdentity; +using Backbone.Modules.Devices.Module.Features.Identities.GetIdentity; using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.Modules.Relationships.Application; using Backbone.Modules.Relationships.Application.Relationships.Commands.AcceptRelationship; diff --git a/Applications/ConsumerApi/src/Controllers/Synchronization/SyncRunsController.cs b/Applications/ConsumerApi/src/Controllers/Synchronization/SyncRunsController.cs index 21e0a98f02..0af6d74ead 100644 --- a/Applications/ConsumerApi/src/Controllers/Synchronization/SyncRunsController.cs +++ b/Applications/ConsumerApi/src/Controllers/Synchronization/SyncRunsController.cs @@ -5,7 +5,7 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.BuildingBlocks.Application.Pagination; using Backbone.ConsumerApi.Versions; -using Backbone.Modules.Devices.Application.Identities.Queries.GetIdentity; +using Backbone.Modules.Devices.Module.Features.Identities.GetIdentity; using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.Modules.Synchronization.Application; using Backbone.Modules.Synchronization.Application.Datawallets.DTOs; diff --git a/Applications/ConsumerApi/src/DevicesDbContextSeeder.cs b/Applications/ConsumerApi/src/DevicesDbContextSeeder.cs index 168bc9ed08..47bb609e43 100644 --- a/Applications/ConsumerApi/src/DevicesDbContextSeeder.cs +++ b/Applications/ConsumerApi/src/DevicesDbContextSeeder.cs @@ -1,8 +1,8 @@ using Backbone.BuildingBlocks.API.Extensions; -using Backbone.Modules.Devices.Application.Extensions; -using Backbone.Modules.Devices.Application.Tiers.Commands.CreateQueuedForDeletionTier; -using Backbone.Modules.Devices.Application.Tiers.Commands.CreateTier; -using Backbone.Modules.Devices.Application.Users.Commands.SeedTestUsers; +using Backbone.Modules.Devices.Module.Features.Tiers.Shared; +using Backbone.Modules.Devices.Module.Features.Tiers.CreateQueuedForDeletionTier; +using Backbone.Modules.Devices.Module.Features.Tiers.CreateTier; +using Backbone.Modules.Devices.Module.Features.Users.SeedTestUsers; using Backbone.Modules.Devices.Domain.Aggregates.Tier; using Backbone.Modules.Devices.Infrastructure.Persistence.Database; using MediatR; diff --git a/Applications/ConsumerApi/src/Extensions/IServiceCollectionExtensions.cs b/Applications/ConsumerApi/src/Extensions/IServiceCollectionExtensions.cs index 40f1b0c927..88f6a97e81 100644 --- a/Applications/ConsumerApi/src/Extensions/IServiceCollectionExtensions.cs +++ b/Applications/ConsumerApi/src/Extensions/IServiceCollectionExtensions.cs @@ -9,13 +9,13 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.ConsumerApi.Configuration; -using Backbone.Modules.Devices.Application.Devices.Commands.RegisterDevice; +using Backbone.Modules.Devices.Module.Features.Devices.Shared; using Backbone.Modules.Devices.Infrastructure.OpenIddict; using Backbone.Modules.Devices.Infrastructure.Persistence.Database; using FluentValidation; using Microsoft.AspNetCore.Mvc; using OpenIddict.Validation.AspNetCore; -using PublicKey = Backbone.Modules.Devices.Application.Devices.DTOs.PublicKey; +using PublicKey = Backbone.Modules.Devices.Module.Features.Devices.Shared.PublicKey; namespace Backbone.ConsumerApi.Extensions; diff --git a/Applications/ConsumerApi/src/Program.cs b/Applications/ConsumerApi/src/Program.cs index 4a25b0c101..6b3fe550ec 100644 --- a/Applications/ConsumerApi/src/Program.cs +++ b/Applications/ConsumerApi/src/Program.cs @@ -135,10 +135,10 @@ static void ConfigureServices(IServiceCollection services, IConfiguration config services .AddModule(configuration) .AddModule(configuration) - .AddModule(configuration) + .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) - .AddModule(configuration) + .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) - .AddModule(configuration) + .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) - .AddModule(configuration) + .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) - .AddModule(configuration) + .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) diff --git a/Applications/Housekeeper/src/Housekeeper/packages.lock.json b/Applications/Housekeeper/src/Housekeeper/packages.lock.json index 8276c3a1ba..88f9e15b5a 100644 --- a/Applications/Housekeeper/src/Housekeeper/packages.lock.json +++ b/Applications/Housekeeper/src/Housekeeper/packages.lock.json @@ -1668,23 +1668,11 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Devices.Application": { + "Backbone.Modules.Devices.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Crypto": "[1.0.0, )", - "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Domain": "[1.0.0, )", - "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "OpenIddict.Core": "[7.6.0, 7.6.0]", - "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Devices.Domain": "[1.0.0, )" } }, "Backbone.Modules.Devices.Contracts": { @@ -1708,8 +1696,9 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", "FirebaseAdmin": "[3.6.0, 3.6.0]", "JWT": "[11.1.0, 11.1.0]", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1742,11 +1731,22 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Crypto": "[1.0.0, )", + "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", + "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", + "FluentValidation": "[12.1.1, 12.1.1]", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "OpenIddict.AspNetCore": "[7.6.0, 7.6.0]", + "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", + "Polly": "[8.7.0, 8.7.0]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, @@ -1857,18 +1857,10 @@ "Backbone.Modules.Messages.Infrastructure": "[1.0.0, )" } }, - "Backbone.Modules.Quotas.Application": { + "Backbone.Modules.Quotas.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Files.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Quotas.Contracts": "[1.0.0, )", - "Backbone.Modules.Quotas.Domain": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )" + "Backbone.Modules.Quotas.Domain": "[1.0.0, )" } }, "Backbone.Modules.Quotas.Contracts": { @@ -1890,9 +1882,9 @@ "Backbone.Modules.Quotas.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Quotas.Application": "[1.0.0, )", + "Backbone.Modules.Quotas.Abstractions": "[1.0.0, )", "Backbone.Modules.Quotas.Domain": "[1.0.0, )", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/DeletionProcessLogger.cs b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/DeletionProcessLogger.cs index e3125f3d45..32ee8626eb 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/DeletionProcessLogger.cs +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/DeletionProcessLogger.cs @@ -1,6 +1,6 @@ using Backbone.BuildingBlocks.Application.Identities; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Application.Identities.Commands.LogDeletionProcess; +using Backbone.Modules.Devices.Module.Features.Identities.LogDeletionProcess; using MediatR; namespace Backbone.Job.IdentityDeletion; diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Dockerfile b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Dockerfile index 7428345c8f..87c4c4a4f4 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Dockerfile +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Dockerfile @@ -42,7 +42,7 @@ COPY ["Modules/Challenges/src/Challenges.Infrastructure/Challenges.Infrastructur COPY ["Modules/Challenges/src/Challenges.Infrastructure.Database.SqlServer/Challenges.Infrastructure.Database.SqlServer.csproj", "Modules/Challenges/src/Challenges.Infrastructure.Database.SqlServer/packages.lock.json*", "Modules/Challenges/src/Challenges.Infrastructure.Database.SqlServer/"] COPY ["Modules/Devices/src/Devices.Domain/Devices.Domain.csproj", "Modules/Devices/src/Devices.Domain/packages.lock.json*", "Modules/Devices/src/Devices.Domain/"] COPY ["Modules/Devices/src/Devices.Infrastructure/Devices.Infrastructure.csproj", "Modules/Devices/src/Devices.Infrastructure/packages.lock.json*", "Modules/Devices/src/Devices.Infrastructure/"] -COPY ["Modules/Devices/src/Devices.Application/Devices.Application.csproj", "Modules/Devices/src/Devices.Application/packages.lock.json*", "Modules/Devices/src/Devices.Application/"] +COPY ["Modules/Devices/src/Devices.Abstractions/Devices.Abstractions.csproj", "Modules/Devices/src/Devices.Abstractions/packages.lock.json*", "Modules/Devices/src/Devices.Abstractions/"] COPY ["Modules/Devices/src/Devices.Module/Devices.Module.csproj", "Modules/Devices/src/Devices.Module/packages.lock.json*", "Modules/Devices/src/Devices.Module/"] COPY ["Modules/Devices/src/Devices.Infrastructure.Database.Postgres/Devices.Infrastructure.Database.Postgres.csproj", "Modules/Devices/src/Devices.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Devices/src/Devices.Infrastructure.Database.Postgres/"] COPY ["Modules/Devices/src/Devices.Infrastructure.Database.SqlServer/Devices.Infrastructure.Database.SqlServer.csproj", "Modules/Devices/src/Devices.Infrastructure.Database.SqlServer/packages.lock.json*", "Modules/Devices/src/Devices.Infrastructure.Database.SqlServer/"] @@ -58,7 +58,7 @@ COPY ["Modules/Messages/src/Messages.Module/Messages.Module.csproj", "Modules/Me COPY ["Modules/Messages/src/Messages.Infrastructure.Database.Postgres/Messages.Infrastructure.Database.Postgres.csproj", "Modules/Messages/src/Messages.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Messages/src/Messages.Infrastructure.Database.Postgres/"] COPY ["Modules/Messages/src/Messages.Infrastructure/Messages.Infrastructure.csproj", "Modules/Messages/src/Messages.Infrastructure/packages.lock.json*", "Modules/Messages/src/Messages.Infrastructure/"] COPY ["Modules/Messages/src/Messages.Infrastructure.Database.SqlServer/Messages.Infrastructure.Database.SqlServer.csproj", "Modules/Messages/src/Messages.Infrastructure.Database.SqlServer/packages.lock.json*", "Modules/Messages/src/Messages.Infrastructure.Database.SqlServer/"] -COPY ["Modules/Quotas/src/Quotas.Application/Quotas.Application.csproj", "Modules/Quotas/src/Quotas.Application/packages.lock.json*", "Modules/Quotas/src/Quotas.Application/"] +COPY ["Modules/Quotas/src/Quotas.Abstractions/Quotas.Abstractions.csproj", "Modules/Quotas/src/Quotas.Abstractions/packages.lock.json*", "Modules/Quotas/src/Quotas.Abstractions/"] COPY ["Modules/Quotas/src/Quotas.Domain/Quotas.Domain.csproj", "Modules/Quotas/src/Quotas.Domain/packages.lock.json*", "Modules/Quotas/src/Quotas.Domain/"] COPY ["Modules/Quotas/src/Quotas.Module/Quotas.Module.csproj", "Modules/Quotas/src/Quotas.Module/packages.lock.json*", "Modules/Quotas/src/Quotas.Module/"] COPY ["Modules/Quotas/src/Quotas.Infrastructure.Database.Postgres/Quotas.Infrastructure.Database.Postgres.csproj", "Modules/Quotas/src/Quotas.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Quotas/src/Quotas.Infrastructure.Database.Postgres/"] diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Job.IdentityDeletion.csproj b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Job.IdentityDeletion.csproj index cfae72b0ff..1a805038dc 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Job.IdentityDeletion.csproj +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Job.IdentityDeletion.csproj @@ -24,15 +24,12 @@ - - - diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Program.cs b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Program.cs index 1f13f72d7e..5d67678a92 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Program.cs +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Program.cs @@ -85,10 +85,10 @@ public static IHostBuilder CreateHostBuilder(string[] args) services .AddModule(configuration) .AddModule(configuration) - .AddModule(configuration) + .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) - .AddModule(configuration) + .AddModule(configuration) .AddModule(configuration) .AddModule(); services.AddTransient(); - services.AddTransient(); + services.AddTransient(); services.AddTransient(); services.AddTransient(); - services.AddTransient(); + services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Workers/ActualDeletionWorker.cs b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Workers/ActualDeletionWorker.cs index bff3868b7c..f3f7ab0256 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Workers/ActualDeletionWorker.cs +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Workers/ActualDeletionWorker.cs @@ -1,12 +1,12 @@ using Backbone.BuildingBlocks.Application.Identities; using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.BuildingBlocks.Domain.Errors; -using Backbone.Modules.Devices.Application.Identities.Commands.HandleCompletedDeletionProcess; -using Backbone.Modules.Devices.Application.Identities.Commands.HandleErrorDuringIdentityDeletion; -using Backbone.Modules.Devices.Application.Identities.Commands.TriggerRipeDeletionProcesses; -using Backbone.Modules.Devices.Application.Identities.Queries.GetIdentity; -using Backbone.Modules.Devices.Application.Identities.Queries.ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting; -using Backbone.Modules.Devices.Application.Infrastructure.PushNotifications.DeletionProcess; +using Backbone.Modules.Devices.Module.Features.Identities.HandleCompletedDeletionProcess; +using Backbone.Modules.Devices.Module.Features.Identities.HandleErrorDuringIdentityDeletion; +using Backbone.Modules.Devices.Module.Features.Identities.TriggerRipeDeletionProcesses; +using Backbone.Modules.Devices.Module.Features.Identities.GetIdentity; +using Backbone.Modules.Devices.Module.Features.Identities.ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting; +using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.DeletionProcess; using CSharpFunctionalExtensions; using MediatR; diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Workers/SendGracePeriodRemindersWorker.cs b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Workers/SendGracePeriodRemindersWorker.cs index 9754ecc4cf..a1c7bb7e15 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Workers/SendGracePeriodRemindersWorker.cs +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Workers/SendGracePeriodRemindersWorker.cs @@ -1,4 +1,4 @@ -using Backbone.Modules.Devices.Application.Identities.Commands.SendDeletionProcessGracePeriodReminders; +using Backbone.Modules.Devices.Module.Features.Identities.SendDeletionProcessGracePeriodReminders; using MediatR; namespace Backbone.Job.IdentityDeletion.Workers; diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/packages.lock.json b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/packages.lock.json index 9007dae69b..66cd83a16b 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/packages.lock.json +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/packages.lock.json @@ -1395,23 +1395,11 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Devices.Application": { + "Backbone.Modules.Devices.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Crypto": "[1.0.0, )", - "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Domain": "[1.0.0, )", - "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "OpenIddict.Core": "[7.6.0, 7.6.0]", - "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Devices.Domain": "[1.0.0, )" } }, "Backbone.Modules.Devices.Contracts": { @@ -1435,8 +1423,9 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", "FirebaseAdmin": "[3.6.0, 3.6.0]", "JWT": "[11.1.0, 11.1.0]", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1469,11 +1458,22 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Crypto": "[1.0.0, )", + "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", + "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", + "FluentValidation": "[12.1.1, 12.1.1]", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "OpenIddict.AspNetCore": "[7.6.0, 7.6.0]", + "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", + "Polly": "[8.7.0, 8.7.0]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, @@ -1599,18 +1599,10 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Quotas.Application": { + "Backbone.Modules.Quotas.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Files.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Quotas.Contracts": "[1.0.0, )", - "Backbone.Modules.Quotas.Domain": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )" + "Backbone.Modules.Quotas.Domain": "[1.0.0, )" } }, "Backbone.Modules.Quotas.Contracts": { @@ -1632,9 +1624,9 @@ "Backbone.Modules.Quotas.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Quotas.Application": "[1.0.0, )", + "Backbone.Modules.Quotas.Abstractions": "[1.0.0, )", "Backbone.Modules.Quotas.Domain": "[1.0.0, )", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1659,10 +1651,17 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Quotas.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Files.Contracts": "[1.0.0, )", + "Backbone.Modules.Messages.Contracts": "[1.0.0, )", + "Backbone.Modules.Quotas.Abstractions": "[1.0.0, )", + "Backbone.Modules.Quotas.Contracts": "[1.0.0, )", + "Backbone.Modules.Quotas.Domain": "[1.0.0, )", "Backbone.Modules.Quotas.Infrastructure": "[1.0.0, )", "Backbone.Modules.Quotas.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Quotas.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests.Integration/packages.lock.json b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests.Integration/packages.lock.json index cd4b4a90e5..0e44a49e9e 100644 --- a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests.Integration/packages.lock.json +++ b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests.Integration/packages.lock.json @@ -1420,12 +1420,10 @@ "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", "Backbone.Modules.Announcements.Module": "[1.0.0, )", "Backbone.Modules.Challenges.Module": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", "Backbone.Modules.Devices.Module": "[1.0.0, )", "Backbone.Modules.Files.Module": "[1.0.0, )", "Backbone.Modules.Messages.Module": "[1.0.0, )", - "Backbone.Modules.Quotas.Application": "[1.0.0, )", "Backbone.Modules.Quotas.Module": "[1.0.0, )", "Backbone.Modules.Relationships.Application": "[1.0.0, )", "Backbone.Modules.Relationships.Module": "[1.0.0, )", @@ -1552,23 +1550,11 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Devices.Application": { + "Backbone.Modules.Devices.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Crypto": "[1.0.0, )", - "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Domain": "[1.0.0, )", - "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "OpenIddict.Core": "[7.6.0, 7.6.0]", - "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Devices.Domain": "[1.0.0, )" } }, "Backbone.Modules.Devices.Contracts": { @@ -1592,8 +1578,9 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", "FirebaseAdmin": "[3.6.0, 3.6.0]", "JWT": "[11.1.0, 11.1.0]", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1626,11 +1613,22 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Crypto": "[1.0.0, )", + "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", + "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", + "FluentValidation": "[12.1.1, 12.1.1]", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "OpenIddict.AspNetCore": "[7.6.0, 7.6.0]", + "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", + "Polly": "[8.7.0, 8.7.0]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, @@ -1756,18 +1754,10 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Quotas.Application": { + "Backbone.Modules.Quotas.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Files.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Quotas.Contracts": "[1.0.0, )", - "Backbone.Modules.Quotas.Domain": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )" + "Backbone.Modules.Quotas.Domain": "[1.0.0, )" } }, "Backbone.Modules.Quotas.Contracts": { @@ -1789,9 +1779,9 @@ "Backbone.Modules.Quotas.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Quotas.Application": "[1.0.0, )", + "Backbone.Modules.Quotas.Abstractions": "[1.0.0, )", "Backbone.Modules.Quotas.Domain": "[1.0.0, )", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1816,10 +1806,17 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Quotas.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Files.Contracts": "[1.0.0, )", + "Backbone.Modules.Messages.Contracts": "[1.0.0, )", + "Backbone.Modules.Quotas.Abstractions": "[1.0.0, )", + "Backbone.Modules.Quotas.Contracts": "[1.0.0, )", + "Backbone.Modules.Quotas.Domain": "[1.0.0, )", "Backbone.Modules.Quotas.Infrastructure": "[1.0.0, )", "Backbone.Modules.Quotas.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Quotas.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/Tests/ActualDeletionWorkerTests.cs b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/Tests/ActualDeletionWorkerTests.cs index d19688ac96..b74e99a064 100644 --- a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/Tests/ActualDeletionWorkerTests.cs +++ b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/Tests/ActualDeletionWorkerTests.cs @@ -3,9 +3,9 @@ using Backbone.BuildingBlocks.Domain.Errors; using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Job.IdentityDeletion.Workers; -using Backbone.Modules.Devices.Application.Identities.Commands.TriggerRipeDeletionProcesses; -using Backbone.Modules.Devices.Application.Identities.Queries.GetIdentity; -using Backbone.Modules.Devices.Application.Infrastructure.PushNotifications.DeletionProcess; +using Backbone.Modules.Devices.Module.Features.Identities.TriggerRipeDeletionProcesses; +using Backbone.Modules.Devices.Module.Features.Identities.GetIdentity; +using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.DeletionProcess; using Backbone.Modules.Devices.Domain.Aggregates.Tier; using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.Modules.Relationships.Application.Relationships.Queries.ListRelationshipsOfIdentity; diff --git a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/packages.lock.json b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/packages.lock.json index cd4b4a90e5..0e44a49e9e 100644 --- a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/packages.lock.json +++ b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/packages.lock.json @@ -1420,12 +1420,10 @@ "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", "Backbone.Modules.Announcements.Module": "[1.0.0, )", "Backbone.Modules.Challenges.Module": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", "Backbone.Modules.Devices.Module": "[1.0.0, )", "Backbone.Modules.Files.Module": "[1.0.0, )", "Backbone.Modules.Messages.Module": "[1.0.0, )", - "Backbone.Modules.Quotas.Application": "[1.0.0, )", "Backbone.Modules.Quotas.Module": "[1.0.0, )", "Backbone.Modules.Relationships.Application": "[1.0.0, )", "Backbone.Modules.Relationships.Module": "[1.0.0, )", @@ -1552,23 +1550,11 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Devices.Application": { + "Backbone.Modules.Devices.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Crypto": "[1.0.0, )", - "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Domain": "[1.0.0, )", - "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "OpenIddict.Core": "[7.6.0, 7.6.0]", - "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Devices.Domain": "[1.0.0, )" } }, "Backbone.Modules.Devices.Contracts": { @@ -1592,8 +1578,9 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", "FirebaseAdmin": "[3.6.0, 3.6.0]", "JWT": "[11.1.0, 11.1.0]", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1626,11 +1613,22 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Crypto": "[1.0.0, )", + "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", + "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", + "FluentValidation": "[12.1.1, 12.1.1]", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "OpenIddict.AspNetCore": "[7.6.0, 7.6.0]", + "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", + "Polly": "[8.7.0, 8.7.0]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, @@ -1756,18 +1754,10 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Quotas.Application": { + "Backbone.Modules.Quotas.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Files.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Quotas.Contracts": "[1.0.0, )", - "Backbone.Modules.Quotas.Domain": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )" + "Backbone.Modules.Quotas.Domain": "[1.0.0, )" } }, "Backbone.Modules.Quotas.Contracts": { @@ -1789,9 +1779,9 @@ "Backbone.Modules.Quotas.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Quotas.Application": "[1.0.0, )", + "Backbone.Modules.Quotas.Abstractions": "[1.0.0, )", "Backbone.Modules.Quotas.Domain": "[1.0.0, )", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1816,10 +1806,17 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Quotas.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Files.Contracts": "[1.0.0, )", + "Backbone.Modules.Messages.Contracts": "[1.0.0, )", + "Backbone.Modules.Quotas.Abstractions": "[1.0.0, )", + "Backbone.Modules.Quotas.Contracts": "[1.0.0, )", + "Backbone.Modules.Quotas.Domain": "[1.0.0, )", "Backbone.Modules.Quotas.Infrastructure": "[1.0.0, )", "Backbone.Modules.Quotas.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Quotas.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/SseServer/src/SseServer/Controllers/SseController.cs b/Applications/SseServer/src/SseServer/Controllers/SseController.cs index 5314ac3475..a216d58730 100644 --- a/Applications/SseServer/src/SseServer/Controllers/SseController.cs +++ b/Applications/SseServer/src/SseServer/Controllers/SseController.cs @@ -1,6 +1,6 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; -using Backbone.Modules.Devices.Application.PushNotifications.Commands.DeleteDeviceRegistration; -using Backbone.Modules.Devices.Application.PushNotifications.Commands.UpdateDeviceRegistration; +using Backbone.Modules.Devices.Module.Features.PushNotifications.DeleteDeviceRegistration; +using Backbone.Modules.Devices.Module.Features.PushNotifications.UpdateDeviceRegistration; using Backbone.SseServer.Versions; using MediatR; using Microsoft.AspNetCore.Authorization; diff --git a/Applications/SseServer/src/SseServer/Extensions/IServiceCollectionExtensions.cs b/Applications/SseServer/src/SseServer/Extensions/IServiceCollectionExtensions.cs index 68e013ad95..12b2fd7940 100644 --- a/Applications/SseServer/src/SseServer/Extensions/IServiceCollectionExtensions.cs +++ b/Applications/SseServer/src/SseServer/Extensions/IServiceCollectionExtensions.cs @@ -7,10 +7,10 @@ using Backbone.BuildingBlocks.API.Mvc.ExceptionFilters; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; -using Backbone.Modules.Devices.Application.Devices.Commands.RegisterDevice; +using Backbone.Modules.Devices.Module.Features.Devices.Shared; using Microsoft.AspNetCore.Mvc; using Microsoft.IdentityModel.Tokens; -using PublicKey = Backbone.Modules.Devices.Application.Devices.DTOs.PublicKey; +using PublicKey = Backbone.Modules.Devices.Module.Features.Devices.Shared.PublicKey; namespace Backbone.SseServer.Extensions; diff --git a/Applications/SseServer/src/SseServer/Program.cs b/Applications/SseServer/src/SseServer/Program.cs index 50f80b763b..b2538e48a0 100644 --- a/Applications/SseServer/src/SseServer/Program.cs +++ b/Applications/SseServer/src/SseServer/Program.cs @@ -4,9 +4,8 @@ using Backbone.BuildingBlocks.Application.QuotaCheck; using Backbone.BuildingBlocks.Infrastructure.EventBus; using Backbone.BuildingBlocks.Infrastructure.Persistence.Database; -using Backbone.Modules.Devices.Application; -using Backbone.Modules.Devices.Infrastructure; using Backbone.Modules.Devices.Module; +using Backbone.Modules.Devices.Infrastructure; using Backbone.SseServer.Controllers; using Backbone.SseServer.Extensions; using Backbone.Tooling.Extensions; diff --git a/Applications/SseServer/src/SseServer/packages.lock.json b/Applications/SseServer/src/SseServer/packages.lock.json index a0da58ea2e..5af4065b44 100644 --- a/Applications/SseServer/src/SseServer/packages.lock.json +++ b/Applications/SseServer/src/SseServer/packages.lock.json @@ -1016,23 +1016,11 @@ "Backbone.BuildingBlocks.Domain": "[1.0.0, )" } }, - "Backbone.Modules.Devices.Application": { + "Backbone.Modules.Devices.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Crypto": "[1.0.0, )", - "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Domain": "[1.0.0, )", - "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "OpenIddict.Core": "[7.6.0, 7.6.0]", - "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Devices.Domain": "[1.0.0, )" } }, "Backbone.Modules.Devices.Contracts": { @@ -1056,8 +1044,9 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", "FirebaseAdmin": "[3.6.0, 3.6.0]", "JWT": "[11.1.0, 11.1.0]", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1090,11 +1079,22 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Crypto": "[1.0.0, )", + "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", + "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", + "FluentValidation": "[12.1.1, 12.1.1]", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "OpenIddict.AspNetCore": "[7.6.0, 7.6.0]", + "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", + "Polly": "[8.7.0, 8.7.0]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/SseServer/test/SseServerTests/packages.lock.json b/Applications/SseServer/test/SseServerTests/packages.lock.json index 8b45e9ebd1..ff652d1bdd 100644 --- a/Applications/SseServer/test/SseServerTests/packages.lock.json +++ b/Applications/SseServer/test/SseServerTests/packages.lock.json @@ -1468,23 +1468,11 @@ "Backbone.BuildingBlocks.Domain": "[1.0.0, )" } }, - "Backbone.Modules.Devices.Application": { + "Backbone.Modules.Devices.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Crypto": "[1.0.0, )", - "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Domain": "[1.0.0, )", - "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "OpenIddict.Core": "[7.6.0, 7.6.0]", - "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Devices.Domain": "[1.0.0, )" } }, "Backbone.Modules.Devices.Contracts": { @@ -1508,8 +1496,9 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", "FirebaseAdmin": "[3.6.0, 3.6.0]", "JWT": "[11.1.0, 11.1.0]", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1542,11 +1531,22 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Crypto": "[1.0.0, )", + "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", + "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", + "FluentValidation": "[12.1.1, 12.1.1]", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "OpenIddict.AspNetCore": "[7.6.0, 7.6.0]", + "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", + "Polly": "[8.7.0, 8.7.0]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Backbone.Tests.ArchUnit/Backbone.Tests.ArchUnit.csproj b/Backbone.Tests.ArchUnit/Backbone.Tests.ArchUnit.csproj index 8b9083af9a..a5b37ac448 100644 --- a/Backbone.Tests.ArchUnit/Backbone.Tests.ArchUnit.csproj +++ b/Backbone.Tests.ArchUnit/Backbone.Tests.ArchUnit.csproj @@ -29,7 +29,8 @@ - + + @@ -45,7 +46,8 @@ - + + diff --git a/Backbone.Tests.ArchUnit/CleanArchitecture.cs b/Backbone.Tests.ArchUnit/CleanArchitecture.cs index b38b87df9a..736912a21a 100644 --- a/Backbone.Tests.ArchUnit/CleanArchitecture.cs +++ b/Backbone.Tests.ArchUnit/CleanArchitecture.cs @@ -94,7 +94,6 @@ public void ApplicationAssembliesShouldNotReferenceAspNetCore() { Types() .That().Are(APPLICATION_ASSEMBLIES) - .And().DoNotResideInAssemblyMatching("Backbone.Modules.Devices.Application") .Should().NotDependOnAnyTypesThat().ResideInNamespaceMatching("Microsoft.AspNetCore.*") .Because("this would violate Clean Architecture") .Check(Backbone.ARCHITECTURE); diff --git a/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs b/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs index 46f94530fa..169b10225a 100644 --- a/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs +++ b/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs @@ -1,6 +1,7 @@ using System.Reflection; using ArchUnitNET.Domain; using ArchUnitNET.xUnitV3; +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using FluentValidation; using MediatR; using Shouldly; @@ -11,7 +12,7 @@ namespace Backbone.Backbone.Tests.ArchUnit; public class VerticalSliceArchitecture { - private static readonly string[] MIGRATED_MODULES = ["Messages", "Tags", "Challenges", "Announcements", "Tokens", "Files"]; + private static readonly string[] MIGRATED_MODULES = ["Messages", "Tags", "Challenges", "Announcements", "Tokens", "Files", "Quotas", "Devices"]; [Fact] public void DomainsShouldNotDependOnOuterLayers() @@ -32,7 +33,7 @@ public void ContractsAndAbstractionsShouldNotDependOnImplementations() [Fact] public void InfrastructureShouldNotDependOnModulesOrApis() { - Types().That().ResideInAssemblyMatching(@"^Backbone\.Modules\.[^.]+\.Infrastructure[^,]*(,|$)") + Types().That().ResideInAssemblyMatching(@"^Backbone\.Modules\.[^.]+\.Infrastructure(?![^,]*Tests)[^,]*(,|$)") .Should().NotDependOnAnyTypesThat().ResideInAssemblyMatching(@"^Backbone\.(Modules\.[^.]+\.Module|.*Api|BuildingBlocks\.API)(,|$)") .Check(Backbone.ARCHITECTURE); } @@ -44,11 +45,14 @@ public void InfrastructureShouldNotDependOnModulesOrApis() [InlineData("Announcements")] [InlineData("Tokens")] [InlineData("Files")] + [InlineData("Quotas")] + [InlineData("Devices")] public void UseCasesShouldResideInTheirModule(string module) { var useCases = Classes().That().AreAssignableTo(typeof(IBaseRequest)) .Or().AreAssignableTo(typeof(IRequestHandler<>)) .Or().AreAssignableTo(typeof(IRequestHandler<,>)) + .Or().AreAssignableTo(typeof(IDomainEventHandler<>)) .Or().AreAssignableTo(typeof(IValidator)); Classes().That().ResideInAssemblyMatching($@"^Backbone\.Modules\.{module}\.(?!.*Tests).*$") @@ -64,6 +68,8 @@ public void UseCasesShouldResideInTheirModule(string module) [InlineData("Announcements")] [InlineData("Tokens")] [InlineData("Files")] + [InlineData("Quotas")] + [InlineData("Devices")] public void UseCasesShouldNotDependOnAdapters(string module) { Classes().That().Are(UseCases(module)).Should().NotDependOnAnyTypesThat() @@ -84,6 +90,8 @@ public void UseCasesShouldNotDependOnAdapters(string module) [InlineData("Announcements")] [InlineData("Tokens")] [InlineData("Files")] + [InlineData("Quotas")] + [InlineData("Devices")] public void ModulesShouldOnlyReferenceTheirOwnImplementationAndOtherContracts(string module) { foreach (var assembly in SolutionAssemblies().Where(assembly => assembly.GetName().Name == $"Backbone.Modules.{module}.Module")) diff --git a/Backbone.Tests.ArchUnit/packages.lock.json b/Backbone.Tests.ArchUnit/packages.lock.json index c9d0919d29..18fdfbdc71 100644 --- a/Backbone.Tests.ArchUnit/packages.lock.json +++ b/Backbone.Tests.ArchUnit/packages.lock.json @@ -1721,12 +1721,10 @@ "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", "Backbone.Modules.Announcements.Module": "[1.0.0, )", "Backbone.Modules.Challenges.Module": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", "Backbone.Modules.Devices.Module": "[1.0.0, )", "Backbone.Modules.Files.Module": "[1.0.0, )", "Backbone.Modules.Messages.Module": "[1.0.0, )", - "Backbone.Modules.Quotas.Application": "[1.0.0, )", "Backbone.Modules.Quotas.Module": "[1.0.0, )", "Backbone.Modules.Relationships.Application": "[1.0.0, )", "Backbone.Modules.Relationships.Module": "[1.0.0, )", @@ -1893,34 +1891,11 @@ "Microsoft.NET.Test.Sdk": "[18.8.1, 18.8.1]" } }, - "Backbone.Modules.Devices.Application": { + "Backbone.Modules.Devices.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Crypto": "[1.0.0, )", - "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Domain": "[1.0.0, )", - "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "OpenIddict.Core": "[7.6.0, 7.6.0]", - "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", - "Polly": "[8.7.0, 8.7.0]" - } - }, - "Backbone.Modules.Devices.Application.Tests": { - "type": "Project", - "dependencies": { - "Backbone.Modules.Devices.Application": "[1.0.0, )", - "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", - "Backbone.UnitTestTools": "[1.0.0, )", - "FakeItEasy": "[9.0.1, 9.0.1]", - "GitHubActionsTestLogger": "[3.0.5, 3.0.5]", - "Microsoft.NET.Test.Sdk": "[18.8.1, 18.8.1]" + "Backbone.Modules.Devices.Domain": "[1.0.0, )" } }, "Backbone.Modules.Devices.Contracts": { @@ -1954,8 +1929,9 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", "FirebaseAdmin": "[3.6.0, 3.6.0]", "JWT": "[11.1.0, 11.1.0]", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1988,6 +1964,7 @@ "type": "Project", "dependencies": { "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", + "Backbone.Modules.Devices.Module": "[1.0.0, )", "Backbone.UnitTestTools": "[1.0.0, )", "FakeItEasy": "[9.0.1, 9.0.1]", "GitHubActionsTestLogger": "[3.0.5, 3.0.5]", @@ -1998,14 +1975,36 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Crypto": "[1.0.0, )", + "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Devices.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", + "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", + "FluentValidation": "[12.1.1, 12.1.1]", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "OpenIddict.AspNetCore": "[7.6.0, 7.6.0]", + "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", + "Polly": "[8.7.0, 8.7.0]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, + "Backbone.Modules.Devices.Module.Tests": { + "type": "Project", + "dependencies": { + "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", + "Backbone.Modules.Devices.Module": "[1.0.0, )", + "Backbone.UnitTestTools": "[1.0.0, )", + "FakeItEasy": "[9.0.1, 9.0.1]", + "GitHubActionsTestLogger": "[3.0.5, 3.0.5]", + "Microsoft.NET.Test.Sdk": "[18.8.1, 18.8.1]" + } + }, "Backbone.Modules.Files.Abstractions": { "type": "Project", "dependencies": { @@ -2186,28 +2185,10 @@ "Microsoft.NET.Test.Sdk": "[18.8.1, 18.8.1]" } }, - "Backbone.Modules.Quotas.Application": { + "Backbone.Modules.Quotas.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Files.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Quotas.Contracts": "[1.0.0, )", - "Backbone.Modules.Quotas.Domain": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )" - } - }, - "Backbone.Modules.Quotas.Application.Tests": { - "type": "Project", - "dependencies": { - "Backbone.Modules.Quotas.Application": "[1.0.0, )", - "Backbone.UnitTestTools": "[1.0.0, )", - "FakeItEasy": "[9.0.1, 9.0.1]", - "GitHubActionsTestLogger": "[3.0.5, 3.0.5]", - "Microsoft.NET.Test.Sdk": "[18.8.1, 18.8.1]" + "Backbone.Modules.Quotas.Domain": "[1.0.0, )" } }, "Backbone.Modules.Quotas.Contracts": { @@ -2239,9 +2220,9 @@ "Backbone.Modules.Quotas.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Quotas.Application": "[1.0.0, )", + "Backbone.Modules.Quotas.Abstractions": "[1.0.0, )", "Backbone.Modules.Quotas.Domain": "[1.0.0, )", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -2279,13 +2260,30 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Quotas.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Files.Contracts": "[1.0.0, )", + "Backbone.Modules.Messages.Contracts": "[1.0.0, )", + "Backbone.Modules.Quotas.Abstractions": "[1.0.0, )", + "Backbone.Modules.Quotas.Contracts": "[1.0.0, )", + "Backbone.Modules.Quotas.Domain": "[1.0.0, )", "Backbone.Modules.Quotas.Infrastructure": "[1.0.0, )", "Backbone.Modules.Quotas.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Quotas.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, + "Backbone.Modules.Quotas.Module.Tests": { + "type": "Project", + "dependencies": { + "Backbone.Modules.Quotas.Module": "[1.0.0, )", + "Backbone.UnitTestTools": "[1.0.0, )", + "FakeItEasy": "[9.0.1, 9.0.1]", + "GitHubActionsTestLogger": "[3.0.5, 3.0.5]", + "Microsoft.NET.Test.Sdk": "[18.8.1, 18.8.1]" + } + }, "Backbone.Modules.Relationships.Application": { "type": "Project", "dependencies": { diff --git a/Backbone.slnx b/Backbone.slnx index 5c945d9a5b..026896cad5 100644 --- a/Backbone.slnx +++ b/Backbone.slnx @@ -126,7 +126,7 @@ - + @@ -135,7 +135,7 @@ - + @@ -173,7 +173,7 @@ - + @@ -182,7 +182,7 @@ - + diff --git a/BuildingBlocks/src/BuildingBlocks.API/MinimalApi/EndpointRouteBuilderExtensions.cs b/BuildingBlocks/src/BuildingBlocks.API/MinimalApi/EndpointRouteBuilderExtensions.cs index 5d158305c4..0e779810d6 100644 --- a/BuildingBlocks/src/BuildingBlocks.API/MinimalApi/EndpointRouteBuilderExtensions.cs +++ b/BuildingBlocks/src/BuildingBlocks.API/MinimalApi/EndpointRouteBuilderExtensions.cs @@ -7,6 +7,9 @@ namespace Backbone.BuildingBlocks.API.MinimalApi; public static class EndpointRouteBuilderExtensions { + public static TBuilder WithMinimalApiErrorHandling(this TBuilder builder) where TBuilder : IEndpointConventionBuilder => + builder.WithMetadata(MinimalApiEndpointMetadata.INSTANCE); + public static RouteGroupBuilder MapVersionedEndpointGroup(this IEndpointRouteBuilder endpoints, string route, string tag, int apiVersion, string authorizationPolicy) { diff --git a/BuildingBlocks/src/BuildingBlocks.API/MinimalApi/EnvelopeHttpResults.cs b/BuildingBlocks/src/BuildingBlocks.API/MinimalApi/EnvelopeHttpResults.cs index 4879fab298..ea589395a5 100644 --- a/BuildingBlocks/src/BuildingBlocks.API/MinimalApi/EnvelopeHttpResults.cs +++ b/BuildingBlocks/src/BuildingBlocks.API/MinimalApi/EnvelopeHttpResults.cs @@ -7,6 +7,8 @@ public static class EnvelopeHttpResults { public static IResult Ok(T result) => Results.Ok(HttpResponseEnvelope.CreateSuccess(result)); + public static IResult Created(string uri, T result) => Results.Created(uri, HttpResponseEnvelope.CreateSuccess(result)); + public static IResult CreatedAtRoute(string routeName, object routeValues, T result) => Results.CreatedAtRoute(routeName, routeValues, HttpResponseEnvelope.CreateSuccess(result)); diff --git a/BuildingBlocks/src/BuildingBlocks.API/packages.lock.json b/BuildingBlocks/src/BuildingBlocks.API/packages.lock.json index 2623a18da7..26a0e94acf 100644 --- a/BuildingBlocks/src/BuildingBlocks.API/packages.lock.json +++ b/BuildingBlocks/src/BuildingBlocks.API/packages.lock.json @@ -353,11 +353,6 @@ "Grpc.Core.Api": "2.71.0" } }, - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "MedallionTopologicalSort": { "type": "Transitive", "resolved": "1.0.0", @@ -1329,13 +1324,6 @@ "Polly": "[8.7.0, 8.7.0]" } }, - "Backbone.Crypto": { - "type": "Project", - "dependencies": { - "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", - "NSec.Cryptography": "[26.4.0, 26.4.0]" - } - }, "Backbone.DevelopmentKit.Identity": { "type": "Project", "dependencies": { @@ -1343,29 +1331,11 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Announcements.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Devices.Application": { + "Backbone.Modules.Devices.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Crypto": "[1.0.0, )", - "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Domain": "[1.0.0, )", - "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "OpenIddict.Core": "[7.6.0, 7.6.0]", - "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Devices.Domain": "[1.0.0, )" } }, "Backbone.Modules.Devices.Contracts": { @@ -1389,8 +1359,9 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", "FirebaseAdmin": "[3.6.0, 3.6.0]", "JWT": "[11.1.0, 11.1.0]", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1407,18 +1378,6 @@ "Polly": "[8.7.0, 8.7.0]" } }, - "Backbone.Modules.Synchronization.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Tokens.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Tooling": { "type": "Project", "dependencies": { @@ -1529,16 +1488,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", @@ -1813,15 +1762,6 @@ "Npgsql": "10.0.3" } }, - "NSec.Cryptography": { - "type": "CentralTransitive", - "requested": "[26.4.0, 26.4.0]", - "resolved": "26.4.0", - "contentHash": "0vsCtY5f+YgQROiWNqzgWp+l2pddfk9FkWoGV/bEo0MuEYPKlJWuoA8aOfO6qp3f+EnObKE3zSJhn1PspJeJVg==", - "dependencies": { - "libsodium": "[1.0.22, 1.0.23)" - } - }, "OpenIddict.AspNetCore": { "type": "CentralTransitive", "requested": "[7.6.0, 7.6.0]", @@ -1908,11 +1848,6 @@ "runtime.native.System.Data.SqlClient.sni": "4.4.0" } }, - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -1987,11 +1922,6 @@ "runtime.native.System.Data.SqlClient.sni": "4.4.0" } }, - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2066,11 +1996,6 @@ "runtime.native.System.Data.SqlClient.sni": "4.4.0" } }, - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2145,11 +2070,6 @@ "runtime.native.System.Data.SqlClient.sni": "4.4.0" } }, - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", diff --git a/BuildingBlocks/src/BuildingBlocks.Domain/AssemblyInfo.cs b/BuildingBlocks/src/BuildingBlocks.Domain/AssemblyInfo.cs index c2bf0ae909..6ac51f5009 100644 --- a/BuildingBlocks/src/BuildingBlocks.Domain/AssemblyInfo.cs +++ b/BuildingBlocks/src/BuildingBlocks.Domain/AssemblyInfo.cs @@ -1,4 +1,4 @@ using System.Runtime.CompilerServices; [assembly: InternalsVisibleTo("Backbone.BuildingBlocks.Application.Tests")] -[assembly: InternalsVisibleTo("Backbone.Modules.Quotas.Application.Tests")] +[assembly: InternalsVisibleTo("Backbone.Modules.Quotas.Module.Tests")] diff --git a/BuildingBlocks/test/BuildingBlocks.API.Tests/packages.lock.json b/BuildingBlocks/test/BuildingBlocks.API.Tests/packages.lock.json index f104e5363e..fd95e3f98f 100644 --- a/BuildingBlocks/test/BuildingBlocks.API.Tests/packages.lock.json +++ b/BuildingBlocks/test/BuildingBlocks.API.Tests/packages.lock.json @@ -224,11 +224,6 @@ "Grpc.Core.Api": "2.71.0" } }, - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "MedallionTopologicalSort": { "type": "Transitive", "resolved": "1.0.0", @@ -1383,13 +1378,6 @@ "Polly": "[8.7.0, 8.7.0]" } }, - "Backbone.Crypto": { - "type": "Project", - "dependencies": { - "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", - "NSec.Cryptography": "[26.4.0, 26.4.0]" - } - }, "Backbone.DevelopmentKit.Identity": { "type": "Project", "dependencies": { @@ -1397,29 +1385,11 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Announcements.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Devices.Application": { + "Backbone.Modules.Devices.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Crypto": "[1.0.0, )", - "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Domain": "[1.0.0, )", - "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "OpenIddict.Core": "[7.6.0, 7.6.0]", - "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Devices.Domain": "[1.0.0, )" } }, "Backbone.Modules.Devices.Contracts": { @@ -1443,8 +1413,9 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", "FirebaseAdmin": "[3.6.0, 3.6.0]", "JWT": "[11.1.0, 11.1.0]", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1461,18 +1432,6 @@ "Polly": "[8.7.0, 8.7.0]" } }, - "Backbone.Modules.Synchronization.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Tokens.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Tooling": { "type": "Project", "dependencies": { @@ -1644,16 +1603,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", @@ -1976,15 +1925,6 @@ "Npgsql": "10.0.3" } }, - "NSec.Cryptography": { - "type": "CentralTransitive", - "requested": "[26.4.0, 26.4.0]", - "resolved": "26.4.0", - "contentHash": "0vsCtY5f+YgQROiWNqzgWp+l2pddfk9FkWoGV/bEo0MuEYPKlJWuoA8aOfO6qp3f+EnObKE3zSJhn1PspJeJVg==", - "dependencies": { - "libsodium": "[1.0.22, 1.0.23)" - } - }, "OpenIddict.AspNetCore": { "type": "CentralTransitive", "requested": "[7.6.0, 7.6.0]", @@ -2186,11 +2126,6 @@ } }, "net10.0/linux-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2276,11 +2211,6 @@ } }, "net10.0/linux-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2366,11 +2296,6 @@ } }, "net10.0/osx-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2456,11 +2381,6 @@ } }, "net10.0/win-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", diff --git a/Modules/Announcements/src/Announcements.Module/packages.lock.json b/Modules/Announcements/src/Announcements.Module/packages.lock.json index 06e672fc89..6d0fa237ca 100644 --- a/Modules/Announcements/src/Announcements.Module/packages.lock.json +++ b/Modules/Announcements/src/Announcements.Module/packages.lock.json @@ -203,11 +203,6 @@ "Grpc.Core.Api": "2.71.0" } }, - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "MedallionTopologicalSort": { "type": "Transitive", "resolved": "1.0.0", @@ -1206,13 +1201,6 @@ "Polly": "[8.7.0, 8.7.0]" } }, - "Backbone.Crypto": { - "type": "Project", - "dependencies": { - "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", - "NSec.Cryptography": "[26.4.0, 26.4.0]" - } - }, "Backbone.DevelopmentKit.Identity": { "type": "Project", "dependencies": { @@ -1266,23 +1254,11 @@ "Backbone.Modules.Announcements.Infrastructure": "[1.0.0, )" } }, - "Backbone.Modules.Devices.Application": { + "Backbone.Modules.Devices.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Crypto": "[1.0.0, )", - "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Domain": "[1.0.0, )", - "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "OpenIddict.Core": "[7.6.0, 7.6.0]", - "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Devices.Domain": "[1.0.0, )" } }, "Backbone.Modules.Devices.Contracts": { @@ -1306,8 +1282,9 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", "FirebaseAdmin": "[3.6.0, 3.6.0]", "JWT": "[11.1.0, 11.1.0]", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1324,18 +1301,6 @@ "Polly": "[8.7.0, 8.7.0]" } }, - "Backbone.Modules.Synchronization.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Tokens.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Tooling": { "type": "Project", "dependencies": { @@ -1782,15 +1747,6 @@ "Npgsql": "10.0.3" } }, - "NSec.Cryptography": { - "type": "CentralTransitive", - "requested": "[26.4.0, 26.4.0]", - "resolved": "26.4.0", - "contentHash": "0vsCtY5f+YgQROiWNqzgWp+l2pddfk9FkWoGV/bEo0MuEYPKlJWuoA8aOfO6qp3f+EnObKE3zSJhn1PspJeJVg==", - "dependencies": { - "libsodium": "[1.0.22, 1.0.23)" - } - }, "OpenIddict.AspNetCore": { "type": "CentralTransitive", "requested": "[7.6.0, 7.6.0]", @@ -1966,11 +1922,6 @@ } }, "net10.0/linux-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2045,11 +1996,6 @@ } }, "net10.0/linux-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2124,11 +2070,6 @@ } }, "net10.0/osx-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2203,11 +2144,6 @@ } }, "net10.0/win-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", diff --git a/Modules/Announcements/test/Announcements.Module.Tests/packages.lock.json b/Modules/Announcements/test/Announcements.Module.Tests/packages.lock.json index dc316e8da7..d656363133 100644 --- a/Modules/Announcements/test/Announcements.Module.Tests/packages.lock.json +++ b/Modules/Announcements/test/Announcements.Module.Tests/packages.lock.json @@ -243,11 +243,6 @@ "Grpc.Core.Api": "2.71.0" } }, - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "MedallionTopologicalSort": { "type": "Transitive", "resolved": "1.0.0", @@ -1407,13 +1402,6 @@ "Polly": "[8.7.0, 8.7.0]" } }, - "Backbone.Crypto": { - "type": "Project", - "dependencies": { - "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", - "NSec.Cryptography": "[26.4.0, 26.4.0]" - } - }, "Backbone.DevelopmentKit.Identity": { "type": "Project", "dependencies": { @@ -1481,23 +1469,11 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Devices.Application": { + "Backbone.Modules.Devices.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Crypto": "[1.0.0, )", - "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Domain": "[1.0.0, )", - "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "OpenIddict.Core": "[7.6.0, 7.6.0]", - "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Devices.Domain": "[1.0.0, )" } }, "Backbone.Modules.Devices.Contracts": { @@ -1521,8 +1497,9 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", "FirebaseAdmin": "[3.6.0, 3.6.0]", "JWT": "[11.1.0, 11.1.0]", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1539,18 +1516,6 @@ "Polly": "[8.7.0, 8.7.0]" } }, - "Backbone.Modules.Synchronization.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Tokens.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Tooling": { "type": "Project", "dependencies": { @@ -2054,15 +2019,6 @@ "Npgsql": "10.0.3" } }, - "NSec.Cryptography": { - "type": "CentralTransitive", - "requested": "[26.4.0, 26.4.0]", - "resolved": "26.4.0", - "contentHash": "0vsCtY5f+YgQROiWNqzgWp+l2pddfk9FkWoGV/bEo0MuEYPKlJWuoA8aOfO6qp3f+EnObKE3zSJhn1PspJeJVg==", - "dependencies": { - "libsodium": "[1.0.22, 1.0.23)" - } - }, "OpenIddict.AspNetCore": { "type": "CentralTransitive", "requested": "[7.6.0, 7.6.0]", @@ -2264,11 +2220,6 @@ } }, "net10.0/linux-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2354,11 +2305,6 @@ } }, "net10.0/linux-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2444,11 +2390,6 @@ } }, "net10.0/osx-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2534,11 +2475,6 @@ } }, "net10.0/win-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", diff --git a/Modules/Challenges/src/Challenges.Module/packages.lock.json b/Modules/Challenges/src/Challenges.Module/packages.lock.json index bf2f3ee0ef..31a2246960 100644 --- a/Modules/Challenges/src/Challenges.Module/packages.lock.json +++ b/Modules/Challenges/src/Challenges.Module/packages.lock.json @@ -203,11 +203,6 @@ "Grpc.Core.Api": "2.71.0" } }, - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "MedallionTopologicalSort": { "type": "Transitive", "resolved": "1.0.0", @@ -1206,13 +1201,6 @@ "Polly": "[8.7.0, 8.7.0]" } }, - "Backbone.Crypto": { - "type": "Project", - "dependencies": { - "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", - "NSec.Cryptography": "[26.4.0, 26.4.0]" - } - }, "Backbone.DevelopmentKit.Identity": { "type": "Project", "dependencies": { @@ -1220,12 +1208,6 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Announcements.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Modules.Challenges.Abstractions": { "type": "Project", "dependencies": { @@ -1263,23 +1245,11 @@ "Backbone.Modules.Challenges.Infrastructure": "[1.0.0, )" } }, - "Backbone.Modules.Devices.Application": { + "Backbone.Modules.Devices.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Crypto": "[1.0.0, )", - "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Domain": "[1.0.0, )", - "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "OpenIddict.Core": "[7.6.0, 7.6.0]", - "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Devices.Domain": "[1.0.0, )" } }, "Backbone.Modules.Devices.Contracts": { @@ -1303,8 +1273,9 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", "FirebaseAdmin": "[3.6.0, 3.6.0]", "JWT": "[11.1.0, 11.1.0]", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1321,18 +1292,6 @@ "Polly": "[8.7.0, 8.7.0]" } }, - "Backbone.Modules.Synchronization.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Tokens.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Tooling": { "type": "Project", "dependencies": { @@ -1779,15 +1738,6 @@ "Npgsql": "10.0.3" } }, - "NSec.Cryptography": { - "type": "CentralTransitive", - "requested": "[26.4.0, 26.4.0]", - "resolved": "26.4.0", - "contentHash": "0vsCtY5f+YgQROiWNqzgWp+l2pddfk9FkWoGV/bEo0MuEYPKlJWuoA8aOfO6qp3f+EnObKE3zSJhn1PspJeJVg==", - "dependencies": { - "libsodium": "[1.0.22, 1.0.23)" - } - }, "OpenIddict.AspNetCore": { "type": "CentralTransitive", "requested": "[7.6.0, 7.6.0]", @@ -1963,11 +1913,6 @@ } }, "net10.0/linux-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2042,11 +1987,6 @@ } }, "net10.0/linux-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2121,11 +2061,6 @@ } }, "net10.0/osx-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2200,11 +2135,6 @@ } }, "net10.0/win-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", diff --git a/Modules/Challenges/test/Challenges.Module.Tests/packages.lock.json b/Modules/Challenges/test/Challenges.Module.Tests/packages.lock.json index c0a81c80e6..a1b1c73d30 100644 --- a/Modules/Challenges/test/Challenges.Module.Tests/packages.lock.json +++ b/Modules/Challenges/test/Challenges.Module.Tests/packages.lock.json @@ -233,11 +233,6 @@ "Grpc.Core.Api": "2.71.0" } }, - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "MedallionTopologicalSort": { "type": "Transitive", "resolved": "1.0.0", @@ -1392,13 +1387,6 @@ "Polly": "[8.7.0, 8.7.0]" } }, - "Backbone.Crypto": { - "type": "Project", - "dependencies": { - "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", - "NSec.Cryptography": "[26.4.0, 26.4.0]" - } - }, "Backbone.DevelopmentKit.Identity": { "type": "Project", "dependencies": { @@ -1406,12 +1394,6 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Announcements.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Modules.Challenges.Abstractions": { "type": "Project", "dependencies": { @@ -1463,23 +1445,11 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Devices.Application": { + "Backbone.Modules.Devices.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Crypto": "[1.0.0, )", - "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Domain": "[1.0.0, )", - "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "OpenIddict.Core": "[7.6.0, 7.6.0]", - "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Devices.Domain": "[1.0.0, )" } }, "Backbone.Modules.Devices.Contracts": { @@ -1503,8 +1473,9 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", "FirebaseAdmin": "[3.6.0, 3.6.0]", "JWT": "[11.1.0, 11.1.0]", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1521,18 +1492,6 @@ "Polly": "[8.7.0, 8.7.0]" } }, - "Backbone.Modules.Synchronization.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Tokens.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Tooling": { "type": "Project", "dependencies": { @@ -2027,15 +1986,6 @@ "Npgsql": "10.0.3" } }, - "NSec.Cryptography": { - "type": "CentralTransitive", - "requested": "[26.4.0, 26.4.0]", - "resolved": "26.4.0", - "contentHash": "0vsCtY5f+YgQROiWNqzgWp+l2pddfk9FkWoGV/bEo0MuEYPKlJWuoA8aOfO6qp3f+EnObKE3zSJhn1PspJeJVg==", - "dependencies": { - "libsodium": "[1.0.22, 1.0.23)" - } - }, "OpenIddict.AspNetCore": { "type": "CentralTransitive", "requested": "[7.6.0, 7.6.0]", @@ -2237,11 +2187,6 @@ } }, "net10.0/linux-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2327,11 +2272,6 @@ } }, "net10.0/linux-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2417,11 +2357,6 @@ } }, "net10.0/osx-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2507,11 +2442,6 @@ } }, "net10.0/win-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", diff --git a/Modules/Devices/src/Devices.Abstractions/DeviceRegistrationErrors.cs b/Modules/Devices/src/Devices.Abstractions/DeviceRegistrationErrors.cs new file mode 100644 index 0000000000..ec3c29411b --- /dev/null +++ b/Modules/Devices/src/Devices.Abstractions/DeviceRegistrationErrors.cs @@ -0,0 +1,10 @@ +using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; + +namespace Backbone.Modules.Devices.Abstractions; + +public static class DeviceRegistrationErrors +{ + public static ApplicationError RegistrationFailed(string message = "") => new( + "error.platform.validation.device.registrationFailed", + string.IsNullOrEmpty(message) ? "The registration of the device failed." : message); +} diff --git a/Modules/Devices/src/Devices.Abstractions/Devices.Abstractions.csproj b/Modules/Devices/src/Devices.Abstractions/Devices.Abstractions.csproj new file mode 100644 index 0000000000..99bd3683ca --- /dev/null +++ b/Modules/Devices/src/Devices.Abstractions/Devices.Abstractions.csproj @@ -0,0 +1,6 @@ + + + + + + diff --git a/Modules/Devices/src/Devices.Application/Infrastructure/Persistence/Repository/IChallengesRepository.cs b/Modules/Devices/src/Devices.Abstractions/IChallengesRepository.cs similarity index 68% rename from Modules/Devices/src/Devices.Application/Infrastructure/Persistence/Repository/IChallengesRepository.cs rename to Modules/Devices/src/Devices.Abstractions/IChallengesRepository.cs index f54ae75281..31d73d80a5 100644 --- a/Modules/Devices/src/Devices.Application/Infrastructure/Persistence/Repository/IChallengesRepository.cs +++ b/Modules/Devices/src/Devices.Abstractions/IChallengesRepository.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Devices.Domain.Entities; -namespace Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +namespace Backbone.Modules.Devices.Abstractions; public interface IChallengesRepository { diff --git a/Modules/Devices/src/Devices.Abstractions/IDevicePasswordService.cs b/Modules/Devices/src/Devices.Abstractions/IDevicePasswordService.cs new file mode 100644 index 0000000000..06a98eab1e --- /dev/null +++ b/Modules/Devices/src/Devices.Abstractions/IDevicePasswordService.cs @@ -0,0 +1,8 @@ +using Backbone.Modules.Devices.Domain.Entities.Identities; + +namespace Backbone.Modules.Devices.Abstractions; + +public interface IDevicePasswordService +{ + Task ChangePassword(ApplicationUser user, string oldPassword, string newPassword); +} diff --git a/Modules/Devices/src/Devices.Application/Infrastructure/Persistence/Repository/IIdentitiesRepository.cs b/Modules/Devices/src/Devices.Abstractions/IIdentitiesRepository.cs similarity index 97% rename from Modules/Devices/src/Devices.Application/Infrastructure/Persistence/Repository/IIdentitiesRepository.cs rename to Modules/Devices/src/Devices.Abstractions/IIdentitiesRepository.cs index 9c3be0ef62..53e052fcd0 100644 --- a/Modules/Devices/src/Devices.Application/Infrastructure/Persistence/Repository/IIdentitiesRepository.cs +++ b/Modules/Devices/src/Devices.Abstractions/IIdentitiesRepository.cs @@ -4,7 +4,7 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Devices.Domain.Entities.Identities; -namespace Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +namespace Backbone.Modules.Devices.Abstractions; public interface IIdentitiesRepository { diff --git a/Modules/Devices/src/Devices.Application/Infrastructure/Persistence/Repository/IOAuthClientsRepository.cs b/Modules/Devices/src/Devices.Abstractions/IOAuthClientsRepository.cs similarity index 84% rename from Modules/Devices/src/Devices.Application/Infrastructure/Persistence/Repository/IOAuthClientsRepository.cs rename to Modules/Devices/src/Devices.Abstractions/IOAuthClientsRepository.cs index 0ec6ba3e2e..71c272237b 100644 --- a/Modules/Devices/src/Devices.Application/Infrastructure/Persistence/Repository/IOAuthClientsRepository.cs +++ b/Modules/Devices/src/Devices.Abstractions/IOAuthClientsRepository.cs @@ -1,12 +1,13 @@ using Backbone.Modules.Devices.Domain.Entities; -namespace Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +namespace Backbone.Modules.Devices.Abstractions; public interface IOAuthClientsRepository { Task> List(CancellationToken cancellationToken, bool track = false); Task> CountIdentities(List clients, CancellationToken cancellationToken); Task Get(string clientId, CancellationToken cancellationToken, bool track = false); + Task ValidateSecret(string clientId, string secret, CancellationToken cancellationToken); Task Exists(string clientId, CancellationToken cancellationToken); Task Add(OAuthClient client, string clientSecret, CancellationToken cancellationToken); Task Update(OAuthClient client, CancellationToken cancellationToken); diff --git a/Modules/Devices/src/Devices.Application/Infrastructure/Persistence/Repository/IPnsRegistrationsRepository.cs b/Modules/Devices/src/Devices.Abstractions/IPnsRegistrationsRepository.cs similarity index 90% rename from Modules/Devices/src/Devices.Application/Infrastructure/Persistence/Repository/IPnsRegistrationsRepository.cs rename to Modules/Devices/src/Devices.Abstractions/IPnsRegistrationsRepository.cs index 35068d7c74..97e10048b6 100644 --- a/Modules/Devices/src/Devices.Application/Infrastructure/Persistence/Repository/IPnsRegistrationsRepository.cs +++ b/Modules/Devices/src/Devices.Abstractions/IPnsRegistrationsRepository.cs @@ -2,7 +2,7 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications; -namespace Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +namespace Backbone.Modules.Devices.Abstractions; public interface IPnsRegistrationsRepository { diff --git a/Modules/Devices/src/Devices.Application/Infrastructure/Persistence/Repository/IRelationshipTemplatesRepository.cs b/Modules/Devices/src/Devices.Abstractions/IRelationshipTemplatesRepository.cs similarity index 76% rename from Modules/Devices/src/Devices.Application/Infrastructure/Persistence/Repository/IRelationshipTemplatesRepository.cs rename to Modules/Devices/src/Devices.Abstractions/IRelationshipTemplatesRepository.cs index a97d321f4e..abe4aeda45 100644 --- a/Modules/Devices/src/Devices.Application/Infrastructure/Persistence/Repository/IRelationshipTemplatesRepository.cs +++ b/Modules/Devices/src/Devices.Abstractions/IRelationshipTemplatesRepository.cs @@ -1,7 +1,7 @@ using System.Linq.Expressions; using Backbone.Modules.Devices.Domain.Aggregates.Relationships; -namespace Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +namespace Backbone.Modules.Devices.Abstractions; public interface IRelationshipTemplatesRepository { diff --git a/Modules/Devices/src/Devices.Application/Infrastructure/Persistence/Repository/IRelationshipsRepository.cs b/Modules/Devices/src/Devices.Abstractions/IRelationshipsRepository.cs similarity index 84% rename from Modules/Devices/src/Devices.Application/Infrastructure/Persistence/Repository/IRelationshipsRepository.cs rename to Modules/Devices/src/Devices.Abstractions/IRelationshipsRepository.cs index d3675cc6f3..b43a58aae1 100644 --- a/Modules/Devices/src/Devices.Application/Infrastructure/Persistence/Repository/IRelationshipsRepository.cs +++ b/Modules/Devices/src/Devices.Abstractions/IRelationshipsRepository.cs @@ -2,7 +2,7 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Devices.Domain.Aggregates.Relationships; -namespace Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +namespace Backbone.Modules.Devices.Abstractions; public interface IRelationshipsRepository { diff --git a/Modules/Devices/src/Devices.Application/Infrastructure/Persistence/Repository/ITiersRepository.cs b/Modules/Devices/src/Devices.Abstractions/ITiersRepository.cs similarity index 93% rename from Modules/Devices/src/Devices.Application/Infrastructure/Persistence/Repository/ITiersRepository.cs rename to Modules/Devices/src/Devices.Abstractions/ITiersRepository.cs index f4e3a7bdf1..db752a7562 100644 --- a/Modules/Devices/src/Devices.Application/Infrastructure/Persistence/Repository/ITiersRepository.cs +++ b/Modules/Devices/src/Devices.Abstractions/ITiersRepository.cs @@ -2,7 +2,7 @@ using Backbone.BuildingBlocks.Application.Pagination; using Backbone.Modules.Devices.Domain.Aggregates.Tier; -namespace Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +namespace Backbone.Modules.Devices.Abstractions; public interface ITiersRepository { diff --git a/Modules/Devices/src/Devices.Application/OnlyOneActiveDeletionProcessAllowedException.cs b/Modules/Devices/src/Devices.Abstractions/OnlyOneActiveDeletionProcessAllowedException.cs similarity index 84% rename from Modules/Devices/src/Devices.Application/OnlyOneActiveDeletionProcessAllowedException.cs rename to Modules/Devices/src/Devices.Abstractions/OnlyOneActiveDeletionProcessAllowedException.cs index 3cf5b05400..dae952f054 100644 --- a/Modules/Devices/src/Devices.Application/OnlyOneActiveDeletionProcessAllowedException.cs +++ b/Modules/Devices/src/Devices.Abstractions/OnlyOneActiveDeletionProcessAllowedException.cs @@ -1,4 +1,4 @@ -namespace Backbone.Modules.Devices.Application; +namespace Backbone.Modules.Devices.Abstractions; public class OnlyOneActiveDeletionProcessAllowedException : Exception { diff --git a/Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/IPushNotificationRegistrationService.cs b/Modules/Devices/src/Devices.Abstractions/PushNotifications/IPushNotificationRegistrationService.cs similarity index 86% rename from Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/IPushNotificationRegistrationService.cs rename to Modules/Devices/src/Devices.Abstractions/PushNotifications/IPushNotificationRegistrationService.cs index ea14fd3765..b28bbf2135 100644 --- a/Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/IPushNotificationRegistrationService.cs +++ b/Modules/Devices/src/Devices.Abstractions/PushNotifications/IPushNotificationRegistrationService.cs @@ -1,8 +1,8 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications; using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications.Handles; +using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications; -namespace Backbone.Modules.Devices.Application.Infrastructure.PushNotifications; +namespace Backbone.Modules.Devices.Abstractions.PushNotifications; public interface IPushNotificationRegistrationService { diff --git a/Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/NotificationIdAttribute.cs b/Modules/Devices/src/Devices.Abstractions/PushNotifications/NotificationIdAttribute.cs similarity index 80% rename from Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/NotificationIdAttribute.cs rename to Modules/Devices/src/Devices.Abstractions/PushNotifications/NotificationIdAttribute.cs index 3273b57e9f..7da56c306f 100644 --- a/Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/NotificationIdAttribute.cs +++ b/Modules/Devices/src/Devices.Abstractions/PushNotifications/NotificationIdAttribute.cs @@ -1,4 +1,4 @@ -namespace Backbone.Modules.Devices.Application.Infrastructure.PushNotifications; +namespace Backbone.Modules.Devices.Abstractions.PushNotifications; public class NotificationIdAttribute : Attribute { diff --git a/Modules/Quotas/src/Quotas.Application/packages.lock.json b/Modules/Devices/src/Devices.Abstractions/packages.lock.json similarity index 98% rename from Modules/Quotas/src/Quotas.Application/packages.lock.json rename to Modules/Devices/src/Devices.Abstractions/packages.lock.json index 36f475bca6..4811170bbb 100644 --- a/Modules/Quotas/src/Quotas.Application/packages.lock.json +++ b/Modules/Devices/src/Devices.Abstractions/packages.lock.json @@ -736,44 +736,15 @@ "Backbone.BuildingBlocks.Domain": "[1.0.0, )" } }, - "Backbone.Modules.Files.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Messages.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Quotas.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Quotas.Domain": { + "Backbone.Modules.Devices.Domain": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Domain": "[1.0.0, )", "Backbone.DevelopmentKit.Identity": "[1.0.0, )", - "Backbone.Modules.Quotas.Contracts": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", "Backbone.Tooling": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]" - } - }, - "Backbone.Modules.Relationships.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Tokens.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" + "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]" } }, "Backbone.Tooling": { @@ -906,6 +877,16 @@ "resolved": "2.0.1", "contentHash": "FYv95bNT4UwcNA+G/J1oX5OpRiSUxteXaUt2BJbRSdRNiIUNbggJF69wy6mnk2wYToaanpdXZdCwVylt96MpwQ==" }, + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "/ZV8RMWbWob1ZGsF5f1wVJNNlFLPKCf2ba834PpQiNhirVQ/ksup5SujtuUsvByHEZgv+9dmjC/4Xdi75axmXQ==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "10.0.10", + "Microsoft.Extensions.Identity.Stores": "10.0.10" + } + }, "Microsoft.EntityFrameworkCore": { "type": "CentralTransitive", "requested": "[10.0.10, 10.0.10]", @@ -1097,6 +1078,17 @@ "Microsoft.Extensions.Options": "10.0.10" } }, + "Microsoft.Extensions.Identity.Stores": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "WMG/9wPJPnwU2w1R/WPLO/RL2UpGpBhw9z6odAAUkFdZypzzXl620FJWEoPpuBUq6Q4GYgMg0FQVRCO6gO4MQQ==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "10.0.10", + "Microsoft.Extensions.Identity.Core": "10.0.10", + "Microsoft.Extensions.Logging": "10.0.10" + } + }, "Microsoft.Extensions.Logging": { "type": "CentralTransitive", "requested": "[10.0.10, 10.0.10]", diff --git a/Modules/Devices/src/Devices.Application/Clients/Queries/GetClient/GetClientQuery.cs b/Modules/Devices/src/Devices.Application/Clients/Queries/GetClient/GetClientQuery.cs deleted file mode 100644 index 3ae7e695d7..0000000000 --- a/Modules/Devices/src/Devices.Application/Clients/Queries/GetClient/GetClientQuery.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Backbone.Modules.Devices.Application.Clients.DTOs; -using MediatR; - -namespace Backbone.Modules.Devices.Application.Clients.Queries.GetClient; - -public class GetClientQuery : IRequest -{ - public required string Id { get; set; } -} diff --git a/Modules/Devices/src/Devices.Application/Devices.Application.csproj b/Modules/Devices/src/Devices.Application/Devices.Application.csproj deleted file mode 100644 index 8c027a5e96..0000000000 --- a/Modules/Devices/src/Devices.Application/Devices.Application.csproj +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/Modules/Devices/src/Devices.Application/Devices/Commands/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs b/Modules/Devices/src/Devices.Application/Devices/Commands/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs deleted file mode 100644 index 7edfa639e9..0000000000 --- a/Modules/Devices/src/Devices.Application/Devices/Commands/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs +++ /dev/null @@ -1,5 +0,0 @@ -using MediatR; - -namespace Backbone.Modules.Devices.Application.Devices.Commands.ExecuteHousekeeping; - -public class ExecuteHousekeepingCommand : IRequest; diff --git a/Modules/Devices/src/Devices.Application/Devices/Commands/RegisterDevice/Handler.cs b/Modules/Devices/src/Devices.Application/Devices/Commands/RegisterDevice/Handler.cs deleted file mode 100644 index 6211bc931c..0000000000 --- a/Modules/Devices/src/Devices.Application/Devices/Commands/RegisterDevice/Handler.cs +++ /dev/null @@ -1,120 +0,0 @@ -using System.Dynamic; -using System.Globalization; -using System.Text.Json; -using System.Text.Json.Serialization; -using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; -using Backbone.Modules.Devices.Application.Devices.DTOs; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Devices.Domain.Entities.Identities; -using MediatR; -using Microsoft.Extensions.Logging; -using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; - -namespace Backbone.Modules.Devices.Application.Devices.Commands.RegisterDevice; - -public class Handler : IRequestHandler -{ - private readonly ChallengeValidator _challengeValidator; - private readonly ILogger _logger; - private readonly IUserContext _userContext; - private readonly IIdentitiesRepository _identitiesRepository; - - public Handler(ChallengeValidator challengeValidator, IUserContext userContext, ILogger logger, IIdentitiesRepository identitiesRepository) - { - _challengeValidator = challengeValidator; - _userContext = userContext; - _logger = logger; - _identitiesRepository = identitiesRepository; - } - - public async Task Handle(RegisterDeviceCommand command, CancellationToken cancellationToken) - { - var identity = await _identitiesRepository.Get(_userContext.GetAddress(), cancellationToken, track: true) ?? throw new NotFoundException(nameof(Identity)); - - if (command.IsBackupDevice && await _identitiesRepository.HasBackupDevice(identity.Address, cancellationToken)) - throw new ApplicationException(ApplicationErrors.Devices.BackupDeviceAlreadyExists()); - - await _challengeValidator.Validate(command.SignedChallenge, PublicKey.FromBytes(identity.PublicKey)); - _logger.LogTrace("Successfully validated challenge."); - - var communicationLanguageResult = CommunicationLanguage.Create(command.CommunicationLanguage); - - var newDevice = identity.AddDevice(communicationLanguageResult.Value, _userContext.GetDeviceId(), command.IsBackupDevice); - - await _identitiesRepository.UpdateWithNewDevice(identity, command.DevicePassword); - - _logger.CreatedDevice(); - - return new RegisterDeviceResponse(newDevice); - } -} - -public class DynamicJsonConverter : JsonConverter -{ - public override dynamic Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - return reader.TokenType switch - { - JsonTokenType.True => true, - JsonTokenType.False => false, - JsonTokenType.Number => reader.TryGetInt64(out var i) ? i : reader.GetDouble(), - JsonTokenType.String => reader.TryGetDateTime(out var datetime) ? datetime.ToString(CultureInfo.InvariantCulture) : reader.GetString()!, - JsonTokenType.StartObject => ReadObject(JsonDocument.ParseValue(ref reader).RootElement), - _ => JsonDocument.ParseValue(ref reader).RootElement.Clone() // use JsonElement as fallback. - }; - } - - private object ReadObject(JsonElement jsonElement) - { - IDictionary expandoObject = new ExpandoObject(); - foreach (var obj in jsonElement.EnumerateObject()) - { - var k = obj.Name; - var value = ReadValue(obj.Value); - expandoObject[k] = value; - } - - return expandoObject; - } - - private object? ReadValue(JsonElement jsonElement) - { - return jsonElement.ValueKind switch - { - JsonValueKind.Object => ReadObject(jsonElement), - JsonValueKind.Array => ReadList(jsonElement), - JsonValueKind.String => jsonElement.GetString()!, - JsonValueKind.Number => jsonElement.TryGetInt64(out var i) ? i : jsonElement.GetDouble(), - JsonValueKind.True => true, - JsonValueKind.False => false, - JsonValueKind.Undefined => null, - JsonValueKind.Null => null, - _ => throw new ArgumentOutOfRangeException(nameof(jsonElement.ValueKind)) - }; - } - - private List? ReadList(JsonElement jsonElement) - { - var list = new List(); - jsonElement.EnumerateArray().ToList().ForEach(j => list.Add(ReadValue(j))); - return list.Count == 0 ? null : list; - } - - public override void Write(Utf8JsonWriter writer, - object value, - JsonSerializerOptions options) - { - JsonSerializer.Serialize(writer, value, options); - } -} - -internal static partial class DeleteDeviceLogs -{ - [LoggerMessage( - EventId = 219823, - EventName = "Devices.RegisterDevice.RegisteredDevice", - Level = LogLevel.Information, - Message = "Successfully created device.")] - public static partial void CreatedDevice(this ILogger logger); -} diff --git a/Modules/Devices/src/Devices.Application/Devices/Queries/GetActiveDevice/GetActiveDeviceQuery.cs b/Modules/Devices/src/Devices.Application/Devices/Queries/GetActiveDevice/GetActiveDeviceQuery.cs deleted file mode 100644 index e3b71c6d2d..0000000000 --- a/Modules/Devices/src/Devices.Application/Devices/Queries/GetActiveDevice/GetActiveDeviceQuery.cs +++ /dev/null @@ -1,6 +0,0 @@ -using Backbone.Modules.Devices.Application.Devices.DTOs; -using MediatR; - -namespace Backbone.Modules.Devices.Application.Devices.Queries.GetActiveDevice; - -public class GetActiveDeviceQuery : IRequest; diff --git a/Modules/Devices/src/Devices.Application/Identities/Commands/ChangeFeatureFlags/ChangeFeatureFlagsCommand.cs b/Modules/Devices/src/Devices.Application/Identities/Commands/ChangeFeatureFlags/ChangeFeatureFlagsCommand.cs deleted file mode 100644 index fd6bc9a879..0000000000 --- a/Modules/Devices/src/Devices.Application/Identities/Commands/ChangeFeatureFlags/ChangeFeatureFlagsCommand.cs +++ /dev/null @@ -1,5 +0,0 @@ -using MediatR; - -namespace Backbone.Modules.Devices.Application.Identities.Commands.ChangeFeatureFlags; - -public class ChangeFeatureFlagsCommand : Dictionary, IRequest; diff --git a/Modules/Devices/src/Devices.Application/Identities/Commands/SendDeletionProcessGracePeriodReminders/SendDeletionProcessGracePeriodRemindersCommand.cs b/Modules/Devices/src/Devices.Application/Identities/Commands/SendDeletionProcessGracePeriodReminders/SendDeletionProcessGracePeriodRemindersCommand.cs deleted file mode 100644 index a48b3aeec3..0000000000 --- a/Modules/Devices/src/Devices.Application/Identities/Commands/SendDeletionProcessGracePeriodReminders/SendDeletionProcessGracePeriodRemindersCommand.cs +++ /dev/null @@ -1,5 +0,0 @@ -using MediatR; - -namespace Backbone.Modules.Devices.Application.Identities.Commands.SendDeletionProcessGracePeriodReminders; - -public class SendDeletionProcessGracePeriodRemindersCommand : IRequest; diff --git a/Modules/Devices/src/Devices.Application/Identities/Commands/TriggerRipeDeletionProcesses/TriggerRipeDeletionProcessesCommand.cs b/Modules/Devices/src/Devices.Application/Identities/Commands/TriggerRipeDeletionProcesses/TriggerRipeDeletionProcessesCommand.cs deleted file mode 100644 index 18c73b50bd..0000000000 --- a/Modules/Devices/src/Devices.Application/Identities/Commands/TriggerRipeDeletionProcesses/TriggerRipeDeletionProcessesCommand.cs +++ /dev/null @@ -1,5 +0,0 @@ -using MediatR; - -namespace Backbone.Modules.Devices.Application.Identities.Commands.TriggerRipeDeletionProcesses; - -public class TriggerRipeDeletionProcessesCommand : IRequest; diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/GetOwnIdentity/GetOwnIdentityQuery.cs b/Modules/Devices/src/Devices.Application/Identities/Queries/GetOwnIdentity/GetOwnIdentityQuery.cs deleted file mode 100644 index 16cc3773dc..0000000000 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/GetOwnIdentity/GetOwnIdentityQuery.cs +++ /dev/null @@ -1,5 +0,0 @@ -using MediatR; - -namespace Backbone.Modules.Devices.Application.Identities.Queries.GetOwnIdentity; - -public class GetOwnIdentityQuery : IRequest; diff --git a/Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/Announcements/NewAnnouncementPushNotification.cs b/Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/Announcements/NewAnnouncementPushNotification.cs deleted file mode 100644 index efecf7f64c..0000000000 --- a/Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/Announcements/NewAnnouncementPushNotification.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Backbone.BuildingBlocks.Application.PushNotifications; - -namespace Backbone.Modules.Devices.Application.Infrastructure.PushNotifications.Announcements; - -public class NewAnnouncementPushNotification : IPushNotification -{ - public required string AnnouncementId { get; set; } -} diff --git a/Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/DeletionProcess/DeletionStartsPushNotification.cs b/Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/DeletionProcess/DeletionStartsPushNotification.cs deleted file mode 100644 index aa5b411d42..0000000000 --- a/Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/DeletionProcess/DeletionStartsPushNotification.cs +++ /dev/null @@ -1,5 +0,0 @@ -using Backbone.BuildingBlocks.Application.PushNotifications; - -namespace Backbone.Modules.Devices.Application.Infrastructure.PushNotifications.DeletionProcess; - -public record DeletionStartsPushNotification : IPushNotification; diff --git a/Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/Device/BackupDeviceUsedPushNotification.cs b/Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/Device/BackupDeviceUsedPushNotification.cs deleted file mode 100644 index 02d365413f..0000000000 --- a/Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/Device/BackupDeviceUsedPushNotification.cs +++ /dev/null @@ -1,5 +0,0 @@ -using Backbone.BuildingBlocks.Application.PushNotifications; - -namespace Backbone.Modules.Devices.Application.Infrastructure.PushNotifications.Device; - -public class BackupDeviceUsedPushNotification : IPushNotification; diff --git a/Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/Tokens/TokenLockedPushNotification.cs b/Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/Tokens/TokenLockedPushNotification.cs deleted file mode 100644 index 0af81d90aa..0000000000 --- a/Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/Tokens/TokenLockedPushNotification.cs +++ /dev/null @@ -1,5 +0,0 @@ -using Backbone.BuildingBlocks.Application.PushNotifications; - -namespace Backbone.Modules.Devices.Application.Infrastructure.PushNotifications.Tokens; - -public class TokenLockedPushNotification : IPushNotification; diff --git a/Modules/Devices/src/Devices.Application/PushNotifications/Commands/DeleteDeviceRegistration/DeleteDeviceRegistrationCommand.cs b/Modules/Devices/src/Devices.Application/PushNotifications/Commands/DeleteDeviceRegistration/DeleteDeviceRegistrationCommand.cs deleted file mode 100644 index e22640c7d8..0000000000 --- a/Modules/Devices/src/Devices.Application/PushNotifications/Commands/DeleteDeviceRegistration/DeleteDeviceRegistrationCommand.cs +++ /dev/null @@ -1,5 +0,0 @@ -using MediatR; - -namespace Backbone.Modules.Devices.Application.PushNotifications.Commands.DeleteDeviceRegistration; - -public class DeleteDeviceRegistrationCommand : IRequest; diff --git a/Modules/Devices/src/Devices.Application/Tiers/Commands/CreateQueuedForDeletionTier/CreateQueuedForDeletionTierCommand.cs b/Modules/Devices/src/Devices.Application/Tiers/Commands/CreateQueuedForDeletionTier/CreateQueuedForDeletionTierCommand.cs deleted file mode 100644 index 14f3af5f7b..0000000000 --- a/Modules/Devices/src/Devices.Application/Tiers/Commands/CreateQueuedForDeletionTier/CreateQueuedForDeletionTierCommand.cs +++ /dev/null @@ -1,5 +0,0 @@ -using MediatR; - -namespace Backbone.Modules.Devices.Application.Tiers.Commands.CreateQueuedForDeletionTier; - -public class CreateQueuedForDeletionTierCommand : IRequest; diff --git a/Modules/Devices/src/Devices.Application/Users/Commands/SeedTestUsers/SeedTestUsersCommand.cs b/Modules/Devices/src/Devices.Application/Users/Commands/SeedTestUsers/SeedTestUsersCommand.cs deleted file mode 100644 index fb9d91cb13..0000000000 --- a/Modules/Devices/src/Devices.Application/Users/Commands/SeedTestUsers/SeedTestUsersCommand.cs +++ /dev/null @@ -1,5 +0,0 @@ -using MediatR; - -namespace Backbone.Modules.Devices.Application.Users.Commands.SeedTestUsers; - -public class SeedTestUsersCommand : IRequest; diff --git a/Modules/Devices/src/Devices.Application/packages.lock.json b/Modules/Devices/src/Devices.Application/packages.lock.json deleted file mode 100644 index 8ed1369825..0000000000 --- a/Modules/Devices/src/Devices.Application/packages.lock.json +++ /dev/null @@ -1,1505 +0,0 @@ -{ - "version": 2, - "dependencies": { - "net10.0": { - "CSharpFunctionalExtensions": { - "type": "Direct", - "requested": "[3.7.0, 3.7.0]", - "resolved": "3.7.0", - "contentHash": "eMZp8tc88O96eEFutiIskF3LE8lFY3fjbNRGfNa1ca0CD9sB8A00r5ltyYDih/7UFdJdVbhVq7tGeHI8xj6DlQ==" - }, - "FluentValidation": { - "type": "Direct", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" - }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "Direct", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, - "OpenIddict.Core": { - "type": "Direct", - "requested": "[7.6.0, 7.6.0]", - "resolved": "7.6.0", - "contentHash": "LJQ+GsSY6Nfw5FZ4NzCvL2kwYU1GNz6ygiUNGvqcKP0qXwstU59RDAjNKTCGkPPq4TQGnETqr4UsJgyK+AFxeA==", - "dependencies": { - "Microsoft.Extensions.Caching.Memory": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "OpenIddict.Abstractions": "7.6.0" - } - }, - "OpenIddict.EntityFrameworkCore": { - "type": "Direct", - "requested": "[7.6.0, 7.6.0]", - "resolved": "7.6.0", - "contentHash": "BWbgvgKbDcg3EuNJvmXtUzeLxg9c4bU+PfDnZetCjGwcnlCsWcASkjVexKKevtUgWxRWJTQFRchMA09OKmOF/w==", - "dependencies": { - "Microsoft.EntityFrameworkCore.Relational": "10.0.10", - "OpenIddict.Core": "7.6.0", - "OpenIddict.EntityFrameworkCore.Models": "7.6.0" - } - }, - "Polly": { - "type": "Direct", - "requested": "[8.7.0, 8.7.0]", - "resolved": "8.7.0", - "contentHash": "0qR4f0OR8FeCAfLWcfwzAM7w6EmpUgwa22PgxKjcL25dEAto7sKpQQXbtxp38vVvK+V3RFkh/TeI7g/iUdoYIQ==", - "dependencies": { - "Polly.Core": "8.7.0" - } - }, - "AWSSDK.Core": { - "type": "Transitive", - "resolved": "4.0.100.9", - "contentHash": "OPYy41jZjXwxxcYRotaq24HDrwUnVtBB/mvg1IwB9D1ICXAtHqMa1sp2hpmlVJCZwjlcrPcTCJIejInvV1vp5g==" - }, - "Azure.Core": { - "type": "Transitive", - "resolved": "1.60.0", - "contentHash": "qCa5DLAq0w14aTl9/bvMZNA/QxPzYj1a4zakrpeudxWd4D4YliRHRfccD3yFECeHkMkvQjMmyWLggb8bzhDVKA==", - "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "10.0.9", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.9", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.9", - "Microsoft.Identity.Client": "4.84.2", - "Microsoft.Identity.Client.Extensions.Msal": "4.84.2", - "System.ClientModel": "1.14.0", - "System.Memory.Data": "10.0.9" - } - }, - "Azure.Core.Amqp": { - "type": "Transitive", - "resolved": "1.3.1", - "contentHash": "AY1ZM4WwLBb9L2WwQoWs7wS2XKYg83tp3yVVdgySdebGN0FuIszuEqCy3Nhv6qHpbkjx/NGuOTsUbF/oNGBgwA==", - "dependencies": { - "Microsoft.Azure.Amqp": "2.6.7", - "System.Memory.Data": "1.0.2" - } - }, - "Azure.Identity": { - "type": "Transitive", - "resolved": "1.17.1", - "contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Microsoft.Identity.Client": "4.78.0", - "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" - } - }, - "Azure.Storage.Common": { - "type": "Transitive", - "resolved": "12.28.0", - "contentHash": "5l8YhNrks38zKLGFW2BBFLwieyamH/xauABSASsdpZv79G0f+n2n22IjkRmUqCmALSupkwRHh2LOhbW3yj5Qgw==", - "dependencies": { - "Azure.Core": "1.55.0", - "System.IO.Hashing": "10.0.3" - } - }, - "Castle.Core": { - "type": "Transitive", - "resolved": "5.2.1", - "contentHash": "wHARzQA695jwwKreOzNsq54KiGqKP38tv8hi8e2FXDEC/sA6BtrX90tVPDkOfVu13PbEzr00TCV8coikl+D1Iw==", - "dependencies": { - "System.Diagnostics.EventLog": "6.0.0" - } - }, - "Google.Api.CommonProtos": { - "type": "Transitive", - "resolved": "2.17.0", - "contentHash": "elfQPknFr495hm7vdy6ZlgyQh6yzZq9TU7sS35L/Fj/fqjM/mUGau9gVJLhvQEtUlPjtR80hpn/m9HvBMyCXIw==", - "dependencies": { - "Google.Protobuf": "[3.31.1, 4.0.0]" - } - }, - "Google.Api.Gax": { - "type": "Transitive", - "resolved": "4.13.1", - "contentHash": "ujDpZk7O2VqAEIqcSlhH0FKzVpGZWly/qcNjHxpNUrL445Tei9PHnu4V1pwW2WDiMDvo3TpL1Bi4DeU525Afrg==", - "dependencies": { - "Microsoft.Bcl.AsyncInterfaces": "6.0.0", - "Newtonsoft.Json": "13.0.4" - } - }, - "Google.Api.Gax.Grpc": { - "type": "Transitive", - "resolved": "4.13.1", - "contentHash": "QgYF0bd8z6xWSVLGkGAMPB70seJSa9J02lFn8LT0Rb7PjSxZYpX+wU6LbVmghxDi6Wd64taulpX37pFq20J61g==", - "dependencies": { - "Google.Api.CommonProtos": "2.17.0", - "Google.Api.Gax": "4.13.1", - "Google.Apis.Auth": "1.73.0", - "Grpc.Auth": "[2.71.0, 3.0.0)", - "Grpc.Core.Api": "[2.71.0, 3.0.0)", - "Grpc.Net.Client": "[2.71.0, 3.0.0)", - "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0" - } - }, - "Google.Api.Gax.Rest": { - "type": "Transitive", - "resolved": "4.13.1", - "contentHash": "wDfFZXKoHC6sy+Yfub/4cLQOb5ozBVPqDOrxCUAeTfku4d96ILqgzulJSdkPHbiT3oWB3hlYTdJgUwNSJjyo+A==", - "dependencies": { - "Google.Api.Gax": "4.13.1", - "Google.Apis.Auth": "1.73.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0" - } - }, - "Google.Apis": { - "type": "Transitive", - "resolved": "1.74.0", - "contentHash": "Z6hSkmRD6V8/raSBqn/EsPpNop6suaLaGE9DbSY3yRE5G47l4zYqrJgapcLARk2Z3TsQUDmWz+w/tob3wuVt3g==", - "dependencies": { - "Google.Apis.Core": "1.74.0" - } - }, - "Google.Apis.Auth": { - "type": "Transitive", - "resolved": "1.74.0", - "contentHash": "43H4foh3zfWgboK8QnJjIfPQuBiS794TxqQLDfeE3erQSluKmEN0qeDuwxLTpSr9Mtwj76S4LWxPneuSbC6fNg==", - "dependencies": { - "Google.Apis": "1.74.0", - "Google.Apis.Core": "1.74.0", - "System.Management": "7.0.2" - } - }, - "Google.Apis.Core": { - "type": "Transitive", - "resolved": "1.74.0", - "contentHash": "gWOIiks6yo2TRliIyy10V18BJOO2BfUSPJFiTW6Tfap4tm3hFj7nvYU3XIfwzAxwoIy6nsBoqVDt9iBDSXrvYQ==", - "dependencies": { - "Newtonsoft.Json": "13.0.4" - } - }, - "Google.Apis.Storage.v1": { - "type": "Transitive", - "resolved": "1.74.0.4115", - "contentHash": "9J3YPPSG53xwQLzdQ304dI+DMtVxJDpEazA2QQ2LA8IJoM4VUu4DpIxyhTGxpnAK4Db7s4LwzeNi6NkPKM3HzQ==", - "dependencies": { - "Google.Apis": "1.74.0", - "Google.Apis.Auth": "1.74.0" - } - }, - "Google.Cloud.Iam.V1": { - "type": "Transitive", - "resolved": "3.5.0", - "contentHash": "CTLBAQ7WxsLoA4lovpvhF4MRUJH64smrIjuD/0jDrLs6zpbpf+f8Ur8ekRKv67kwlpN6Ug0q7EuT2csWDEczlQ==", - "dependencies": { - "Google.Api.Gax.Grpc": "[4.12.1, 5.0.0)" - } - }, - "Google.Protobuf": { - "type": "Transitive", - "resolved": "3.31.1", - "contentHash": "gSnJbUmGiOTdWddPhqzrEscHq9Ls6sqRDPB9WptckyjTUyx70JOOAaDLkFff8gManZNN3hllQ4aQInnQyq/Z/A==" - }, - "Grpc.Auth": { - "type": "Transitive", - "resolved": "2.71.0", - "contentHash": "t2aGh/pMgqmc3GimtYfC7VcgVY/VSbk6SLH+61wewsgK45tzxxD9nYYItT5bpLn7fbebirmHXfgJcVKIArd0cg==", - "dependencies": { - "Google.Apis.Auth": "1.69.0", - "Grpc.Core.Api": "2.71.0" - } - }, - "Grpc.Core.Api": { - "type": "Transitive", - "resolved": "2.71.0", - "contentHash": "QquqUC37yxsDzd1QaDRsH2+uuznWPTS8CVE2Yzwl3CvU4geTNkolQXoVN812M2IwT6zpv3jsZRc9ExJFNFslTg==" - }, - "Grpc.Net.Client": { - "type": "Transitive", - "resolved": "2.71.0", - "contentHash": "U1vr20r5ngoT9nlb7wejF28EKN+taMhJsV9XtK9MkiepTZwnKxxiarriiMfCHuDAfPUm9XUjFMn/RIuJ4YY61w==", - "dependencies": { - "Grpc.Net.Common": "2.71.0", - "Microsoft.Extensions.Logging.Abstractions": "6.0.0" - } - }, - "Grpc.Net.Common": { - "type": "Transitive", - "resolved": "2.71.0", - "contentHash": "v0c8R97TwRYwNXlC8GyRXwYTCNufpDfUtj9la+wUrZFzVWkFJuNAltU+c0yI3zu0jl54k7en6u2WKgZgd57r2Q==", - "dependencies": { - "Grpc.Core.Api": "2.71.0" - } - }, - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, - "MedallionTopologicalSort": { - "type": "Transitive", - "resolved": "1.0.0", - "contentHash": "dcAqM8TcyZQ/T466CvqNMUUn/G0FQE+4R7l62ngXH7hLFP9yA7yoP/ySsLgiXx3pGUQC3J+cUvXmJOOR/eC+oQ==" - }, - "Microsoft.AspNetCore.Cryptography.Internal": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "T/kOT3kAVZU1B0QlpRxASpdbAJ/o5DLFW7bWS6vyE44uMqPmojEcaFENt6ww1xaLH++ZNwsEJ1YUOwPK050lNQ==" - }, - "Microsoft.AspNetCore.Cryptography.KeyDerivation": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "w6P461MvhJrttEcyGfN00tf8rdwQJFK+s0pebR44jiTzAa+PUZ804xzbGZQpR6klSFd212M4DIIROSaW0Acifg==", - "dependencies": { - "Microsoft.AspNetCore.Cryptography.Internal": "10.0.10" - } - }, - "Microsoft.Azure.Amqp": { - "type": "Transitive", - "resolved": "2.7.0", - "contentHash": "gm/AEakujttMzrDhZ5QpRz3fICVkYDn/oDG9SmxDP+J7R8JDBXYU9WWG7hr6wQy40mY+wjUF0yUGXDPRDRNJwQ==" - }, - "Microsoft.Bcl.AsyncInterfaces": { - "type": "Transitive", - "resolved": "10.0.9", - "contentHash": "Aq7M8lG6BrHeatqKqncVm9m55ec34k6nnfPRLe/PvGg+b/pAsRM2ejofeKmCLjTXMa+5NGXm382f8CG/D5WDow==" - }, - "Microsoft.Bcl.Cryptography": { - "type": "Transitive", - "resolved": "10.0.2", - "contentHash": "LG9Yll3B5aNpxv0+D47g6LiOiKBIlodhcHdQwcYzo8VeexFLGqx5ymetmA2aBRyo9cCcWsQWrFsdbsr8LvmWDw==" - }, - "Microsoft.Data.SqlClient": { - "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" - } - }, - "Microsoft.Data.SqlClient.SNI.runtime": { - "type": "Transitive", - "resolved": "6.0.2", - "contentHash": "f+pRODTWX7Y67jXO3T5S2dIPZ9qMJNySjlZT/TKmWVNWe19N8jcWmHaqHnnchaq3gxEKv1SWVY5EFzOD06l41w==" - }, - "Microsoft.EntityFrameworkCore.Analyzers": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "2gLDordUCGf3aNOOuqtTbP5mxhiP9nk6TnvGiE3RnqT891O+Zf/qKu1PIREubs1M16A0SImr4vULBfU5BTDs1Q==" - }, - "Microsoft.EntityFrameworkCore.SqlServer.Abstractions": { - "type": "Transitive", - "resolved": "10.0.3", - "contentHash": "K73jOafOjF8oMLrPhXz3er6csmXCOGBQbeXsFPXrtz7/4QJJYalcOHQzoppEhl1gwLEZNnJMUDlOWcQ1FeW27Q==", - "dependencies": { - "Microsoft.SqlServer.Types": "160.1000.6" - } - }, - "Microsoft.EntityFrameworkCore.SqlServer.HierarchyId": { - "type": "Transitive", - "resolved": "10.0.3", - "contentHash": "tkiCR+rJMb9pib0jlJH1nItw36SlFj0l8sD/PQSd7sj1cvKhW1qmA7hahrp3WOvp7ZsIIXgMDUltryzinNOMTw==", - "dependencies": { - "Microsoft.Data.SqlClient": "6.1.1", - "Microsoft.EntityFrameworkCore.SqlServer": "10.0.3", - "Microsoft.EntityFrameworkCore.SqlServer.Abstractions": "10.0.3", - "Microsoft.Extensions.Caching.Memory": "10.0.3", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.3", - "Microsoft.Extensions.Logging": "10.0.3", - "Microsoft.SqlServer.Types": "160.1000.6" - } - }, - "Microsoft.Extensions.Caching.Abstractions": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "4ZFBNE+jzR+CrWWlhOesnmywCW7pYKT0dxyAQRdL11yJwxe4jvcAu31eorFtEkoFeCDcUTeNssgPv2yaRRptaQ==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.Caching.Memory": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "N1w5H7uK6gCTnCBZAWzE0/EQYSPysij/uYwDqntqBVvBa6bjMmBKitsnEFd6yh/SX3wLm67nO6+OnZ84K+gZWg==", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "10.0.10", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.Compliance.Abstractions": { - "type": "Transitive", - "resolved": "10.8.0", - "contentHash": "7I0DXMTCqpXpXg+SLLDlfedtv6DN5Lgiv+PR3MclzqKPOHNB17YP42KMNI61ckSrffh0xsuIqQyCIjvWc6vUuw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.ObjectPool": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.CommandLine": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "33cBeR2HRbzHUTtmcmLdNOApneNGcymwwL4arHuotgVK9Frba8kcDTrvVTj7cSCmF1R9OiSbZH0KxNOwab3HUg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.EnvironmentVariables": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "KRfFSSCV58vEdU7mPED/YMzeovIWF5P0g8s9K8n9HEfy0/WzMq37SrPdXdFN5/dFT/rPMHpF7AvpoXHckbcBFg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.FileExtensions": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "ZOhZYwvbXGTgGVRwswIirofEMVHuWdxjdh0JeUZXwaF9cgcjXdz/t0ELtgaevw7ezTyv47yPNCgGreWtLkn3IQ==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Physical": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.UserSecrets": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "1s1sKFTk/Foam64JY6+m/diH8drL3Wx6V3gtSd5v1IEZtszZYyc1pW8uRnMblzpNiR0l0t8gGk7tXj3xHzFgdg==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.Json": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Physical": "10.0.10" - } - }, - "Microsoft.Extensions.Diagnostics": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "Kr/e7lUf4+N8tacbqJ2Ctwe/HarKdAc9ZkgKVVqvtJDBKbez+T/KnUwu82KSlnBp/SrpBcxc7u7xkE2oUZT/5Q==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.10", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10" - } - }, - "Microsoft.Extensions.Diagnostics.Abstractions": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "9uWiKpeOVac355STyChWR/pliFX/5CeLqChW9kKsaxyDH4EUTZxMkT4Jwp/J/peLm0GBFmSX5c0WCse3yCnq1Q==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Extensions.Diagnostics.HealthChecks": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "R0O5oG+zAJeBSM8nNTa+Ycj2Zobyr/v6Ilo7Dha0sNB2Vq/XXoLdoecj9DAWGbN8YrPaW6u8+osTQ5Ypj7ZF0w==", - "dependencies": { - "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": "10.0.10", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "6euxgVR7NS83y0a2wLRAxfYXusLQJ2e1ah0MpQgYTYMs5lYrmdNP79C6T8uvRZdP87n5mcCcp6+w0EyWAidKZw==" - }, - "Microsoft.Extensions.FileProviders.Abstractions": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "c5zqFCY9DiIpMovLd7/d/CTiEtrMOuQ639dhv3PABtKQIKNQikSHwQt8+N679uii9q+B55lgK28Uv64FOwEu8w==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.FileProviders.Physical": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "jhJAyo38kSrH3ARvWUk0h8itogVnQu2DCZuPo+s0Z+tXes0ugTxMPaHYzap85785eHQmPFqD9TYERqBbtGxn/w==", - "dependencies": { - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.FileSystemGlobbing": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.FileSystemGlobbing": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "jSOCVxEwCd4Aq925kJVz1kSO1EpX2OHYKL04qVREXkDU7Ce3pVDdHPYm+fEy8y/th2kJf/DAstRHpJAqoNWP8w==" - }, - "Microsoft.Extensions.Logging.Configuration": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "cLrqxkuEfcilZ8SjK+9KAnpLk9lOoMPaOokF+wRUYie+iUEcdX4/p/+gJkt0BYgWLthjpBUCkVTBI6Kxg0nsOw==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.Binder": "10.0.10", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.Console": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "VIlNzPwPS0GeQVSmCqqo36ugryX3LpE9ul6gEkks5VLET3weH/XMLeWmclwfoGn4Nxi2mwVibB+OZBVJ9tDqvg==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging.Configuration": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.Debug": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "8+TZBnV5fgBXoVNJ5ROSErUwYogk4hOgV7c2HWK1u5cqKGmiUTUn7+KqZ35iQu8e/B7Ykccyz5OTjdXcidNZ9g==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.EventLog": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "0RE4951AzQ+YD4gVrvbq0BhdsiBgSDo44yM7+QBZ2mrmMJeNjY+teCIYfUjqDPVYnKs0HR6SkkhgrX1YgXZq3Q==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "System.Diagnostics.EventLog": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.EventSource": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "85SAPwXhJtdBInzN2k7SChiFiBGh3KOWay5AfoY+GREF6P7oZA98+ST2p7Z9384iLKYjkZSKIZ/FqIO5aojtNw==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.ObjectPool": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "Tx0R6PY9MNSh0mDKSxbpHLuuec93IxF1cel+1ithQnMNr/vbfLSSHOQHGHIppAJCGfPcEo/wO1Ylj+QpXtzo3A==" - }, - "Microsoft.Extensions.Options.ConfigurationExtensions": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "tnBmu/LwF25ZQK+HBNCu2xrwnkKoB/XEbJyooGGoYxHrhvxbSKi7eOFiJ4AXBy/QU4vtCvCJfoi8k9Ej72qzOQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.Binder": "10.0.10", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.Primitives": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "5wu/GrYVd8mG2DVUw3vFJzF+O336TyTGg/Kmcgw9bfwYhCoFiV5lR5QeEmKecJyrW4W54nMfD3p3589E8a7czQ==" - }, - "Microsoft.Extensions.Telemetry.Abstractions": { - "type": "Transitive", - "resolved": "10.8.0", - "contentHash": "XHlOerNKjVrPJqbuFi196tyFhS7eNMoPUC800xJmCGsSiruE/goGoKyBKzS1HeelAGnoFPFrS+LgNitXNeEYRQ==", - "dependencies": { - "Microsoft.Extensions.Compliance.Abstractions": "10.8.0", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.ObjectPool": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Identity.Client": { - "type": "Transitive", - "resolved": "4.84.2", - "contentHash": "Va9FjmABSgj/lcUfHH0pBNQkmS7SNyepz2ERV7Yynp6QgEYpFdSqR6Vzy1WWipN8GS5pBHuXoZbqaDWuARCrHQ==", - "dependencies": { - "Microsoft.IdentityModel.Abstractions": "8.14.0" - } - }, - "Microsoft.Identity.Client.Extensions.Msal": { - "type": "Transitive", - "resolved": "4.84.2", - "contentHash": "+D98LaU3dOu/Nzs6kgbBJapMvH7iwYcAeC99XwSkpmEadsPv6rozecOl9P6m4A3RfpOuPt9e6J6TwwUUp3+M4w==", - "dependencies": { - "Microsoft.Identity.Client": "4.84.2", - "System.Security.Cryptography.ProtectedData": "4.5.0" - } - }, - "Microsoft.IdentityModel.Abstractions": { - "type": "Transitive", - "resolved": "8.19.2", - "contentHash": "HJbo/lnSfNHUfphPRT910poQc4T2/9+8svFLvzuaYHGAOJ2Tu+oEDqpX0BVP3BJ4OuUM1kylEKyaiX2fCAK3Cw==" - }, - "Microsoft.IdentityModel.JsonWebTokens": { - "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "3Izi75UCUssvo8LPx3OVnEeZay58qaFicrtSnbtUt7q8qQi0gy46gh4V8VUTkMVMKXV6VMyjBVmeNNgeCUJuIw==", - "dependencies": { - "Microsoft.IdentityModel.Tokens": "7.7.1" - } - }, - "Microsoft.IdentityModel.Logging": { - "type": "Transitive", - "resolved": "8.19.2", - "contentHash": "r5YLDIxGOnkVJHrqXv/iD1FM1CgGrQOdriXuvuWvTPmKbnGANhEysq9XKmN6IHjf2a+9bAGEpnoRBsAQlvJU5w==", - "dependencies": { - "Microsoft.IdentityModel.Abstractions": "8.19.2" - } - }, - "Microsoft.IdentityModel.Protocols": { - "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "h+fHHBGokepmCX+QZXJk4Ij8OApCb2n2ktoDkNX5CXteXsOxTHMNgjPGpAwdJMFvAL7TtGarUnk3o97NmBq2QQ==", - "dependencies": { - "Microsoft.IdentityModel.Tokens": "7.7.1" - } - }, - "Microsoft.IdentityModel.Protocols.OpenIdConnect": { - "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "yT2Hdj8LpPbcT9C9KlLVxXl09C8zjFaVSaApdOwuecMuoV4s6Sof/mnTDz/+F/lILPIBvrWugR9CC7iRVZgbfQ==", - "dependencies": { - "Microsoft.IdentityModel.Protocols": "7.7.1", - "System.IdentityModel.Tokens.Jwt": "7.7.1" - } - }, - "Microsoft.IdentityModel.Tokens": { - "type": "Transitive", - "resolved": "8.19.2", - "contentHash": "GtPC1S02uH1gOO4fQ+zRysIicKmEXaYFP8PIkdJYXqMyruYhopre4ozVHp0XiDSA0+GJvOZH9prxCPvgBMg4Ww==", - "dependencies": { - "Microsoft.Bcl.Cryptography": "10.0.2", - "Microsoft.Extensions.Logging.Abstractions": "8.0.0", - "Microsoft.IdentityModel.Logging": "8.19.2" - } - }, - "Microsoft.SqlServer.Server": { - "type": "Transitive", - "resolved": "1.0.0", - "contentHash": "N4KeF3cpcm1PUHym1RmakkzfkEv3GRMyofVv40uXsQhCQeglr2OHNcUk2WOG51AKpGO8ynGpo9M/kFXSzghwug==" - }, - "Microsoft.SqlServer.Types": { - "type": "Transitive", - "resolved": "160.1000.6", - "contentHash": "4kk+rz5vnIPr9ENzm8KttUbhBKftv0uHSSFDVjc5OuKPtRP5q0lDbYUy5ZsoYCAG3RrZdJoxPnWN2JNozZAiGA==", - "dependencies": { - "Microsoft.SqlServer.Server": "1.0.0" - } - }, - "NetTopologySuite": { - "type": "Transitive", - "resolved": "2.6.0", - "contentHash": "1B1OTacTd4QtFyBeuIOcThwSSLUdRZU3bSFIwM8vk36XiZlBMi3K36u74e4OqwwHRHUuJC1PhbDx4hyI266X1Q==" - }, - "NetTopologySuite.IO.SqlServerBytes": { - "type": "Transitive", - "resolved": "2.1.0", - "contentHash": "R4BcV19f2l6EjHSjh/EHwLhYQHrOov9vig1EW5oBm0iqlZOgaIJm5tBnlbFnYlvdYOPuf5p0Qtf8PCVwH77Wbg==", - "dependencies": { - "NetTopologySuite": "[2.0.0, 3.0.0-A)" - } - }, - "Newtonsoft.Json": { - "type": "Transitive", - "resolved": "13.0.4", - "contentHash": "pdgNNMai3zv51W5aq268sujXUyx7SNdE2bj1wZcWjAQrKMFZV260lbqYop1d2GM67JI1huLRwxo9ZqnfF/lC6A==" - }, - "Npgsql": { - "type": "Transitive", - "resolved": "10.0.3", - "contentHash": "7nb5YzXuvWWJxB0J8DiyL3we+X4FOctZrt0fIBnucOIaIevFEEwGQVZKtiu9olXdlNAK1eNgqSral6r/jlhI4w==", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "10.0.0" - } - }, - "OpenIddict.Abstractions": { - "type": "Transitive", - "resolved": "7.6.0", - "contentHash": "Fp2MUvm6wwsqk6+ieUM/3MTMlbCL1zwSXixM0xC22FgKcl5EQB7E0vV38IRI/rSF8UGgvC/AOjMOF6FoFyks8g==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10", - "Microsoft.IdentityModel.Tokens": "8.19.2" - } - }, - "OpenIddict.EntityFrameworkCore.Models": { - "type": "Transitive", - "resolved": "7.6.0", - "contentHash": "DrWB0dLfsg3mZhWABAlqSZKXin4Q4Pn8V4S7/1JxP5T/7Ncl0y45rM9L2EWv/zdydaiTOFKi4jRDBZAgBxUjaQ==" - }, - "Polly.Core": { - "type": "Transitive", - "resolved": "8.7.0", - "contentHash": "BS2t+nsBer16PIebCEPNBK5fgMisADQyRCd7K+BgkMWpFmSaiYE+rVVNpFhGRqUkJmNSLmw0uCNzHHWfgml28Q==" - }, - "System.ClientModel": { - "type": "Transitive", - "resolved": "1.14.0", - "contentHash": "yhIJHDW3Hh5kcvhHv3ww1T8qvya06Nlwo/SR/rke4/fHXtyKiqQV/9b/VDhnVI7QUcMnpfvh4pIEFhNsTDLeKQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.3", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.3", - "Microsoft.Extensions.Logging.Abstractions": "10.0.3", - "System.Memory.Data": "10.0.3" - } - }, - "System.CodeDom": { - "type": "Transitive", - "resolved": "7.0.0", - "contentHash": "GLltyqEsE5/3IE+zYRP5sNa1l44qKl9v+bfdMcwg+M9qnQf47wK3H0SUR/T+3N4JEQXF3vV4CSuuo0rsg+nq2A==" - }, - "System.Configuration.ConfigurationManager": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "vPinosRgEk1CGjohbv0pDuz6gPprkWo5xvBTjOJjks5JOgOEWvPndq5NngGxiTcBcy1+k9GwzZ1c3Bp2fU5ezw==", - "dependencies": { - "System.Diagnostics.EventLog": "9.0.11", - "System.Security.Cryptography.ProtectedData": "9.0.11" - } - }, - "System.Diagnostics.EventLog": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" - }, - "System.IdentityModel.Tokens.Jwt": { - "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "rQkO1YbAjLwnDJSMpRhRtrc6XwIcEOcUvoEcge+evurpzSZM3UNK+MZfD3sKyTlYsvknZ6eJjSBfnmXqwOsT9Q==", - "dependencies": { - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Tokens": "7.7.1" - } - }, - "System.IO.Hashing": { - "type": "Transitive", - "resolved": "10.0.3", - "contentHash": "La6ICwsdTKhVX+LKN+pvFjQRR3LhLwq3uKdi2knjLzRyPYBSydF4cjXidYxIiTcDD6XVYdsBWQEI8ZxiZ/OdIg==" - }, - "System.Management": { - "type": "Transitive", - "resolved": "7.0.2", - "contentHash": "/qEUN91mP/MUQmJnM5y5BdT7ZoPuVrtxnFlbJ8a3kBJGhe2wCzBfnPFtK2wTtEEcf3DMGR9J00GZZfg6HRI6yA==", - "dependencies": { - "System.CodeDom": "7.0.0" - } - }, - "System.Memory.Data": { - "type": "Transitive", - "resolved": "10.0.9", - "contentHash": "YweovHiLUoEdbr2Xv8eRqCSkTu1vMms4a6xBHaQiMSFVy32PL+hXv6Vhol2NWOmLHjaVgTyhJ3R52U6JxS6w3Q==" - }, - "System.Security.Cryptography.Pkcs": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" - }, - "System.Security.Cryptography.ProtectedData": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "s8yUYuYYu+PAwvBdhLG1KyrGrk9gkYeuPxfAsXsTqqWyepwSyEw8hAaflW4nO98NG52YpYI1am2+9o+79h2RtQ==" - }, - "System.Threading.RateLimiting": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "7mu9v0QDv66ar3DpGSZHg9NuNcxDaaAcnMULuZlaTpP9+hwXhrxNGsF5GmLkSHxFdb5bBc1TzeujsRgTrPWi+Q==" - }, - "Backbone.BuildingBlocks.Application": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Common.Infrastructure": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "MediatR": "[12.5.0, 12.5.0]", - "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", - "Polly": "[8.7.0, 8.7.0]", - "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" - } - }, - "Backbone.BuildingBlocks.Application.Abstractions": { - "type": "Project", - "dependencies": { - "Backbone.DevelopmentKit.Identity": "[1.0.0, )", - "Backbone.Tooling": "[1.0.0, )", - "MediatR.Contracts": "[2.0.1, 2.0.1]", - "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]" - } - }, - "Backbone.BuildingBlocks.Domain": { - "type": "Project", - "dependencies": { - "Backbone.Tooling": "[1.0.0, )" - } - }, - "Backbone.BuildingBlocks.Infrastructure": { - "type": "Project", - "dependencies": { - "AWSSDK.S3": "[4.0.101.6, 4.0.101.6]", - "Autofac": "[9.3.2, 9.3.2]", - "Azure.Messaging.ServiceBus": "[7.20.2, 7.20.2]", - "Azure.Storage.Blobs": "[12.29.1, 12.29.1]", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "EFCore.BulkExtensions.Core": "[10.0.1, 10.0.1]", - "EFCore.BulkExtensions.PostgreSql": "[10.0.1, 10.0.1]", - "EFCore.BulkExtensions.SqlServer": "[10.0.1, 10.0.1]", - "Google.Cloud.PubSub.V1": "[3.36.0, 3.36.0]", - "Google.Cloud.Storage.V1": "[4.15.0, 4.15.0]", - "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", - "Microsoft.EntityFrameworkCore.Abstractions": "[10.0.10, 10.0.10]", - "Microsoft.EntityFrameworkCore.Proxies": "[10.0.10, 10.0.10]", - "Microsoft.EntityFrameworkCore.Relational": "[10.0.10, 10.0.10]", - "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", - "Microsoft.Extensions.Azure": "[1.14.0, 1.14.0]", - "Microsoft.Extensions.DependencyInjection": "[10.0.10, 10.0.10]", - "Microsoft.Extensions.Diagnostics.HealthChecks.Common": "[10.8.0, 10.8.0]", - "Microsoft.Extensions.Identity.Core": "[10.0.10, 10.0.10]", - "Microsoft.Extensions.Logging": "[10.0.10, 10.0.10]", - "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, 10.0.3]", - "OpenTelemetry.Api": "[1.18.0, )", - "Polly": "[8.7.0, 8.7.0]", - "RabbitMQ.Client": "[7.2.1, 7.2.1]", - "Serilog": "[4.4.0, 4.4.0]" - } - }, - "Backbone.Common.Infrastructure": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.DevelopmentKit.Identity": "[1.0.0, )", - "Dapper": "[2.1.79, 2.1.79]", - "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", - "Polly": "[8.7.0, 8.7.0]" - } - }, - "Backbone.Crypto": { - "type": "Project", - "dependencies": { - "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", - "NSec.Cryptography": "[26.4.0, 26.4.0]" - } - }, - "Backbone.DevelopmentKit.Identity": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )", - "SimpleBase": "[5.6.3, 5.6.3]" - } - }, - "Backbone.Modules.Announcements.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Devices.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Devices.Domain": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )", - "Backbone.DevelopmentKit.Identity": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Tooling": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", - "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]" - } - }, - "Backbone.Modules.Synchronization.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Tokens.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Tooling": { - "type": "Project", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "[10.0.10, 10.0.10]", - "Microsoft.Extensions.Options": "[10.0.10, 10.0.10]" - } - }, - "Autofac": { - "type": "CentralTransitive", - "requested": "[9.3.2, 9.3.2]", - "resolved": "9.3.2", - "contentHash": "an3dLpmXWvb2aBP5qyA7GVEcXhoG+W/EtFRa3sBYzJdXSNDnB0aoeo4MgOQru0G5sjNDGYM3D3CnBzNFXEVOOA==" - }, - "AWSSDK.S3": { - "type": "CentralTransitive", - "requested": "[4.0.101.6, 4.0.101.6]", - "resolved": "4.0.101.6", - "contentHash": "LsVXGc3lyJuUJe+EbGubkFeR0cVmtmj4YdMChqsqSIsjZtCMzPg2BXR7cJqcrIBGoHab3q3RS6K8T9QD2tbhhQ==", - "dependencies": { - "AWSSDK.Core": "[4.0.100.9, 5.0.0)" - } - }, - "Azure.Messaging.ServiceBus": { - "type": "CentralTransitive", - "requested": "[7.20.2, 7.20.2]", - "resolved": "7.20.2", - "contentHash": "mwr5c3Qs7FWUtwzlLOtVixYDpUuA+Ln7sNirljTHZR8kDhzdr2grlqx0RRBvGV+IDCRHt1jIRb+hi0MUzjeVmw==", - "dependencies": { - "Azure.Core": "1.60.0", - "Azure.Core.Amqp": "1.3.1", - "Microsoft.Azure.Amqp": "2.7.0" - } - }, - "Azure.Storage.Blobs": { - "type": "CentralTransitive", - "requested": "[12.29.1, 12.29.1]", - "resolved": "12.29.1", - "contentHash": "pWh7xZBto8YcwiO853AB3uijTfVqs9PDte0Bu9/Zd8O9nwKiitWm0Jej1vsNkmYUzeG1552f8vJPjmtW30pBUQ==", - "dependencies": { - "Azure.Core": "1.55.0", - "Azure.Storage.Common": "12.28.0" - } - }, - "BouncyCastle.Cryptography": { - "type": "CentralTransitive", - "requested": "[2.7.0, 2.7.0]", - "resolved": "2.7.0", - "contentHash": "U+12df8UEWHgBi04YVf/Lgi2dy3SItlIYvHjjEVa/BngCQIzDCDRBk50DDByCfDvSbe5pRNFr3b7UrVK2kMcLw==" - }, - "Dapper": { - "type": "CentralTransitive", - "requested": "[2.1.79, 2.1.79]", - "resolved": "2.1.79", - "contentHash": "8YijbzgTfmqmQOnVNorYM6K++pxqnW3nJ4aC1sRHzxUA2CcuoJ9gsTem3kgBnPRMc38zZHl4Esb6hAezXIEEuw==" - }, - "EFCore.BulkExtensions.Core": { - "type": "CentralTransitive", - "requested": "[10.0.1, 10.0.1]", - "resolved": "10.0.1", - "contentHash": "D++Wd1Qy6RM+yMy4nQ3r0nc/cSA0T+AdlFBEuKDhwl6r5bwuBQpluP5h2rvQ3i+CetUGppef6JNH9grg8lo+Bw==", - "dependencies": { - "MedallionTopologicalSort": "1.0.0", - "Microsoft.EntityFrameworkCore.Relational": "10.0.3", - "NetTopologySuite": "2.6.0" - } - }, - "EFCore.BulkExtensions.PostgreSql": { - "type": "CentralTransitive", - "requested": "[10.0.1, 10.0.1]", - "resolved": "10.0.1", - "contentHash": "iZCay5ghyULm4kA0ET6BOrL9J7AhVlgBqILpy4TUBm6yaGALIwcGc/qe6EO/VS+k9/RwJdO4qsRqWiTNrxF1Aw==", - "dependencies": { - "EFCore.BulkExtensions.Core": "10.0.1", - "Npgsql.EntityFrameworkCore.PostgreSQL": "10.0.0" - } - }, - "EFCore.BulkExtensions.SqlServer": { - "type": "CentralTransitive", - "requested": "[10.0.1, 10.0.1]", - "resolved": "10.0.1", - "contentHash": "Eg5nL1rjTvrCIjJD7ABjAH3waENRZ5mt/OZkhJe9FXgOIbovS8hzaDzy5Pqi+gwaPJLrdCeQWHfJgNjyULOVUw==", - "dependencies": { - "EFCore.BulkExtensions.Core": "10.0.1", - "Microsoft.Data.SqlClient": "6.1.4", - "Microsoft.EntityFrameworkCore.SqlServer.HierarchyId": "10.0.3", - "NetTopologySuite.IO.SqlServerBytes": "2.1.0" - } - }, - "Google.Cloud.PubSub.V1": { - "type": "CentralTransitive", - "requested": "[3.36.0, 3.36.0]", - "resolved": "3.36.0", - "contentHash": "69Tc+bHPvQQPXYs5cnLPhCsEMBYH5CABu/N+yccH+xS2Eforkt3r8DIhy6MUTA+O2NQYKYQSbmU/gIVXYpOBQA==", - "dependencies": { - "Google.Api.Gax.Grpc": "[4.13.1, 5.0.0)", - "Google.Cloud.Iam.V1": "[3.5.0, 4.0.0)" - } - }, - "Google.Cloud.Storage.V1": { - "type": "CentralTransitive", - "requested": "[4.15.0, 4.15.0]", - "resolved": "4.15.0", - "contentHash": "TVlJsaIkMDwHbZPCcLFFKduFcFD0yJL1jsZmV/V/FMjv5iok/eoC0oy8/VHjxfmWmNGkJLPLMAe5MrFLtY7hzg==", - "dependencies": { - "Google.Api.Gax.Rest": "[4.13.1, 5.0.0)", - "Google.Apis.Storage.v1": "[1.74.0.4115, 2.0.0)" - } - }, - "MediatR": { - "type": "CentralTransitive", - "requested": "[12.5.0, 12.5.0]", - "resolved": "12.5.0", - "contentHash": "vqm2H8/nqL5NAJHPhsG1JOPwfkmbVrPyh4svdoRzu+uZh6Ex7PRoHBGsLYC0/RWCEJFqD1ohHNpteQvql9OktA==", - "dependencies": { - "MediatR.Contracts": "[2.0.1, 3.0.0)", - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0" - } - }, - "MediatR.Contracts": { - "type": "CentralTransitive", - "requested": "[2.0.1, 2.0.1]", - "resolved": "2.0.1", - "contentHash": "FYv95bNT4UwcNA+G/J1oX5OpRiSUxteXaUt2BJbRSdRNiIUNbggJF69wy6mnk2wYToaanpdXZdCwVylt96MpwQ==" - }, - "Microsoft.AspNetCore.Identity.EntityFrameworkCore": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "/ZV8RMWbWob1ZGsF5f1wVJNNlFLPKCf2ba834PpQiNhirVQ/ksup5SujtuUsvByHEZgv+9dmjC/4Xdi75axmXQ==", - "dependencies": { - "Microsoft.EntityFrameworkCore.Relational": "10.0.10", - "Microsoft.Extensions.Identity.Stores": "10.0.10" - } - }, - "Microsoft.EntityFrameworkCore": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "a0V7zj/VbYP6dTdWpUgE/r2PuLKtUGe2aJ0lVKkn/wP9ZhaxUz2kQydVfvOjCv2SKxlrqdBfHhPD4Cvlf+4ffA==", - "dependencies": { - "Microsoft.EntityFrameworkCore.Abstractions": "10.0.10", - "Microsoft.EntityFrameworkCore.Analyzers": "10.0.10", - "Microsoft.Extensions.Caching.Memory": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10" - } - }, - "Microsoft.EntityFrameworkCore.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "bOzrFCl6uZCjaSh2bG1ToRQRdx+iXvxosCg9hFyG9OWeAzOFI4xev9OqKeWfKf/kAHyox2JnbcvLVf2ceA7sqA==" - }, - "Microsoft.EntityFrameworkCore.Proxies": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "H/Fu7n1eZb8mLc6Nfj9Hr9IE3DRNhwPhflQnlMB33y+07Bc9C1B+paRWyg0DhX5PUFDdVKlXbBnNNzRMp/UEnA==", - "dependencies": { - "Castle.Core": "5.2.1", - "Microsoft.EntityFrameworkCore": "10.0.10", - "Microsoft.Extensions.Caching.Memory": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10" - } - }, - "Microsoft.EntityFrameworkCore.Relational": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "wNonj40aZxia+GtuBiiD6ZqVh4h6y5Nje1bGdmzZ8/ui0QRsAN+S0SIrLHFCEGbG9cDbeaE40sh+Lr7o9rRs6g==", - "dependencies": { - "Microsoft.EntityFrameworkCore": "10.0.10", - "Microsoft.Extensions.Caching.Memory": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10" - } - }, - "Microsoft.EntityFrameworkCore.SqlServer": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "xwAOvQ1WCfWyA4sRkoYVHyTm8UJ7NDYpRo++2oWuXGQ9g60Z1yepaQBmoPDT2nX24q4ISWnktAW9zARFTiSVvg==", - "dependencies": { - "Microsoft.Data.SqlClient": "6.1.1", - "Microsoft.EntityFrameworkCore.Relational": "10.0.10", - "Microsoft.Extensions.Caching.Memory": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10" - } - }, - "Microsoft.Extensions.Azure": { - "type": "CentralTransitive", - "requested": "[1.14.0, 1.14.0]", - "resolved": "1.14.0", - "contentHash": "g4d2TLfbAiZeXBcGkJdgIl2ZzqMcepMUbECENgg4XXqDU8uGAUwBxJb6x2DBpF6BY09vrHO0Ug3xZcH+cVbMrQ==", - "dependencies": { - "Azure.Core": "1.53.0", - "Microsoft.Extensions.Configuration.Binder": "10.0.3", - "Microsoft.Extensions.Logging": "10.0.3" - } - }, - "Microsoft.Extensions.Configuration": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "plJWK2zpWuuyxI8F8s2scx6Je7N1Ajjs6HvYUGKwRnDMWIVIz9FHwAkiT7ASgrvAOd10T0FPVlh9BzAJJME+jg==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "5Vnd2I75DmZCVEjSynIdJ/0EGafgnLQwgR3t2C2/fkjx/nRG+cLwxLLdInoHeCEpkD5K4Ov/g9ZCRYrl4TRsaA==", - "dependencies": { - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.Binder": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "GqmN2o1CkJvk7uWp+p4CwBYW0w/zfoEbvsiFDbO2G8l1Uz+mrDAbAcZiXhU2lufKPby1cjAUdd5GTWpebYOkOA==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Configuration.Json": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "uvJ6sHwjgrkMEJOgiC76G0mcZGXerwyyWkwX34EOjCbxKG6TCtfAoqDKAMsCvEBf9HxjlGQEgqsSMOGCmGBf+A==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.FileExtensions": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.DependencyInjection": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "ANyvsgkNBRvcJh2XLgn8veGmajf+8m0AbKK+HPWdRL1yraSNVVSmQhFntLtdz/C795jxqqup+k05cs/3jZQPOA==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "z/2xXlFw2aLGjHyEm6E0tQ+In6VfzQzTrtArbQ2c0TQE16ZbyDCMGPvaUT9I0s8rgy9sRWlU2P9waW37qV04qA==" - }, - "Microsoft.Extensions.Diagnostics.HealthChecks.Common": { - "type": "CentralTransitive", - "requested": "[10.8.0, 10.8.0]", - "resolved": "10.8.0", - "contentHash": "nyB5D+P7R2LOIrAiZyCgcUsQZcKa/n4PIGkE8eXGknlhPTfd5bivi2u4vhFVvjZYkObw/bpWRSwBllyx1ZuWGw==", - "dependencies": { - "Microsoft.Extensions.Configuration.Binder": "10.0.10", - "Microsoft.Extensions.Diagnostics": "10.0.10", - "Microsoft.Extensions.Diagnostics.HealthChecks": "10.0.10", - "Microsoft.Extensions.ObjectPool": "10.0.10", - "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10", - "Microsoft.Extensions.Telemetry.Abstractions": "10.8.0" - } - }, - "Microsoft.Extensions.Hosting": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "tL9FkfV64GPUDSPvwrgyw42LVzsnVAnyrqJEuZVJbODgrQ3eL63zmzEcVWoCHzfgqUhWggzbgAyUCnz/zfI3Pg==", - "dependencies": { - "Microsoft.Extensions.Configuration": "10.0.10", - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.Configuration.Binder": "10.0.10", - "Microsoft.Extensions.Configuration.CommandLine": "10.0.10", - "Microsoft.Extensions.Configuration.EnvironmentVariables": "10.0.10", - "Microsoft.Extensions.Configuration.FileExtensions": "10.0.10", - "Microsoft.Extensions.Configuration.Json": "10.0.10", - "Microsoft.Extensions.Configuration.UserSecrets": "10.0.10", - "Microsoft.Extensions.DependencyInjection": "10.0.10", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Diagnostics": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Physical": "10.0.10", - "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging.Configuration": "10.0.10", - "Microsoft.Extensions.Logging.Console": "10.0.10", - "Microsoft.Extensions.Logging.Debug": "10.0.10", - "Microsoft.Extensions.Logging.EventLog": "10.0.10", - "Microsoft.Extensions.Logging.EventSource": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Extensions.Hosting.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "5LugpYGHk+mkn0a8IZgcyfBca8PCTAU9RQFoMrTdtOOidq88M2SI5f3px6ugnzgxC+eTkvYYJi8pzlUnG5xdAQ==", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.10", - "Microsoft.Extensions.FileProviders.Abstractions": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Identity.Core": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "ZA+9MX1D7+jm/1RF3iOOBThCps55MT1jAwLne1dryMj9cuAeOVtGS3pBegqk1Mwza+0tuVAklob+Q/EA9bHnQw==", - "dependencies": { - "Microsoft.AspNetCore.Cryptography.KeyDerivation": "10.0.10", - "Microsoft.Extensions.Diagnostics": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Extensions.Identity.Stores": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "WMG/9wPJPnwU2w1R/WPLO/RL2UpGpBhw9z6odAAUkFdZypzzXl620FJWEoPpuBUq6Q4GYgMg0FQVRCO6gO4MQQ==", - "dependencies": { - "Microsoft.Extensions.Caching.Abstractions": "10.0.10", - "Microsoft.Extensions.Identity.Core": "10.0.10", - "Microsoft.Extensions.Logging": "10.0.10" - } - }, - "Microsoft.Extensions.Logging": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "Tf6z5HsL0VDYRTfvsoNrTGHGheCwkTsZBA2FFh5ATJUbkAwug+FFNISJK2gjpUNemlAOoWllAK52HOWCjto3EQ==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection": "10.0.10", - "Microsoft.Extensions.Logging.Abstractions": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Microsoft.Extensions.Logging.Abstractions": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "zkFxGYUvdxAvIKTyXHrmW+Sux53D4SezD9dMyZ6hrwwzPQJNuwCRy1f5W7AvYTqacEGhWF2XderRQG1OvbV8og==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10" - } - }, - "Microsoft.Extensions.Options": { - "type": "CentralTransitive", - "requested": "[10.0.10, 10.0.10]", - "resolved": "10.0.10", - "contentHash": "srnhnk7nE8krBiIXp71LvBmKBtraBONWSRzdjJgRv1Ko9Mp8IVNqv4vIS9hGeVteBig8aQkva9ZG+sC+o5sVcA==", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", - "Microsoft.Extensions.Primitives": "10.0.10" - } - }, - "Npgsql.EntityFrameworkCore.PostgreSQL": { - "type": "CentralTransitive", - "requested": "[10.0.3, 10.0.3]", - "resolved": "10.0.3", - "contentHash": "IPGrrZnRkuW7OlHDhUESZz4G5DLkW7Nej/O3Cx+0iTsgyU5XJxBgpsvTHLloo3WWuAKKbDHXBvWPVkX1deRh1Q==", - "dependencies": { - "Microsoft.EntityFrameworkCore": "[10.0.4, 11.0.0)", - "Microsoft.EntityFrameworkCore.Relational": "[10.0.4, 11.0.0)", - "Npgsql": "10.0.3" - } - }, - "NSec.Cryptography": { - "type": "CentralTransitive", - "requested": "[26.4.0, 26.4.0]", - "resolved": "26.4.0", - "contentHash": "0vsCtY5f+YgQROiWNqzgWp+l2pddfk9FkWoGV/bEo0MuEYPKlJWuoA8aOfO6qp3f+EnObKE3zSJhn1PspJeJVg==", - "dependencies": { - "libsodium": "[1.0.22, 1.0.23)" - } - }, - "OpenTelemetry.Api": { - "type": "CentralTransitive", - "requested": "[1.18.0, )", - "resolved": "1.18.0", - "contentHash": "Dhzm5oughIY9EWckt2J1yXcEbXpki5WCL2q7prJoYxzH6C7jdkfGtPMTkUVZZ4AhjJKzQnlC+kLSIlmIVwC4Vw==" - }, - "RabbitMQ.Client": { - "type": "CentralTransitive", - "requested": "[7.2.1, 7.2.1]", - "resolved": "7.2.1", - "contentHash": "YKXEfg9fVQiTKgZlvIhAfPSFaamEgi8DsQmisCH0IAsU4FYLrtoguDrDj6JtJVGUt40QPnBLRH6fTQcAC4qsOg==", - "dependencies": { - "System.Threading.RateLimiting": "8.0.0" - } - }, - "ReHackt.Extensions.Options.Validation": { - "type": "CentralTransitive", - "requested": "[10.0.1, 10.0.1]", - "resolved": "10.0.1", - "contentHash": "/mjsZpv8DLDeHns99iDROqFa0eJ/5NU4X2kMMt3VTfVf3xYWQNLPoTs//x+wKXWYSo+pdXkA+ASvaJT/pifB2Q==", - "dependencies": { - "Microsoft.Extensions.Hosting": "10.0.10", - "Microsoft.Extensions.Options": "10.0.10" - } - }, - "Serilog": { - "type": "CentralTransitive", - "requested": "[4.4.0, 4.4.0]", - "resolved": "4.4.0", - "contentHash": "ZC6Le3rr4TVJJjS4KsQAesxeF1EhW9qcZmmG7eP5Y2G3+gTGkJEUXkq4+tZNPtyp05I0wWOxnIjwtxFweJsObw==" - }, - "SimpleBase": { - "type": "CentralTransitive", - "requested": "[5.6.3, 5.6.3]", - "resolved": "5.6.3", - "contentHash": "ayL730f1gdQVYmFFLKSX83QcoltyKSMBsV94qfCBpZHMaJz/e3ALuXKZDD8SkseWbNHxBe0HxLRBe5OOpQ9HpA==" - } - }, - "net10.0/linux-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, - "Microsoft.Data.SqlClient": { - "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" - } - }, - "Microsoft.Data.SqlClient.SNI.runtime": { - "type": "Transitive", - "resolved": "6.0.2", - "contentHash": "f+pRODTWX7Y67jXO3T5S2dIPZ9qMJNySjlZT/TKmWVNWe19N8jcWmHaqHnnchaq3gxEKv1SWVY5EFzOD06l41w==" - }, - "Microsoft.SqlServer.Types": { - "type": "Transitive", - "resolved": "160.1000.6", - "contentHash": "4kk+rz5vnIPr9ENzm8KttUbhBKftv0uHSSFDVjc5OuKPtRP5q0lDbYUy5ZsoYCAG3RrZdJoxPnWN2JNozZAiGA==", - "dependencies": { - "Microsoft.SqlServer.Server": "1.0.0" - } - }, - "System.Diagnostics.EventLog": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" - }, - "System.Management": { - "type": "Transitive", - "resolved": "7.0.2", - "contentHash": "/qEUN91mP/MUQmJnM5y5BdT7ZoPuVrtxnFlbJ8a3kBJGhe2wCzBfnPFtK2wTtEEcf3DMGR9J00GZZfg6HRI6yA==", - "dependencies": { - "System.CodeDom": "7.0.0" - } - }, - "System.Security.Cryptography.Pkcs": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" - } - }, - "net10.0/linux-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, - "Microsoft.Data.SqlClient": { - "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" - } - }, - "Microsoft.Data.SqlClient.SNI.runtime": { - "type": "Transitive", - "resolved": "6.0.2", - "contentHash": "f+pRODTWX7Y67jXO3T5S2dIPZ9qMJNySjlZT/TKmWVNWe19N8jcWmHaqHnnchaq3gxEKv1SWVY5EFzOD06l41w==" - }, - "Microsoft.SqlServer.Types": { - "type": "Transitive", - "resolved": "160.1000.6", - "contentHash": "4kk+rz5vnIPr9ENzm8KttUbhBKftv0uHSSFDVjc5OuKPtRP5q0lDbYUy5ZsoYCAG3RrZdJoxPnWN2JNozZAiGA==", - "dependencies": { - "Microsoft.SqlServer.Server": "1.0.0" - } - }, - "System.Diagnostics.EventLog": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" - }, - "System.Management": { - "type": "Transitive", - "resolved": "7.0.2", - "contentHash": "/qEUN91mP/MUQmJnM5y5BdT7ZoPuVrtxnFlbJ8a3kBJGhe2wCzBfnPFtK2wTtEEcf3DMGR9J00GZZfg6HRI6yA==", - "dependencies": { - "System.CodeDom": "7.0.0" - } - }, - "System.Security.Cryptography.Pkcs": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" - } - }, - "net10.0/osx-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, - "Microsoft.Data.SqlClient": { - "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" - } - }, - "Microsoft.Data.SqlClient.SNI.runtime": { - "type": "Transitive", - "resolved": "6.0.2", - "contentHash": "f+pRODTWX7Y67jXO3T5S2dIPZ9qMJNySjlZT/TKmWVNWe19N8jcWmHaqHnnchaq3gxEKv1SWVY5EFzOD06l41w==" - }, - "Microsoft.SqlServer.Types": { - "type": "Transitive", - "resolved": "160.1000.6", - "contentHash": "4kk+rz5vnIPr9ENzm8KttUbhBKftv0uHSSFDVjc5OuKPtRP5q0lDbYUy5ZsoYCAG3RrZdJoxPnWN2JNozZAiGA==", - "dependencies": { - "Microsoft.SqlServer.Server": "1.0.0" - } - }, - "System.Diagnostics.EventLog": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" - }, - "System.Management": { - "type": "Transitive", - "resolved": "7.0.2", - "contentHash": "/qEUN91mP/MUQmJnM5y5BdT7ZoPuVrtxnFlbJ8a3kBJGhe2wCzBfnPFtK2wTtEEcf3DMGR9J00GZZfg6HRI6yA==", - "dependencies": { - "System.CodeDom": "7.0.0" - } - }, - "System.Security.Cryptography.Pkcs": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" - } - }, - "net10.0/win-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, - "Microsoft.Data.SqlClient": { - "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" - } - }, - "Microsoft.Data.SqlClient.SNI.runtime": { - "type": "Transitive", - "resolved": "6.0.2", - "contentHash": "f+pRODTWX7Y67jXO3T5S2dIPZ9qMJNySjlZT/TKmWVNWe19N8jcWmHaqHnnchaq3gxEKv1SWVY5EFzOD06l41w==" - }, - "Microsoft.SqlServer.Types": { - "type": "Transitive", - "resolved": "160.1000.6", - "contentHash": "4kk+rz5vnIPr9ENzm8KttUbhBKftv0uHSSFDVjc5OuKPtRP5q0lDbYUy5ZsoYCAG3RrZdJoxPnWN2JNozZAiGA==", - "dependencies": { - "Microsoft.SqlServer.Server": "1.0.0" - } - }, - "System.Diagnostics.EventLog": { - "type": "Transitive", - "resolved": "10.0.10", - "contentHash": "OvGz3PrzuAI/Sj7LTcXcCe3FClRI1IyRMZjNONcZtFh+Ww7nAtSh4kh08r8KVe/xxkXJPjR0Y1jF7H+N42d4xQ==" - }, - "System.Management": { - "type": "Transitive", - "resolved": "7.0.2", - "contentHash": "/qEUN91mP/MUQmJnM5y5BdT7ZoPuVrtxnFlbJ8a3kBJGhe2wCzBfnPFtK2wTtEEcf3DMGR9J00GZZfg6HRI6yA==", - "dependencies": { - "System.CodeDom": "7.0.0" - } - }, - "System.Security.Cryptography.Pkcs": { - "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" - } - } - } -} \ No newline at end of file diff --git a/Modules/Devices/src/Devices.Domain/Entities/Identities/Device.cs b/Modules/Devices/src/Devices.Domain/Entities/Identities/Device.cs index 3b7d638988..301f9d908f 100644 --- a/Modules/Devices/src/Devices.Domain/Entities/Identities/Device.cs +++ b/Modules/Devices/src/Devices.Domain/Entities/Identities/Device.cs @@ -70,6 +70,9 @@ public Device(Identity identity, CommunicationLanguage communicationLanguage, De public virtual ApplicationUser User { get; set; } + [System.ComponentModel.DataAnnotations.Schema.NotMapped] + public string Username => User.UserName!; + public DateTime CreatedAt { get; set; } public CommunicationLanguage CommunicationLanguage { get; private set; } diff --git a/Modules/Devices/src/Devices.Infrastructure.Database.Postgres/packages.lock.json b/Modules/Devices/src/Devices.Infrastructure.Database.Postgres/packages.lock.json index 45331dc5a5..21a031e592 100644 --- a/Modules/Devices/src/Devices.Infrastructure.Database.Postgres/packages.lock.json +++ b/Modules/Devices/src/Devices.Infrastructure.Database.Postgres/packages.lock.json @@ -177,11 +177,6 @@ "Grpc.Core.Api": "2.71.0" } }, - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "MedallionTopologicalSort": { "type": "Transitive", "resolved": "1.0.0", @@ -1047,13 +1042,6 @@ "Polly": "[8.7.0, 8.7.0]" } }, - "Backbone.Crypto": { - "type": "Project", - "dependencies": { - "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", - "NSec.Cryptography": "[26.4.0, 26.4.0]" - } - }, "Backbone.DevelopmentKit.Identity": { "type": "Project", "dependencies": { @@ -1061,29 +1049,11 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Announcements.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Devices.Application": { + "Backbone.Modules.Devices.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Crypto": "[1.0.0, )", - "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Domain": "[1.0.0, )", - "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "OpenIddict.Core": "[7.6.0, 7.6.0]", - "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Devices.Domain": "[1.0.0, )" } }, "Backbone.Modules.Devices.Contracts": { @@ -1107,8 +1077,9 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", "FirebaseAdmin": "[3.6.0, 3.6.0]", "JWT": "[11.1.0, 11.1.0]", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1125,18 +1096,6 @@ "Polly": "[8.7.0, 8.7.0]" } }, - "Backbone.Modules.Synchronization.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Tokens.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Tooling": { "type": "Project", "dependencies": { @@ -1247,16 +1206,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", @@ -1555,15 +1504,6 @@ "Npgsql": "10.0.3" } }, - "NSec.Cryptography": { - "type": "CentralTransitive", - "requested": "[26.4.0, 26.4.0]", - "resolved": "26.4.0", - "contentHash": "0vsCtY5f+YgQROiWNqzgWp+l2pddfk9FkWoGV/bEo0MuEYPKlJWuoA8aOfO6qp3f+EnObKE3zSJhn1PspJeJVg==", - "dependencies": { - "libsodium": "[1.0.22, 1.0.23)" - } - }, "OpenIddict.AspNetCore": { "type": "CentralTransitive", "requested": "[7.6.0, 7.6.0]", @@ -1650,11 +1590,6 @@ } }, "net10.0/linux-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "6.1.4", @@ -1706,11 +1641,6 @@ } }, "net10.0/linux-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "6.1.4", @@ -1762,11 +1692,6 @@ } }, "net10.0/osx-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "6.1.4", @@ -1818,11 +1743,6 @@ } }, "net10.0/win-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "6.1.4", diff --git a/Modules/Devices/src/Devices.Infrastructure.Database.SqlServer/packages.lock.json b/Modules/Devices/src/Devices.Infrastructure.Database.SqlServer/packages.lock.json index 45331dc5a5..21a031e592 100644 --- a/Modules/Devices/src/Devices.Infrastructure.Database.SqlServer/packages.lock.json +++ b/Modules/Devices/src/Devices.Infrastructure.Database.SqlServer/packages.lock.json @@ -177,11 +177,6 @@ "Grpc.Core.Api": "2.71.0" } }, - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "MedallionTopologicalSort": { "type": "Transitive", "resolved": "1.0.0", @@ -1047,13 +1042,6 @@ "Polly": "[8.7.0, 8.7.0]" } }, - "Backbone.Crypto": { - "type": "Project", - "dependencies": { - "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", - "NSec.Cryptography": "[26.4.0, 26.4.0]" - } - }, "Backbone.DevelopmentKit.Identity": { "type": "Project", "dependencies": { @@ -1061,29 +1049,11 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Announcements.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Devices.Application": { + "Backbone.Modules.Devices.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Crypto": "[1.0.0, )", - "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Domain": "[1.0.0, )", - "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "OpenIddict.Core": "[7.6.0, 7.6.0]", - "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Devices.Domain": "[1.0.0, )" } }, "Backbone.Modules.Devices.Contracts": { @@ -1107,8 +1077,9 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", "FirebaseAdmin": "[3.6.0, 3.6.0]", "JWT": "[11.1.0, 11.1.0]", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1125,18 +1096,6 @@ "Polly": "[8.7.0, 8.7.0]" } }, - "Backbone.Modules.Synchronization.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Tokens.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Tooling": { "type": "Project", "dependencies": { @@ -1247,16 +1206,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", @@ -1555,15 +1504,6 @@ "Npgsql": "10.0.3" } }, - "NSec.Cryptography": { - "type": "CentralTransitive", - "requested": "[26.4.0, 26.4.0]", - "resolved": "26.4.0", - "contentHash": "0vsCtY5f+YgQROiWNqzgWp+l2pddfk9FkWoGV/bEo0MuEYPKlJWuoA8aOfO6qp3f+EnObKE3zSJhn1PspJeJVg==", - "dependencies": { - "libsodium": "[1.0.22, 1.0.23)" - } - }, "OpenIddict.AspNetCore": { "type": "CentralTransitive", "requested": "[7.6.0, 7.6.0]", @@ -1650,11 +1590,6 @@ } }, "net10.0/linux-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "6.1.4", @@ -1706,11 +1641,6 @@ } }, "net10.0/linux-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "6.1.4", @@ -1762,11 +1692,6 @@ } }, "net10.0/osx-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "6.1.4", @@ -1818,11 +1743,6 @@ } }, "net10.0/win-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "6.1.4", diff --git a/Modules/Devices/src/Devices.Infrastructure/DevicePasswordService.cs b/Modules/Devices/src/Devices.Infrastructure/DevicePasswordService.cs new file mode 100644 index 0000000000..a15eef9d4f --- /dev/null +++ b/Modules/Devices/src/Devices.Infrastructure/DevicePasswordService.cs @@ -0,0 +1,14 @@ +using Backbone.Modules.Devices.Abstractions; +using Backbone.Modules.Devices.Domain.Entities.Identities; +using Microsoft.AspNetCore.Identity; + +namespace Backbone.Modules.Devices.Infrastructure; + +public class DevicePasswordService(UserManager userManager) : IDevicePasswordService +{ + public async Task ChangePassword(ApplicationUser user, string oldPassword, string newPassword) + { + var result = await userManager.ChangePasswordAsync(user, oldPassword, newPassword); + return result.Succeeded ? null : result.Errors.First().Description; + } +} diff --git a/Modules/Devices/src/Devices.Infrastructure/Devices.Infrastructure.csproj b/Modules/Devices/src/Devices.Infrastructure/Devices.Infrastructure.csproj index da02b80daa..f5806e7abe 100644 --- a/Modules/Devices/src/Devices.Infrastructure/Devices.Infrastructure.csproj +++ b/Modules/Devices/src/Devices.Infrastructure/Devices.Infrastructure.csproj @@ -1,6 +1,7 @@ + @@ -19,7 +20,7 @@ - + diff --git a/Modules/Devices/src/Devices.Infrastructure/Persistence/IServiceCollectionExtensions.cs b/Modules/Devices/src/Devices.Infrastructure/Persistence/IServiceCollectionExtensions.cs index a9580a5537..60c07aacab 100644 --- a/Modules/Devices/src/Devices.Infrastructure/Persistence/IServiceCollectionExtensions.cs +++ b/Modules/Devices/src/Devices.Infrastructure/Persistence/IServiceCollectionExtensions.cs @@ -1,5 +1,5 @@ using Backbone.BuildingBlocks.Infrastructure.Persistence.Database; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Infrastructure.OpenIddict; using Backbone.Modules.Devices.Infrastructure.Persistence.Database; using Backbone.Modules.Devices.Infrastructure.Persistence.Repository; @@ -30,6 +30,7 @@ public void AddDatabase(DatabaseConfiguration configuration) public void AddRepositories() { services.AddTransient(); + services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); diff --git a/Modules/Devices/src/Devices.Infrastructure/Persistence/Repository/ChallengesRepository.cs b/Modules/Devices/src/Devices.Infrastructure/Persistence/Repository/ChallengesRepository.cs index 2b5f1366b4..aa36a3f09e 100644 --- a/Modules/Devices/src/Devices.Infrastructure/Persistence/Repository/ChallengesRepository.cs +++ b/Modules/Devices/src/Devices.Infrastructure/Persistence/Repository/ChallengesRepository.cs @@ -1,4 +1,4 @@ -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities; using Backbone.Modules.Devices.Infrastructure.Persistence.Database; using Microsoft.EntityFrameworkCore; diff --git a/Modules/Devices/src/Devices.Infrastructure/Persistence/Repository/IdentitiesRepository.cs b/Modules/Devices/src/Devices.Infrastructure/Persistence/Repository/IdentitiesRepository.cs index 2d557f0a6c..058f2a3984 100644 --- a/Modules/Devices/src/Devices.Infrastructure/Persistence/Repository/IdentitiesRepository.cs +++ b/Modules/Devices/src/Devices.Infrastructure/Persistence/Repository/IdentitiesRepository.cs @@ -4,8 +4,7 @@ using Backbone.BuildingBlocks.Application.Extensions; using Backbone.BuildingBlocks.Application.Pagination; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Application; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.Modules.Devices.Infrastructure.Persistence.Database; using Backbone.Modules.Devices.Infrastructure.Persistence.Database.QueryableExtensions; @@ -112,7 +111,7 @@ public async Task Add(Identity identity, string password) { var createUserResult = await _userManager.CreateAsync(identity.Devices.First().User, password); if (!createUserResult.Succeeded) - throw new OperationFailedException(ApplicationErrors.Devices.RegistrationFailed(createUserResult.Errors.First().Description)); + throw new OperationFailedException(DeviceRegistrationErrors.RegistrationFailed(createUserResult.Errors.First().Description)); } public async Task UpdateWithNewDevice(Identity identity, string password) @@ -121,7 +120,7 @@ public async Task UpdateWithNewDevice(Identity identity, string password) var createUserResult = await _userManager.CreateAsync(newDevice.User, password); if (!createUserResult.Succeeded) - throw new OperationFailedException(ApplicationErrors.Devices.RegistrationFailed(createUserResult.Errors.First().Description)); + throw new OperationFailedException(DeviceRegistrationErrors.RegistrationFailed(createUserResult.Errors.First().Description)); } public async Task> ListDevicesOfIdentity(IdentityAddress identity, IEnumerable ids, PaginationFilter paginationFilter, CancellationToken cancellationToken) diff --git a/Modules/Devices/src/Devices.Infrastructure/Persistence/Repository/OAuthClientsRepository.cs b/Modules/Devices/src/Devices.Infrastructure/Persistence/Repository/OAuthClientsRepository.cs index 120dcf6342..91e9499d95 100644 --- a/Modules/Devices/src/Devices.Infrastructure/Persistence/Repository/OAuthClientsRepository.cs +++ b/Modules/Devices/src/Devices.Infrastructure/Persistence/Repository/OAuthClientsRepository.cs @@ -2,7 +2,7 @@ using System.Text.Encodings.Web; using System.Text.Json; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities; using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.Modules.Devices.Infrastructure.OpenIddict; @@ -67,6 +67,12 @@ public async Task> CountIdentities(List clientId return application?.ToModel(); } + public async Task ValidateSecret(string clientId, string secret, CancellationToken cancellationToken) + { + var client = await _applicationManager.FindByClientIdAsync(clientId, cancellationToken); + return client != null && await _applicationManager.ValidateClientSecretAsync(client, secret, cancellationToken); + } + public async Task Exists(string clientId, CancellationToken cancellationToken) { var client = await _applicationManager.FindByClientIdAsync(clientId, cancellationToken); diff --git a/Modules/Devices/src/Devices.Infrastructure/Persistence/Repository/PnsRegistrationsRepository.cs b/Modules/Devices/src/Devices.Infrastructure/Persistence/Repository/PnsRegistrationsRepository.cs index 592118e16e..aa035489d0 100644 --- a/Modules/Devices/src/Devices.Infrastructure/Persistence/Repository/PnsRegistrationsRepository.cs +++ b/Modules/Devices/src/Devices.Infrastructure/Persistence/Repository/PnsRegistrationsRepository.cs @@ -2,7 +2,7 @@ using Backbone.BuildingBlocks.Application.Extensions; using Backbone.BuildingBlocks.Infrastructure.Exceptions; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications; using Backbone.Modules.Devices.Infrastructure.Persistence.Database; using Microsoft.EntityFrameworkCore; diff --git a/Modules/Devices/src/Devices.Infrastructure/Persistence/Repository/RelationshipTemplateRepository.cs b/Modules/Devices/src/Devices.Infrastructure/Persistence/Repository/RelationshipTemplateRepository.cs index 49512ae706..31624e7ef9 100644 --- a/Modules/Devices/src/Devices.Infrastructure/Persistence/Repository/RelationshipTemplateRepository.cs +++ b/Modules/Devices/src/Devices.Infrastructure/Persistence/Repository/RelationshipTemplateRepository.cs @@ -1,5 +1,5 @@ using System.Linq.Expressions; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Aggregates.Relationships; using Backbone.Modules.Devices.Infrastructure.Persistence.Database; using Microsoft.EntityFrameworkCore; diff --git a/Modules/Devices/src/Devices.Infrastructure/Persistence/Repository/RelationshipsRepository.cs b/Modules/Devices/src/Devices.Infrastructure/Persistence/Repository/RelationshipsRepository.cs index 4252d8cb06..e929c6bc4f 100644 --- a/Modules/Devices/src/Devices.Infrastructure/Persistence/Repository/RelationshipsRepository.cs +++ b/Modules/Devices/src/Devices.Infrastructure/Persistence/Repository/RelationshipsRepository.cs @@ -1,6 +1,6 @@ using System.Linq.Expressions; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Aggregates.Relationships; using Backbone.Modules.Devices.Infrastructure.Persistence.Database; using Microsoft.EntityFrameworkCore; diff --git a/Modules/Devices/src/Devices.Infrastructure/Persistence/Repository/TiersRepository.cs b/Modules/Devices/src/Devices.Infrastructure/Persistence/Repository/TiersRepository.cs index f7ecd7254d..01031a6acf 100644 --- a/Modules/Devices/src/Devices.Infrastructure/Persistence/Repository/TiersRepository.cs +++ b/Modules/Devices/src/Devices.Infrastructure/Persistence/Repository/TiersRepository.cs @@ -2,7 +2,7 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.Persistence.Database; using Backbone.BuildingBlocks.Application.Extensions; using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Aggregates.Tier; using Backbone.Modules.Devices.Infrastructure.OpenIddict; using Backbone.Modules.Devices.Infrastructure.Persistence.Database; diff --git a/Modules/Devices/src/Devices.Infrastructure/PushNotifications/Connectors/Apns/ApplePushNotificationServiceConnector.cs b/Modules/Devices/src/Devices.Infrastructure/PushNotifications/Connectors/Apns/ApplePushNotificationServiceConnector.cs index 1d7b8579b2..fe36ff2822 100644 --- a/Modules/Devices/src/Devices.Infrastructure/PushNotifications/Connectors/Apns/ApplePushNotificationServiceConnector.cs +++ b/Modules/Devices/src/Devices.Infrastructure/PushNotifications/Connectors/Apns/ApplePushNotificationServiceConnector.cs @@ -1,7 +1,7 @@ +using Backbone.Modules.Devices.Abstractions.PushNotifications; using System.Text.Json; using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.BuildingBlocks.Infrastructure.Exceptions; -using Backbone.Modules.Devices.Application.Infrastructure.PushNotifications; using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications; using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications.Handles; using Backbone.Modules.Devices.Infrastructure.PushNotifications.Responses; diff --git a/Modules/Devices/src/Devices.Infrastructure/PushNotifications/Connectors/Fcm/FirebaseCloudMessagingConnector.cs b/Modules/Devices/src/Devices.Infrastructure/PushNotifications/Connectors/Fcm/FirebaseCloudMessagingConnector.cs index 267ab775bc..60b5e59e3f 100644 --- a/Modules/Devices/src/Devices.Infrastructure/PushNotifications/Connectors/Fcm/FirebaseCloudMessagingConnector.cs +++ b/Modules/Devices/src/Devices.Infrastructure/PushNotifications/Connectors/Fcm/FirebaseCloudMessagingConnector.cs @@ -1,6 +1,6 @@ +using Backbone.Modules.Devices.Abstractions.PushNotifications; using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.BuildingBlocks.Infrastructure.Exceptions; -using Backbone.Modules.Devices.Application.Infrastructure.PushNotifications; using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications; using Backbone.Modules.Devices.Infrastructure.PushNotifications.Responses; using FirebaseAdmin.Messaging; diff --git a/Modules/Devices/src/Devices.Infrastructure/PushNotifications/IServiceCollectionExtensions.cs b/Modules/Devices/src/Devices.Infrastructure/PushNotifications/IServiceCollectionExtensions.cs index f6e2180297..c65a3cf93c 100644 --- a/Modules/Devices/src/Devices.Infrastructure/PushNotifications/IServiceCollectionExtensions.cs +++ b/Modules/Devices/src/Devices.Infrastructure/PushNotifications/IServiceCollectionExtensions.cs @@ -1,6 +1,6 @@ +using Backbone.Modules.Devices.Abstractions.PushNotifications; using System.ComponentModel.DataAnnotations; using Backbone.BuildingBlocks.Application.PushNotifications; -using Backbone.Modules.Devices.Application.Infrastructure.PushNotifications; using Backbone.Modules.Devices.Infrastructure.PushNotifications.Connectors; using Backbone.Modules.Devices.Infrastructure.PushNotifications.Connectors.Apns; using Backbone.Modules.Devices.Infrastructure.PushNotifications.Connectors.Dummy; diff --git a/Modules/Devices/src/Devices.Infrastructure/PushNotifications/PushService.cs b/Modules/Devices/src/Devices.Infrastructure/PushNotifications/PushService.cs index 5e17e17aaf..8945e5f2eb 100644 --- a/Modules/Devices/src/Devices.Infrastructure/PushNotifications/PushService.cs +++ b/Modules/Devices/src/Devices.Infrastructure/PushNotifications/PushService.cs @@ -1,8 +1,8 @@ +using Backbone.Modules.Devices.Abstractions.PushNotifications; using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.BuildingBlocks.Infrastructure.Exceptions; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Devices.Application.Infrastructure.PushNotifications; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications; using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications.Handles; using Backbone.Modules.Devices.Domain.Entities.Identities; diff --git a/Modules/Devices/src/Devices.Infrastructure/packages.lock.json b/Modules/Devices/src/Devices.Infrastructure/packages.lock.json index 373a5208c7..e8f9fae3eb 100644 --- a/Modules/Devices/src/Devices.Infrastructure/packages.lock.json +++ b/Modules/Devices/src/Devices.Infrastructure/packages.lock.json @@ -2,6 +2,12 @@ "version": 2, "dependencies": { "net10.0": { + "BouncyCastle.Cryptography": { + "type": "Direct", + "requested": "[2.7.0, 2.7.0]", + "resolved": "2.7.0", + "contentHash": "U+12df8UEWHgBi04YVf/Lgi2dy3SItlIYvHjjEVa/BngCQIzDCDRBk50DDByCfDvSbe5pRNFr3b7UrVK2kMcLw==" + }, "FirebaseAdmin": { "type": "Direct", "requested": "[3.6.0, 3.6.0]", @@ -332,11 +338,6 @@ "Grpc.Core.Api": "2.71.0" } }, - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "MedallionTopologicalSort": { "type": "Transitive", "resolved": "1.0.0", @@ -1202,13 +1203,6 @@ "Polly": "[8.7.0, 8.7.0]" } }, - "Backbone.Crypto": { - "type": "Project", - "dependencies": { - "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", - "NSec.Cryptography": "[26.4.0, 26.4.0]" - } - }, "Backbone.DevelopmentKit.Identity": { "type": "Project", "dependencies": { @@ -1216,29 +1210,11 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Announcements.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Devices.Application": { + "Backbone.Modules.Devices.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Crypto": "[1.0.0, )", - "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Domain": "[1.0.0, )", - "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "OpenIddict.Core": "[7.6.0, 7.6.0]", - "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Devices.Domain": "[1.0.0, )" } }, "Backbone.Modules.Devices.Contracts": { @@ -1258,18 +1234,6 @@ "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]" } }, - "Backbone.Modules.Synchronization.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Tokens.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Tooling": { "type": "Project", "dependencies": { @@ -1313,12 +1277,6 @@ "Azure.Storage.Common": "12.28.0" } }, - "BouncyCastle.Cryptography": { - "type": "CentralTransitive", - "requested": "[2.7.0, 2.7.0]", - "resolved": "2.7.0", - "contentHash": "U+12df8UEWHgBi04YVf/Lgi2dy3SItlIYvHjjEVa/BngCQIzDCDRBk50DDByCfDvSbe5pRNFr3b7UrVK2kMcLw==" - }, "CSharpFunctionalExtensions": { "type": "CentralTransitive", "requested": "[3.7.0, 3.7.0]", @@ -1370,16 +1328,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", @@ -1568,15 +1516,6 @@ "Microsoft.Extensions.Primitives": "10.0.10" } }, - "NSec.Cryptography": { - "type": "CentralTransitive", - "requested": "[26.4.0, 26.4.0]", - "resolved": "26.4.0", - "contentHash": "0vsCtY5f+YgQROiWNqzgWp+l2pddfk9FkWoGV/bEo0MuEYPKlJWuoA8aOfO6qp3f+EnObKE3zSJhn1PspJeJVg==", - "dependencies": { - "libsodium": "[1.0.22, 1.0.23)" - } - }, "OpenIddict.Core": { "type": "CentralTransitive", "requested": "[7.6.0, 7.6.0]", @@ -1628,11 +1567,6 @@ } }, "net10.0/linux-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "6.1.4", @@ -1684,11 +1618,6 @@ } }, "net10.0/linux-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "6.1.4", @@ -1740,11 +1669,6 @@ } }, "net10.0/osx-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "6.1.4", @@ -1796,11 +1720,6 @@ } }, "net10.0/win-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "6.1.4", diff --git a/Modules/Devices/src/Devices.Application/ApplicationConfiguration.cs b/Modules/Devices/src/Devices.Module/ApplicationConfiguration.cs similarity index 97% rename from Modules/Devices/src/Devices.Application/ApplicationConfiguration.cs rename to Modules/Devices/src/Devices.Module/ApplicationConfiguration.cs index 202b7b7928..1cccc0a386 100644 --- a/Modules/Devices/src/Devices.Application/ApplicationConfiguration.cs +++ b/Modules/Devices/src/Devices.Module/ApplicationConfiguration.cs @@ -2,7 +2,7 @@ using Backbone.BuildingBlocks.Application; using Backbone.Modules.Devices.Domain.Entities.Identities; -namespace Backbone.Modules.Devices.Application; +namespace Backbone.Modules.Devices.Module; public class ApplicationConfiguration { diff --git a/Modules/Devices/src/Devices.Application/ApplicationErrors.cs b/Modules/Devices/src/Devices.Module/ApplicationErrors.cs similarity index 95% rename from Modules/Devices/src/Devices.Application/ApplicationErrors.cs rename to Modules/Devices/src/Devices.Module/ApplicationErrors.cs index 665f45d22a..95cb403d60 100644 --- a/Modules/Devices/src/Devices.Application/ApplicationErrors.cs +++ b/Modules/Devices/src/Devices.Module/ApplicationErrors.cs @@ -2,7 +2,7 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Tooling.Extensions; -namespace Backbone.Modules.Devices.Application; +namespace Backbone.Modules.Devices.Module; public static class ApplicationErrors { @@ -19,7 +19,7 @@ public static class Devices { public static ApplicationError RegistrationFailed(string message = "") { - return new ApplicationError("error.platform.validation.device.registrationFailed", string.IsNullOrEmpty(message) ? "The registration of the device failed." : message); + return Backbone.Modules.Devices.Abstractions.DeviceRegistrationErrors.RegistrationFailed(message); } public static ApplicationError AddressAlreadyExists() diff --git a/Modules/Devices/src/Devices.Application/Extensions/IServiceCollectionExtensions.cs b/Modules/Devices/src/Devices.Module/ApplicationServiceCollectionExtensions.cs similarity index 85% rename from Modules/Devices/src/Devices.Application/Extensions/IServiceCollectionExtensions.cs rename to Modules/Devices/src/Devices.Module/ApplicationServiceCollectionExtensions.cs index 1498a10c98..f386805847 100644 --- a/Modules/Devices/src/Devices.Application/Extensions/IServiceCollectionExtensions.cs +++ b/Modules/Devices/src/Devices.Module/ApplicationServiceCollectionExtensions.cs @@ -1,16 +1,17 @@ using System.Reflection; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Application.MediatR; -using Backbone.Modules.Devices.Application.Devices.Commands.RegisterDevice; -using Backbone.Modules.Devices.Application.Devices.Queries.ListDevices; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Module.Features.Devices.ListDevices; +using Backbone.Modules.Devices.Module.Features.Devices.RegisterDevice; +using Backbone.Modules.Devices.Module.Features.Devices.Shared; using FluentValidation; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; -namespace Backbone.Modules.Devices.Application.Extensions; +namespace Backbone.Modules.Devices.Module; -public static class IServiceCollectionExtensions +internal static class ApplicationServiceCollectionExtensions { public static void AddApplication(this IServiceCollection services, IConfiguration applicationConfiguration) { diff --git a/Modules/Devices/src/Devices.Module/Devices.Module.csproj b/Modules/Devices/src/Devices.Module/Devices.Module.csproj index 13dbbd9277..9f2acd44d4 100644 --- a/Modules/Devices/src/Devices.Module/Devices.Module.csproj +++ b/Modules/Devices/src/Devices.Module/Devices.Module.csproj @@ -2,7 +2,12 @@ - + + + + + + @@ -10,6 +15,12 @@ + + + + + + diff --git a/Modules/Devices/src/Devices.Module/DevicesEndpointExtensions.cs b/Modules/Devices/src/Devices.Module/DevicesEndpointExtensions.cs new file mode 100644 index 0000000000..be3bc3b4c2 --- /dev/null +++ b/Modules/Devices/src/Devices.Module/DevicesEndpointExtensions.cs @@ -0,0 +1,63 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.Modules.Devices.Module.Features.Authorization.ExchangeToken; +using Backbone.Modules.Devices.Module.Features.Devices.ChangePassword; +using Backbone.Modules.Devices.Module.Features.Devices.DeleteDevice; +using Backbone.Modules.Devices.Module.Features.Devices.GetActiveDevice; +using Backbone.Modules.Devices.Module.Features.Devices.ListDevices; +using Backbone.Modules.Devices.Module.Features.Devices.RegisterDevice; +using Backbone.Modules.Devices.Module.Features.Devices.UpdateActiveDevice; +using Backbone.Modules.Devices.Module.Features.Identities.CancelDeletionProcess; +using Backbone.Modules.Devices.Module.Features.Identities.ChangeFeatureFlags; +using Backbone.Modules.Devices.Module.Features.Identities.CreateIdentity; +using Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsOwner; +using Backbone.Modules.Devices.Module.Features.Identities.GetOwnIdentity; +using Backbone.Modules.Devices.Module.Features.Identities.IsIdentityOfUserDeleted; +using Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsOwner; +using Backbone.Modules.Devices.Module.Features.Identities.ListFeatureFlags; +using Backbone.Modules.Devices.Module.Features.Identities.StartDeletionProcess; +using Backbone.Modules.Devices.Module.Features.Notifications.SendNotification; +using Backbone.Modules.Devices.Module.Features.PushNotifications.DeleteDeviceRegistration; +using Backbone.Modules.Devices.Module.Features.PushNotifications.SendTestNotification; +using Backbone.Modules.Devices.Module.Features.PushNotifications.UpdateDeviceRegistration; +using Microsoft.AspNetCore.Routing; +using OpenIddict.Validation.AspNetCore; + +namespace Backbone.Modules.Devices.Module; + +public static class DevicesEndpointExtensions +{ + public static IEndpointRouteBuilder MapDevicesEndpoints(this IEndpointRouteBuilder endpoints) + { + var devices = endpoints.MapVersionedEndpointGroup("Devices", "Devices", 2, OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme); + devices.MapRegisterDeviceEndpoint(); + devices.MapUpdateActiveDeviceEndpoint(); + devices.MapChangePasswordEndpoint(); + devices.MapListDevicesEndpoint(); + devices.MapGetActiveDeviceEndpoint(); + devices.MapDeleteDeviceEndpoint(); + + var identities = endpoints.MapVersionedEndpointGroup("Identities", "Identities", 2, OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme); + identities.MapCreateIdentityEndpoint(); + identities.MapGetOwnIdentityEndpoint(); + identities.MapIsIdentityOfUserDeletedEndpoint(); + identities.MapChangeFeatureFlagsEndpoint(); + identities.MapListFeatureFlagsEndpoint(); + + var deletion = endpoints.MapVersionedEndpointGroup("Identities/Self/DeletionProcesses", "IdentityDeletionProcesses", 2, OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme); + deletion.MapStartDeletionProcessEndpoint(); + deletion.MapGetDeletionProcessAsOwnerEndpoint(); + deletion.MapListDeletionProcessesAsOwnerEndpoint(); + deletion.MapCancelDeletionProcessEndpoint(); + + var push = endpoints.MapVersionedEndpointGroup("Devices/Self/PushNotifications", "PushNotifications", 2, OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme); + push.MapUpdateDeviceRegistrationEndpoint(); + push.MapDeleteDeviceRegistrationEndpoint(); + push.MapSendTestNotificationEndpoint(); + + var notifications = endpoints.MapVersionedEndpointGroup("Notifications", "Notifications", 2, OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme); + notifications.MapSendNotificationEndpoint(); + + endpoints.MapExchangeTokenEndpoint(); + return endpoints; + } +} diff --git a/Modules/Devices/src/Devices.Application/Extensions/IEventBusExtensions.cs b/Modules/Devices/src/Devices.Module/DevicesEventBusExtensions.cs similarity index 74% rename from Modules/Devices/src/Devices.Application/Extensions/IEventBusExtensions.cs rename to Modules/Devices/src/Devices.Module/DevicesEventBusExtensions.cs index 415d9e3fae..00f582e863 100644 --- a/Modules/Devices/src/Devices.Application/Extensions/IEventBusExtensions.cs +++ b/Modules/Devices/src/Devices.Module/DevicesEventBusExtensions.cs @@ -1,18 +1,18 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.Modules.Announcements.Contracts.DomainEvents; -using Backbone.Modules.Devices.Application.DomainEvents.Incoming.AnnouncementCreated; -using Backbone.Modules.Devices.Application.DomainEvents.Incoming.BackupDeviceUsed; -using Backbone.Modules.Devices.Application.DomainEvents.Incoming.DatawalletModificationCreated; -using Backbone.Modules.Devices.Application.DomainEvents.Incoming.ExternalEventCreated; -using Backbone.Modules.Devices.Application.DomainEvents.Incoming.IdentityDeletionProcessStarted; -using Backbone.Modules.Devices.Application.DomainEvents.Incoming.TokenLocked; using Backbone.Modules.Devices.Contracts.DomainEvents; +using Backbone.Modules.Devices.Module.Features.DomainEvents.AnnouncementCreated; +using Backbone.Modules.Devices.Module.Features.DomainEvents.BackupDeviceUsed; +using Backbone.Modules.Devices.Module.Features.DomainEvents.DatawalletModificationCreated; +using Backbone.Modules.Devices.Module.Features.DomainEvents.ExternalEventCreated; +using Backbone.Modules.Devices.Module.Features.DomainEvents.IdentityDeletionProcessStarted; +using Backbone.Modules.Devices.Module.Features.DomainEvents.TokenLocked; using Backbone.Modules.Synchronization.Contracts.DomainEvents; using Backbone.Modules.Tokens.Contracts.DomainEvents; -namespace Backbone.Modules.Devices.Application.Extensions; +namespace Backbone.Modules.Devices.Module; -public static class IEventBusExtensions +internal static class DevicesEventBusExtensions { extension(IEventBus eventBus) { diff --git a/Modules/Devices/src/Devices.Module/DevicesModule.cs b/Modules/Devices/src/Devices.Module/DevicesModule.cs index 4c42440da4..823664ae9b 100644 --- a/Modules/Devices/src/Devices.Module/DevicesModule.cs +++ b/Modules/Devices/src/Devices.Module/DevicesModule.cs @@ -3,11 +3,9 @@ using Backbone.BuildingBlocks.Module; using Backbone.Crypto.Abstractions; using Backbone.Crypto.Implementations; -using Backbone.Modules.Devices.Application; -using Backbone.Modules.Devices.Application.Extensions; -using Backbone.Modules.Devices.Infrastructure; using Backbone.Modules.Devices.Infrastructure.Persistence; using Backbone.Modules.Devices.Infrastructure.PushNotifications; +using Backbone.Modules.Devices.Infrastructure; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; diff --git a/Applications/ConsumerApi/src/Controllers/AuthorizationController.cs b/Modules/Devices/src/Devices.Module/Features/Authorization/ExchangeToken/Endpoint.cs similarity index 66% rename from Applications/ConsumerApi/src/Controllers/AuthorizationController.cs rename to Modules/Devices/src/Devices.Module/Features/Authorization/ExchangeToken/Endpoint.cs index 444d583ffa..56c33b7a8e 100644 --- a/Applications/ConsumerApi/src/Controllers/AuthorizationController.cs +++ b/Modules/Devices/src/Devices.Module/Features/Authorization/ExchangeToken/Endpoint.cs @@ -1,46 +1,35 @@ using System.Security.Claims; -using Backbone.BuildingBlocks.API.Mvc; +using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.Modules.Devices.Application; using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.Tooling.Extensions; -using MediatR; -using Microsoft.AspNetCore; using Microsoft.AspNetCore.Authentication; -using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Identity; -using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; +using Microsoft.AspNetCore; using Microsoft.IdentityModel.Tokens; using OpenIddict.Abstractions; using OpenIddict.Server.AspNetCore; -using OpenIddict.Validation.AspNetCore; using static OpenIddict.Abstractions.OpenIddictConstants; -namespace Backbone.ConsumerApi.Controllers; +namespace Backbone.Modules.Devices.Module.Features.Authorization.ExchangeToken; -[Authorize(OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme)] -public class AuthorizationController : ApiControllerBase +internal static class Endpoint { - private readonly UserManager _userManager; - private readonly SignInManager _signInManager; - - public AuthorizationController( - IMediator mediator, - SignInManager signInManager, - UserManager userManager) : base(mediator) + public static IEndpointRouteBuilder MapExchangeTokenEndpoint(this IEndpointRouteBuilder endpoints) { - _signInManager = signInManager; - _userManager = userManager; + endpoints.MapPost("/connect/token", Handle) + .AllowAnonymous() + .ExcludeFromDescription() + .WithMinimalApiErrorHandling(); + return endpoints; } - [HttpPost("~/connect/token")] - [Produces("application/json")] - [Consumes("application/x-www-form-urlencoded")] - [AllowAnonymous] - [ApiExplorerSettings(IgnoreApi = true)] - public async Task Exchange() + private static async Task Handle(HttpContext context, UserManager userManager, SignInManager signInManager) { - var request = HttpContext.GetOpenIddictServerRequest() ?? + var request = context.GetOpenIddictServerRequest() ?? throw new OperationFailedException(ApplicationErrors.Authentication.InvalidOAuthRequest("no request was found")); if (!request.IsPasswordGrantType()) @@ -49,14 +38,14 @@ public async Task Exchange() if (request.Username.IsNullOrEmpty()) throw new OperationFailedException(ApplicationErrors.Authentication.InvalidOAuthRequest("missing username")); - var user = await _userManager.FindByNameAsync(request.Username!); + var user = await userManager.FindByNameAsync(request.Username!); if (user == null || user.Device.Identity.IsGracePeriodOver) return InvalidUserCredentials(); if (request.Password.IsNullOrEmpty()) throw new OperationFailedException(ApplicationErrors.Authentication.InvalidOAuthRequest("missing password")); - var result = await _signInManager.CheckPasswordSignInAsync(user, request.Password, lockoutOnFailure: true); + var result = await signInManager.CheckPasswordSignInAsync(user, request.Password, lockoutOnFailure: true); if (result.IsLockedOut) return UserLockedOut(); if (!result.Succeeded) @@ -80,10 +69,10 @@ public async Task Exchange() identity.SetDestinations(GetDestinations); - return SignIn(new ClaimsPrincipal(identity), OpenIddictServerAspNetCoreDefaults.AuthenticationScheme); + return Results.SignIn(new ClaimsPrincipal(identity), authenticationScheme: OpenIddictServerAspNetCoreDefaults.AuthenticationScheme); } - private ForbidResult InvalidUserCredentials() + private static IResult InvalidUserCredentials() { var properties = new AuthenticationProperties(new Dictionary { @@ -92,10 +81,10 @@ private ForbidResult InvalidUserCredentials() "The username/password couple is invalid." }); - return Forbid(properties, OpenIddictServerAspNetCoreDefaults.AuthenticationScheme); + return Results.Forbid(properties: properties, authenticationSchemes: [OpenIddictServerAspNetCoreDefaults.AuthenticationScheme]); } - private ForbidResult UserLockedOut() + private static IResult UserLockedOut() { var properties = new AuthenticationProperties(new Dictionary { @@ -104,7 +93,7 @@ private ForbidResult UserLockedOut() "The user is temporarily locked out, please try again in a few minutes." }); - return Forbid(properties, OpenIddictServerAspNetCoreDefaults.AuthenticationScheme); + return Results.Forbid(properties: properties, authenticationSchemes: [OpenIddictServerAspNetCoreDefaults.AuthenticationScheme]); } private static IEnumerable GetDestinations(Claim claim) diff --git a/Modules/Devices/src/Devices.Application/Clients/Commands/ChangeClientSecret/ChangeClientSecretCommand.cs b/Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Command.cs similarity index 70% rename from Modules/Devices/src/Devices.Application/Clients/Commands/ChangeClientSecret/ChangeClientSecretCommand.cs rename to Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Command.cs index 13d0e038a5..2f49dcc0c6 100644 --- a/Modules/Devices/src/Devices.Application/Clients/Commands/ChangeClientSecret/ChangeClientSecretCommand.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Devices.Application.Clients.Commands.ChangeClientSecret; +namespace Backbone.Modules.Devices.Module.Features.Clients.ChangeClientSecret; public class ChangeClientSecretCommand : IRequest { diff --git a/Modules/Devices/src/Devices.Application/Clients/Commands/ChangeClientSecret/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Handler.cs similarity index 84% rename from Modules/Devices/src/Devices.Application/Clients/Commands/ChangeClientSecret/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Handler.cs index 5a6ba19e12..2b0bfcdd9b 100644 --- a/Modules/Devices/src/Devices.Application/Clients/Commands/ChangeClientSecret/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Handler.cs @@ -1,9 +1,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities; +using Backbone.Modules.Devices.Module.Features.Clients.Shared; using MediatR; -namespace Backbone.Modules.Devices.Application.Clients.Commands.ChangeClientSecret; +namespace Backbone.Modules.Devices.Module.Features.Clients.ChangeClientSecret; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/Clients/Commands/ChangeClientSecret/ChangeClientSecretResponse.cs b/Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Response.cs similarity index 89% rename from Modules/Devices/src/Devices.Application/Clients/Commands/ChangeClientSecret/ChangeClientSecretResponse.cs rename to Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Response.cs index 695a8f95bd..a7a6b82025 100644 --- a/Modules/Devices/src/Devices.Application/Clients/Commands/ChangeClientSecret/ChangeClientSecretResponse.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Response.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Devices.Domain.Entities; -namespace Backbone.Modules.Devices.Application.Clients.Commands.ChangeClientSecret; +namespace Backbone.Modules.Devices.Module.Features.Clients.ChangeClientSecret; public class ChangeClientSecretResponse { diff --git a/Modules/Devices/src/Devices.Application/Clients/Commands/ChangeClientSecret/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Validator.cs similarity index 74% rename from Modules/Devices/src/Devices.Application/Clients/Commands/ChangeClientSecret/Validator.cs rename to Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Validator.cs index b88555cd0e..00dc5b6622 100644 --- a/Modules/Devices/src/Devices.Application/Clients/Commands/ChangeClientSecret/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Validator.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.FluentValidation; using FluentValidation; -namespace Backbone.Modules.Devices.Application.Clients.Commands.ChangeClientSecret; +namespace Backbone.Modules.Devices.Module.Features.Clients.ChangeClientSecret; public class Validator : AbstractValidator { diff --git a/Modules/Devices/src/Devices.Application/Clients/Commands/CreateClient/CreateClientCommand.cs b/Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Command.cs similarity index 80% rename from Modules/Devices/src/Devices.Application/Clients/Commands/CreateClient/CreateClientCommand.cs rename to Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Command.cs index 02fffe49a1..1c14175435 100644 --- a/Modules/Devices/src/Devices.Application/Clients/Commands/CreateClient/CreateClientCommand.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Devices.Application.Clients.Commands.CreateClient; +namespace Backbone.Modules.Devices.Module.Features.Clients.CreateClient; public class CreateClientCommand : IRequest { diff --git a/Modules/Devices/src/Devices.Application/Clients/Commands/CreateClient/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Handler.cs similarity index 94% rename from Modules/Devices/src/Devices.Application/Clients/Commands/CreateClient/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Handler.cs index 1d2dcab71e..e8ebc1de7c 100644 --- a/Modules/Devices/src/Devices.Application/Clients/Commands/CreateClient/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Handler.cs @@ -1,12 +1,13 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Aggregates.Tier; using Backbone.Modules.Devices.Domain.Entities; +using Backbone.Modules.Devices.Module.Features.Clients.Shared; using Backbone.Tooling; using MediatR; using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; -namespace Backbone.Modules.Devices.Application.Clients.Commands.CreateClient; +namespace Backbone.Modules.Devices.Module.Features.Clients.CreateClient; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/Clients/Commands/CreateClient/CreateClientResponse.cs b/Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Response.cs similarity index 89% rename from Modules/Devices/src/Devices.Application/Clients/Commands/CreateClient/CreateClientResponse.cs rename to Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Response.cs index 02dc88c016..6092f6bad0 100644 --- a/Modules/Devices/src/Devices.Application/Clients/Commands/CreateClient/CreateClientResponse.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Response.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Devices.Domain.Entities; -namespace Backbone.Modules.Devices.Application.Clients.Commands.CreateClient; +namespace Backbone.Modules.Devices.Module.Features.Clients.CreateClient; public class CreateClientResponse { diff --git a/Modules/Devices/src/Devices.Application/Clients/Commands/CreateClient/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Validator.cs similarity index 78% rename from Modules/Devices/src/Devices.Application/Clients/Commands/CreateClient/Validator.cs rename to Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Validator.cs index 99ac37da1f..4e9558d8b9 100644 --- a/Modules/Devices/src/Devices.Application/Clients/Commands/CreateClient/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Validator.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.FluentValidation; using FluentValidation; -namespace Backbone.Modules.Devices.Application.Clients.Commands.CreateClient; +namespace Backbone.Modules.Devices.Module.Features.Clients.CreateClient; public class CreateClientCommandValidator : AbstractValidator { diff --git a/Modules/Devices/src/Devices.Application/Clients/Commands/DeleteClient/DeleteClientCommand.cs b/Modules/Devices/src/Devices.Module/Features/Clients/DeleteClient/Command.cs similarity index 59% rename from Modules/Devices/src/Devices.Application/Clients/Commands/DeleteClient/DeleteClientCommand.cs rename to Modules/Devices/src/Devices.Module/Features/Clients/DeleteClient/Command.cs index 0dc4ccf145..03cf2af17b 100644 --- a/Modules/Devices/src/Devices.Application/Clients/Commands/DeleteClient/DeleteClientCommand.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/DeleteClient/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Devices.Application.Clients.Commands.DeleteClient; +namespace Backbone.Modules.Devices.Module.Features.Clients.DeleteClient; public class DeleteClientCommand : IRequest { diff --git a/Modules/Devices/src/Devices.Application/Clients/Commands/DeleteClient/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Clients/DeleteClient/Handler.cs similarity index 87% rename from Modules/Devices/src/Devices.Application/Clients/Commands/DeleteClient/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Clients/DeleteClient/Handler.cs index 9cb9cbf796..6ae727f087 100644 --- a/Modules/Devices/src/Devices.Application/Clients/Commands/DeleteClient/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/DeleteClient/Handler.cs @@ -1,8 +1,8 @@ -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using MediatR; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Devices.Application.Clients.Commands.DeleteClient; +namespace Backbone.Modules.Devices.Module.Features.Clients.DeleteClient; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/Clients/Commands/DeleteClient/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Clients/DeleteClient/Validator.cs similarity index 78% rename from Modules/Devices/src/Devices.Application/Clients/Commands/DeleteClient/Validator.cs rename to Modules/Devices/src/Devices.Module/Features/Clients/DeleteClient/Validator.cs index 710ed61ea5..59643a910d 100644 --- a/Modules/Devices/src/Devices.Application/Clients/Commands/DeleteClient/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/DeleteClient/Validator.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.FluentValidation; using FluentValidation; -namespace Backbone.Modules.Devices.Application.Clients.Commands.DeleteClient; +namespace Backbone.Modules.Devices.Module.Features.Clients.DeleteClient; public class DeleteClientCommandValidator : AbstractValidator { diff --git a/Modules/Devices/src/Devices.Application/Clients/Queries/GetClient/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Clients/GetClient/Handler.cs similarity index 76% rename from Modules/Devices/src/Devices.Application/Clients/Queries/GetClient/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Clients/GetClient/Handler.cs index ae91a11258..3d0a253df5 100644 --- a/Modules/Devices/src/Devices.Application/Clients/Queries/GetClient/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/GetClient/Handler.cs @@ -1,10 +1,10 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.Modules.Devices.Application.Clients.DTOs; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities; +using Backbone.Modules.Devices.Module.Features.Clients.Shared; using MediatR; -namespace Backbone.Modules.Devices.Application.Clients.Queries.GetClient; +namespace Backbone.Modules.Devices.Module.Features.Clients.GetClient; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Module/Features/Clients/GetClient/Query.cs b/Modules/Devices/src/Devices.Module/Features/Clients/GetClient/Query.cs new file mode 100644 index 0000000000..90b56048c3 --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/Clients/GetClient/Query.cs @@ -0,0 +1,9 @@ +using Backbone.Modules.Devices.Module.Features.Clients.Shared; +using MediatR; + +namespace Backbone.Modules.Devices.Module.Features.Clients.GetClient; + +public class GetClientQuery : IRequest +{ + public required string Id { get; set; } +} diff --git a/Modules/Devices/src/Devices.Application/Clients/Queries/ListClients/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Clients/ListClients/Handler.cs similarity index 83% rename from Modules/Devices/src/Devices.Application/Clients/Queries/ListClients/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Clients/ListClients/Handler.cs index e129e1197b..e8a9d1401f 100644 --- a/Modules/Devices/src/Devices.Application/Clients/Queries/ListClients/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/ListClients/Handler.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using MediatR; -namespace Backbone.Modules.Devices.Application.Clients.Queries.ListClients; +namespace Backbone.Modules.Devices.Module.Features.Clients.ListClients; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/Clients/Queries/ListClients/ListClientsQuery.cs b/Modules/Devices/src/Devices.Module/Features/Clients/ListClients/Query.cs similarity index 51% rename from Modules/Devices/src/Devices.Application/Clients/Queries/ListClients/ListClientsQuery.cs rename to Modules/Devices/src/Devices.Module/Features/Clients/ListClients/Query.cs index bacc63ec78..c71b45aecb 100644 --- a/Modules/Devices/src/Devices.Application/Clients/Queries/ListClients/ListClientsQuery.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/ListClients/Query.cs @@ -1,5 +1,5 @@ using MediatR; -namespace Backbone.Modules.Devices.Application.Clients.Queries.ListClients; +namespace Backbone.Modules.Devices.Module.Features.Clients.ListClients; public class ListClientsQuery : IRequest; diff --git a/Modules/Devices/src/Devices.Application/Clients/Queries/ListClients/ListClientsResponse.cs b/Modules/Devices/src/Devices.Module/Features/Clients/ListClients/Response.cs similarity index 76% rename from Modules/Devices/src/Devices.Application/Clients/Queries/ListClients/ListClientsResponse.cs rename to Modules/Devices/src/Devices.Module/Features/Clients/ListClients/Response.cs index 7894e11b7a..d98c990df9 100644 --- a/Modules/Devices/src/Devices.Application/Clients/Queries/ListClients/ListClientsResponse.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/ListClients/Response.cs @@ -1,8 +1,8 @@ using Backbone.BuildingBlocks.Application.CQRS.BaseClasses; -using Backbone.Modules.Devices.Application.Clients.DTOs; using Backbone.Modules.Devices.Domain.Entities; +using Backbone.Modules.Devices.Module.Features.Clients.Shared; -namespace Backbone.Modules.Devices.Application.Clients.Queries.ListClients; +namespace Backbone.Modules.Devices.Module.Features.Clients.ListClients; public class ListClientsResponse : CollectionResponseBase { diff --git a/Modules/Devices/src/Devices.Application/Clients/DTOs/ClientDTO.cs b/Modules/Devices/src/Devices.Module/Features/Clients/Shared/ClientDTO.cs similarity index 90% rename from Modules/Devices/src/Devices.Application/Clients/DTOs/ClientDTO.cs rename to Modules/Devices/src/Devices.Module/Features/Clients/Shared/ClientDTO.cs index a8e4e50105..9bd92649c3 100644 --- a/Modules/Devices/src/Devices.Application/Clients/DTOs/ClientDTO.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/Shared/ClientDTO.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Devices.Domain.Entities; -namespace Backbone.Modules.Devices.Application.Clients.DTOs; +namespace Backbone.Modules.Devices.Module.Features.Clients.Shared; public class ClientDTO { diff --git a/Modules/Devices/src/Devices.Application/ClientIdGenerator.cs b/Modules/Devices/src/Devices.Module/Features/Clients/Shared/ClientIdGenerator.cs similarity index 95% rename from Modules/Devices/src/Devices.Application/ClientIdGenerator.cs rename to Modules/Devices/src/Devices.Module/Features/Clients/Shared/ClientIdGenerator.cs index 259d0796d3..d4124501ef 100644 --- a/Modules/Devices/src/Devices.Application/ClientIdGenerator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/Shared/ClientIdGenerator.cs @@ -1,6 +1,6 @@ using Backbone.BuildingBlocks.Domain; -namespace Backbone.Modules.Devices.Application; +namespace Backbone.Modules.Devices.Module.Features.Clients.Shared; public static class ClientIdGenerator { diff --git a/Modules/Devices/src/Devices.Application/PasswordGenerator.cs b/Modules/Devices/src/Devices.Module/Features/Clients/Shared/PasswordGenerator.cs similarity index 88% rename from Modules/Devices/src/Devices.Application/PasswordGenerator.cs rename to Modules/Devices/src/Devices.Module/Features/Clients/Shared/PasswordGenerator.cs index 9dabf16b78..639d215a0f 100644 --- a/Modules/Devices/src/Devices.Application/PasswordGenerator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/Shared/PasswordGenerator.cs @@ -1,7 +1,7 @@ using System.Security.Cryptography; using System.Text; -namespace Backbone.Modules.Devices.Application; +namespace Backbone.Modules.Devices.Module.Features.Clients.Shared; public static class PasswordGenerator { diff --git a/Modules/Devices/src/Devices.Application/Clients/Commands/UpdateClient/UpdateClientCommand.cs b/Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Command.cs similarity index 75% rename from Modules/Devices/src/Devices.Application/Clients/Commands/UpdateClient/UpdateClientCommand.cs rename to Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Command.cs index 71374724f7..ee1b512685 100644 --- a/Modules/Devices/src/Devices.Application/Clients/Commands/UpdateClient/UpdateClientCommand.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Devices.Application.Clients.Commands.UpdateClient; +namespace Backbone.Modules.Devices.Module.Features.Clients.UpdateClient; public class UpdateClientCommand : IRequest { diff --git a/Modules/Devices/src/Devices.Application/Clients/Commands/UpdateClient/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Handler.cs similarity index 92% rename from Modules/Devices/src/Devices.Application/Clients/Commands/UpdateClient/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Handler.cs index 54d4714801..8fb34fa5fd 100644 --- a/Modules/Devices/src/Devices.Application/Clients/Commands/UpdateClient/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Handler.cs @@ -1,11 +1,11 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Aggregates.Tier; using Backbone.Modules.Devices.Domain.Entities; using MediatR; using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; -namespace Backbone.Modules.Devices.Application.Clients.Commands.UpdateClient; +namespace Backbone.Modules.Devices.Module.Features.Clients.UpdateClient; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/Clients/Commands/UpdateClient/UpdateClientResponse.cs b/Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Response.cs similarity index 88% rename from Modules/Devices/src/Devices.Application/Clients/Commands/UpdateClient/UpdateClientResponse.cs rename to Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Response.cs index e6f83025f3..6761d7bbd3 100644 --- a/Modules/Devices/src/Devices.Application/Clients/Commands/UpdateClient/UpdateClientResponse.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Response.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Devices.Domain.Entities; -namespace Backbone.Modules.Devices.Application.Clients.Commands.UpdateClient; +namespace Backbone.Modules.Devices.Module.Features.Clients.UpdateClient; public class UpdateClientResponse { diff --git a/Modules/Devices/src/Devices.Application/Clients/Commands/UpdateClient/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Validator.cs similarity index 81% rename from Modules/Devices/src/Devices.Application/Clients/Commands/UpdateClient/Validator.cs rename to Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Validator.cs index eb8a622ca8..599c2e290f 100644 --- a/Modules/Devices/src/Devices.Application/Clients/Commands/UpdateClient/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Validator.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.FluentValidation; using FluentValidation; -namespace Backbone.Modules.Devices.Application.Clients.Commands.UpdateClient; +namespace Backbone.Modules.Devices.Module.Features.Clients.UpdateClient; public class UpdateClientCommandValidator : AbstractValidator { diff --git a/Modules/Devices/src/Devices.Application/Devices/Commands/ChangePassword/ChangePasswordCommand.cs b/Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Command.cs similarity index 68% rename from Modules/Devices/src/Devices.Application/Devices/Commands/ChangePassword/ChangePasswordCommand.cs rename to Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Command.cs index 44cde23501..e39dfc38bd 100644 --- a/Modules/Devices/src/Devices.Application/Devices/Commands/ChangePassword/ChangePasswordCommand.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Devices.Application.Devices.Commands.ChangePassword; +namespace Backbone.Modules.Devices.Module.Features.Devices.ChangePassword; public class ChangePasswordCommand : IRequest { diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Endpoint.cs new file mode 100644 index 0000000000..5117758afd --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Endpoint.cs @@ -0,0 +1,29 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Devices.Module.Features.Devices.ChangePassword; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapChangePasswordEndpoint(this RouteGroupBuilder group) + { + group.MapPut("Self/Password", Handle) + .Produces(StatusCodes.Status204NoContent) + .Produces(StatusCodes.Status400BadRequest); + return group; + } + + private static async Task Handle([FromBody] ChangePasswordCommand request, IMediator mediator, CancellationToken cancellationToken) + { + if (request.OldPassword == null || request.NewPassword == null) + throw new BadHttpRequestException("Required request fields must not be null."); + + await mediator.Send(request, cancellationToken); + return Results.NoContent(); + } +} diff --git a/Modules/Devices/src/Devices.Application/Devices/Commands/ChangePassword/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Handler.cs similarity index 66% rename from Modules/Devices/src/Devices.Application/Devices/Commands/ChangePassword/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Handler.cs index 7c1ebe5fef..1d5698f5f6 100644 --- a/Modules/Devices/src/Devices.Application/Devices/Commands/ChangePassword/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Handler.cs @@ -1,24 +1,23 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities.Identities; using MediatR; -using Microsoft.AspNetCore.Identity; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Devices.Application.Devices.Commands.ChangePassword; +namespace Backbone.Modules.Devices.Module.Features.Devices.ChangePassword; public class Handler : IRequestHandler { private readonly DeviceId _activeDevice; private readonly ILogger _logger; - private readonly UserManager _userManager; + private readonly IDevicePasswordService _passwordService; private readonly IIdentitiesRepository _identitiesRepository; - public Handler(UserManager userManager, IUserContext userContext, ILogger logger, IIdentitiesRepository identitiesRepository) + public Handler(IDevicePasswordService passwordService, IUserContext userContext, ILogger logger, IIdentitiesRepository identitiesRepository) { - _userManager = userManager; + _passwordService = passwordService; _logger = logger; _activeDevice = userContext.GetDeviceId(); _identitiesRepository = identitiesRepository; @@ -28,10 +27,10 @@ public async Task Handle(ChangePasswordCommand request, CancellationToken cancel { var currentDevice = await _identitiesRepository.Get(_activeDevice, cancellationToken, track: true) ?? throw new NotFoundException(nameof(Device)); - var changePasswordResult = await _userManager.ChangePasswordAsync(currentDevice.User, request.OldPassword, request.NewPassword); + var error = await _passwordService.ChangePassword(currentDevice.User, request.OldPassword, request.NewPassword); - if (!changePasswordResult.Succeeded) - throw new OperationFailedException(ApplicationErrors.Devices.ChangePasswordFailed(changePasswordResult.Errors.First().Description)); + if (error != null) + throw new OperationFailedException(ApplicationErrors.Devices.ChangePasswordFailed(error)); _logger.ChangedPasswordForDevice(); } diff --git a/Modules/Devices/src/Devices.Application/Devices/Commands/ChangePassword/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Validator.cs similarity index 81% rename from Modules/Devices/src/Devices.Application/Devices/Commands/ChangePassword/Validator.cs rename to Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Validator.cs index 93cd8083ca..cbe0a3746b 100644 --- a/Modules/Devices/src/Devices.Application/Devices/Commands/ChangePassword/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Validator.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.FluentValidation; using FluentValidation; -namespace Backbone.Modules.Devices.Application.Devices.Commands.ChangePassword; +namespace Backbone.Modules.Devices.Module.Features.Devices.ChangePassword; // ReSharper disable once UnusedMember.Global public class Validator : AbstractValidator diff --git a/Modules/Devices/src/Devices.Application/Devices/Commands/DeleteDevice/DeleteDeviceCommand.cs b/Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Command.cs similarity index 59% rename from Modules/Devices/src/Devices.Application/Devices/Commands/DeleteDevice/DeleteDeviceCommand.cs rename to Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Command.cs index f76a75ff30..39019160f4 100644 --- a/Modules/Devices/src/Devices.Application/Devices/Commands/DeleteDevice/DeleteDeviceCommand.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Devices.Application.Devices.Commands.DeleteDevice; +namespace Backbone.Modules.Devices.Module.Features.Devices.DeleteDevice; public class DeleteDeviceCommand : IRequest { diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Endpoint.cs new file mode 100644 index 0000000000..eb04929222 --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Endpoint.cs @@ -0,0 +1,27 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Devices.Module.Features.Devices.DeleteDevice; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapDeleteDeviceEndpoint(this RouteGroupBuilder group) + { + group.MapDelete("{id}", Handle) + .Produces(StatusCodes.Status204NoContent) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status404NotFound); + return group; + } + + private static async Task Handle([FromRoute] string id, IMediator mediator, CancellationToken cancellationToken) + { + await mediator.Send(new DeleteDeviceCommand { DeviceId = id }, cancellationToken); + return Results.NoContent(); + } +} diff --git a/Modules/Devices/src/Devices.Application/Devices/Commands/DeleteDevice/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Handler.cs similarity index 91% rename from Modules/Devices/src/Devices.Application/Devices/Commands/DeleteDevice/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Handler.cs index 1a42b32f86..aeffeee7a0 100644 --- a/Modules/Devices/src/Devices.Application/Devices/Commands/DeleteDevice/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Handler.cs @@ -1,12 +1,12 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities.Identities; using MediatR; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Devices.Application.Devices.Commands.DeleteDevice; +namespace Backbone.Modules.Devices.Module.Features.Devices.DeleteDevice; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/Devices/Commands/DeleteDevice/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Validator.cs similarity index 82% rename from Modules/Devices/src/Devices.Application/Devices/Commands/DeleteDevice/Validator.cs rename to Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Validator.cs index a99ffeb698..6097e8a206 100644 --- a/Modules/Devices/src/Devices.Application/Devices/Commands/DeleteDevice/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Validator.cs @@ -2,7 +2,7 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; using FluentValidation; -namespace Backbone.Modules.Devices.Application.Devices.Commands.DeleteDevice; +namespace Backbone.Modules.Devices.Module.Features.Devices.DeleteDevice; // ReSharper disable once UnusedMember.Global public class Validator : AbstractValidator diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/ExecuteHousekeeping/Command.cs b/Modules/Devices/src/Devices.Module/Features/Devices/ExecuteHousekeeping/Command.cs new file mode 100644 index 0000000000..8cf7c45d6e --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/Devices/ExecuteHousekeeping/Command.cs @@ -0,0 +1,5 @@ +using MediatR; + +namespace Backbone.Modules.Devices.Module.Features.Devices.ExecuteHousekeeping; + +public class ExecuteHousekeepingCommand : IRequest; diff --git a/Modules/Devices/src/Devices.Application/Devices/Commands/ExecuteHousekeeping/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Devices/ExecuteHousekeeping/Handler.cs similarity index 84% rename from Modules/Devices/src/Devices.Application/Devices/Commands/ExecuteHousekeeping/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Devices/ExecuteHousekeeping/Handler.cs index 17c6931456..a624e6d0b4 100644 --- a/Modules/Devices/src/Devices.Application/Devices/Commands/ExecuteHousekeeping/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/ExecuteHousekeeping/Handler.cs @@ -1,9 +1,9 @@ -using Backbone.BuildingBlocks.Application.Housekeeping; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.BuildingBlocks.Application.Housekeeping; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities.Identities; using MediatR; -namespace Backbone.Modules.Devices.Application.Devices.Commands.ExecuteHousekeeping; +namespace Backbone.Modules.Devices.Module.Features.Devices.ExecuteHousekeeping; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/GetActiveDevice/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Devices/GetActiveDevice/Endpoint.cs new file mode 100644 index 0000000000..869d56c443 --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/Devices/GetActiveDevice/Endpoint.cs @@ -0,0 +1,26 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using Backbone.Modules.Devices.Module.Features.Devices.Shared; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Devices.Module.Features.Devices.GetActiveDevice; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapGetActiveDeviceEndpoint(this RouteGroupBuilder group) + { + group.MapGet("Self", Handle) + .Produces>(StatusCodes.Status200OK); + return group; + } + + private static async Task Handle(IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new GetActiveDeviceQuery(), cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Devices/src/Devices.Application/Devices/Queries/GetActiveDevice/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Devices/GetActiveDevice/Handler.cs similarity index 80% rename from Modules/Devices/src/Devices.Application/Devices/Queries/GetActiveDevice/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Devices/GetActiveDevice/Handler.cs index 31bccf4cb8..3c3b23667c 100644 --- a/Modules/Devices/src/Devices.Application/Devices/Queries/GetActiveDevice/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/GetActiveDevice/Handler.cs @@ -1,11 +1,11 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; -using Backbone.Modules.Devices.Application.Devices.DTOs; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Module.Features.Devices.Shared; using MediatR; -namespace Backbone.Modules.Devices.Application.Devices.Queries.GetActiveDevice; +namespace Backbone.Modules.Devices.Module.Features.Devices.GetActiveDevice; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/GetActiveDevice/Query.cs b/Modules/Devices/src/Devices.Module/Features/Devices/GetActiveDevice/Query.cs new file mode 100644 index 0000000000..2e7588faab --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/Devices/GetActiveDevice/Query.cs @@ -0,0 +1,6 @@ +using Backbone.Modules.Devices.Module.Features.Devices.Shared; +using MediatR; + +namespace Backbone.Modules.Devices.Module.Features.Devices.GetActiveDevice; + +public class GetActiveDeviceQuery : IRequest; diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Endpoint.cs new file mode 100644 index 0000000000..bd57f83410 --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Endpoint.cs @@ -0,0 +1,35 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; +using Backbone.BuildingBlocks.Application.Pagination; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; +using Microsoft.Extensions.Options; +using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; + +namespace Backbone.Modules.Devices.Module.Features.Devices.ListDevices; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapListDevicesEndpoint(this RouteGroupBuilder group) + { + group.MapGet("", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest); + return group; + } + + private static async Task Handle([FromQuery(Name = "PageNumber")] int? pageNumber, [FromQuery(Name = "PageSize")] int? pageSize, + [FromQuery] string[]? ids, IMediator mediator, IOptions options, CancellationToken cancellationToken) + { + var paginationFilter = new PaginationFilter { PageNumber = pageNumber ?? 1, PageSize = pageSize ?? options.Value.Pagination.DefaultPageSize }; + if (paginationFilter.PageSize > options.Value.Pagination.MaxPageSize) + throw new ApplicationException(GenericApplicationErrors.Validation.InvalidPageSize(options.Value.Pagination.MaxPageSize)); + + var response = await mediator.Send(new ListDevicesQuery { PaginationFilter = paginationFilter, Ids = ids ?? [] }, cancellationToken); + return EnvelopeHttpResults.Paged(response); + } +} diff --git a/Modules/Devices/src/Devices.Application/Devices/Queries/ListDevices/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Handler.cs similarity index 85% rename from Modules/Devices/src/Devices.Application/Devices/Queries/ListDevices/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Handler.cs index de08dc9701..34fa8bcf9a 100644 --- a/Modules/Devices/src/Devices.Application/Devices/Queries/ListDevices/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Handler.cs @@ -1,9 +1,9 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using MediatR; -namespace Backbone.Modules.Devices.Application.Devices.Queries.ListDevices; +namespace Backbone.Modules.Devices.Module.Features.Devices.ListDevices; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/Devices/Queries/ListDevices/ListDevicesQuery.cs b/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Query.cs similarity index 77% rename from Modules/Devices/src/Devices.Application/Devices/Queries/ListDevices/ListDevicesQuery.cs rename to Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Query.cs index 7227abde12..f4035e12b8 100644 --- a/Modules/Devices/src/Devices.Application/Devices/Queries/ListDevices/ListDevicesQuery.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Query.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.Pagination; using MediatR; -namespace Backbone.Modules.Devices.Application.Devices.Queries.ListDevices; +namespace Backbone.Modules.Devices.Module.Features.Devices.ListDevices; public class ListDevicesQuery : IRequest { diff --git a/Modules/Devices/src/Devices.Application/Devices/Queries/ListDevices/ListDevicesResponse.cs b/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Response.cs similarity index 80% rename from Modules/Devices/src/Devices.Application/Devices/Queries/ListDevices/ListDevicesResponse.cs rename to Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Response.cs index 7eda837c24..fd25785ace 100644 --- a/Modules/Devices/src/Devices.Application/Devices/Queries/ListDevices/ListDevicesResponse.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Response.cs @@ -1,9 +1,9 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.Persistence.Database; using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.Modules.Devices.Application.Devices.DTOs; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Module.Features.Devices.Shared; -namespace Backbone.Modules.Devices.Application.Devices.Queries.ListDevices; +namespace Backbone.Modules.Devices.Module.Features.Devices.ListDevices; public class ListDevicesResponse : PagedResponse { diff --git a/Modules/Devices/src/Devices.Application/Devices/Queries/ListDevices/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Validator.cs similarity index 65% rename from Modules/Devices/src/Devices.Application/Devices/Queries/ListDevices/Validator.cs rename to Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Validator.cs index 2acbb5d489..14f7da75ac 100644 --- a/Modules/Devices/src/Devices.Application/Devices/Queries/ListDevices/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Validator.cs @@ -1,8 +1,8 @@ -using Backbone.BuildingBlocks.Application.Extensions; +using Backbone.BuildingBlocks.Application.Extensions; using Backbone.DevelopmentKit.Identity.ValueObjects; using FluentValidation; -namespace Backbone.Modules.Devices.Application.Devices.Queries.ListDevices; +namespace Backbone.Modules.Devices.Module.Features.Devices.ListDevices; public class Validator : AbstractValidator { diff --git a/Modules/Devices/src/Devices.Application/Devices/Commands/RegisterDevice/RegisterDeviceCommand.cs b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Command.cs similarity index 70% rename from Modules/Devices/src/Devices.Application/Devices/Commands/RegisterDevice/RegisterDeviceCommand.cs rename to Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Command.cs index 734043af31..a04f5fb1b6 100644 --- a/Modules/Devices/src/Devices.Application/Devices/Commands/RegisterDevice/RegisterDeviceCommand.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Command.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Devices.Application.Devices.DTOs; +using Backbone.Modules.Devices.Module.Features.Devices.Shared; using MediatR; -namespace Backbone.Modules.Devices.Application.Devices.Commands.RegisterDevice; +namespace Backbone.Modules.Devices.Module.Features.Devices.RegisterDevice; public class RegisterDeviceCommand : IRequest { diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Endpoint.cs new file mode 100644 index 0000000000..a393de4b7c --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Endpoint.cs @@ -0,0 +1,37 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using Backbone.Modules.Devices.Domain.Entities.Identities; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Devices.Module.Features.Devices.RegisterDevice; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapRegisterDeviceEndpoint(this RouteGroupBuilder group) + { + group.MapPost("", Handle) + .Produces>(StatusCodes.Status201Created) + .Produces(StatusCodes.Status400BadRequest); + return group; + } + + private static async Task Handle([FromBody] RegisterDeviceRequest request, IMediator mediator, CancellationToken cancellationToken) + { + if (request.DevicePassword == null || request.SignedChallenge == null || request.SignedChallenge.Challenge == null || request.SignedChallenge.Signature == null) + throw new BadHttpRequestException("Required request fields must not be null."); + + var command = new RegisterDeviceCommand + { + CommunicationLanguage = request.CommunicationLanguage ?? CommunicationLanguage.DEFAULT_LANGUAGE.Value, + SignedChallenge = request.SignedChallenge, + DevicePassword = request.DevicePassword, + IsBackupDevice = request.IsBackupDevice ?? false + }; + var response = await mediator.Send(command, cancellationToken); + return EnvelopeHttpResults.Created("", response); + } +} diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Handler.cs new file mode 100644 index 0000000000..328f8a17df --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Handler.cs @@ -0,0 +1,57 @@ +using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; +using Backbone.Modules.Devices.Abstractions; +using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Module.Features.Devices.Shared; +using MediatR; +using Microsoft.Extensions.Logging; +using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; + +namespace Backbone.Modules.Devices.Module.Features.Devices.RegisterDevice; + +public class Handler : IRequestHandler +{ + private readonly ChallengeValidator _challengeValidator; + private readonly ILogger _logger; + private readonly IUserContext _userContext; + private readonly IIdentitiesRepository _identitiesRepository; + + public Handler(ChallengeValidator challengeValidator, IUserContext userContext, ILogger logger, IIdentitiesRepository identitiesRepository) + { + _challengeValidator = challengeValidator; + _userContext = userContext; + _logger = logger; + _identitiesRepository = identitiesRepository; + } + + public async Task Handle(RegisterDeviceCommand command, CancellationToken cancellationToken) + { + var identity = await _identitiesRepository.Get(_userContext.GetAddress(), cancellationToken, track: true) ?? throw new NotFoundException(nameof(Identity)); + + if (command.IsBackupDevice && await _identitiesRepository.HasBackupDevice(identity.Address, cancellationToken)) + throw new ApplicationException(ApplicationErrors.Devices.BackupDeviceAlreadyExists()); + + await _challengeValidator.Validate(command.SignedChallenge, PublicKey.FromBytes(identity.PublicKey)); + _logger.LogTrace("Successfully validated challenge."); + + var communicationLanguageResult = CommunicationLanguage.Create(command.CommunicationLanguage); + + var newDevice = identity.AddDevice(communicationLanguageResult.Value, _userContext.GetDeviceId(), command.IsBackupDevice); + + await _identitiesRepository.UpdateWithNewDevice(identity, command.DevicePassword); + + _logger.CreatedDevice(); + + return new RegisterDeviceResponse(newDevice); + } +} + +internal static partial class DeleteDeviceLogs +{ + [LoggerMessage( + EventId = 219823, + EventName = "Devices.RegisterDevice.RegisteredDevice", + Level = LogLevel.Information, + Message = "Successfully created device.")] + public static partial void CreatedDevice(this ILogger logger); +} diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Request.cs b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Request.cs new file mode 100644 index 0000000000..858312c212 --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Request.cs @@ -0,0 +1,11 @@ +using Backbone.Modules.Devices.Module.Features.Devices.Shared; + +namespace Backbone.Modules.Devices.Module.Features.Devices.RegisterDevice; + +public class RegisterDeviceRequest +{ + public required string DevicePassword { get; set; } + public string? CommunicationLanguage { get; set; } + public required SignedChallengeDTO SignedChallenge { get; set; } + public bool? IsBackupDevice { get; set; } +} diff --git a/Modules/Devices/src/Devices.Application/Devices/Commands/RegisterDevice/RegisterDeviceResponse.cs b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Response.cs similarity index 81% rename from Modules/Devices/src/Devices.Application/Devices/Commands/RegisterDevice/RegisterDeviceResponse.cs rename to Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Response.cs index be795371f3..793ef81d25 100644 --- a/Modules/Devices/src/Devices.Application/Devices/Commands/RegisterDevice/RegisterDeviceResponse.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Response.cs @@ -1,13 +1,13 @@ using Backbone.Modules.Devices.Domain.Entities.Identities; -namespace Backbone.Modules.Devices.Application.Devices.Commands.RegisterDevice; +namespace Backbone.Modules.Devices.Module.Features.Devices.RegisterDevice; public class RegisterDeviceResponse { public RegisterDeviceResponse(Device device) { Id = device.Id.Value; - Username = device.User.UserName!; + Username = device.Username; CreatedByDevice = device.CreatedByDevice.Value; CreatedAt = device.CreatedAt; IsBackupDevice = device.IsBackupDevice; diff --git a/Modules/Devices/src/Devices.Application/Devices/Commands/RegisterDevice/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Validator.cs similarity index 71% rename from Modules/Devices/src/Devices.Application/Devices/Commands/RegisterDevice/Validator.cs rename to Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Validator.cs index 3e0b83c498..2048bb1163 100644 --- a/Modules/Devices/src/Devices.Application/Devices/Commands/RegisterDevice/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Validator.cs @@ -1,9 +1,10 @@ using Backbone.BuildingBlocks.Application.FluentValidation; -using Backbone.Modules.Devices.Application.Devices.DTOs.Validators; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Module.Features.Devices.Shared.Validators; +using Backbone.Modules.Devices.Module.Features.Devices.Shared; using FluentValidation; -namespace Backbone.Modules.Devices.Application.Devices.Commands.RegisterDevice; +namespace Backbone.Modules.Devices.Module.Features.Devices.RegisterDevice; public class RegisterDeviceCommandValidator : AbstractValidator { diff --git a/Modules/Devices/src/Devices.Application/ChallengeValidator.cs b/Modules/Devices/src/Devices.Module/Features/Devices/Shared/ChallengeValidator.cs similarity index 89% rename from Modules/Devices/src/Devices.Application/ChallengeValidator.cs rename to Modules/Devices/src/Devices.Module/Features/Devices/Shared/ChallengeValidator.cs index 24d92aa63f..89eae59aec 100644 --- a/Modules/Devices/src/Devices.Application/ChallengeValidator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/Shared/ChallengeValidator.cs @@ -1,13 +1,13 @@ using System.Text.Json; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.Crypto; using Backbone.Crypto.Abstractions; -using Backbone.Modules.Devices.Application.Devices.DTOs; -using Backbone.Modules.Devices.Application.DTOs; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Crypto; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities; +using Backbone.Modules.Devices.Module.Features.Devices.Shared; +using Backbone.Modules.Devices.Module.Features.Shared; -namespace Backbone.Modules.Devices.Application; +namespace Backbone.Modules.Devices.Module.Features.Devices.Shared; public class ChallengeValidator { diff --git a/Modules/Devices/src/Devices.Application/Devices/DTOs/DeviceDTO.cs b/Modules/Devices/src/Devices.Module/Features/Devices/Shared/DeviceDTO.cs similarity index 89% rename from Modules/Devices/src/Devices.Application/Devices/DTOs/DeviceDTO.cs rename to Modules/Devices/src/Devices.Module/Features/Devices/Shared/DeviceDTO.cs index ffd542ebb4..8cdc50beba 100644 --- a/Modules/Devices/src/Devices.Application/Devices/DTOs/DeviceDTO.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/Shared/DeviceDTO.cs @@ -1,13 +1,13 @@ using Backbone.Modules.Devices.Domain.Entities.Identities; -namespace Backbone.Modules.Devices.Application.Devices.DTOs; +namespace Backbone.Modules.Devices.Module.Features.Devices.Shared; public class DeviceDTO { public DeviceDTO(Device device) { Id = device.Id; - Username = device.User.UserName!; + Username = device.Username; CreatedAt = device.CreatedAt; CreatedByDevice = device.CreatedByDevice; LastLogin = device.User.LastLoginAt == null ? null : new LastLoginInformation { Time = device.User.LastLoginAt.Value }; diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/Shared/DynamicJsonConverter.cs b/Modules/Devices/src/Devices.Module/Features/Devices/Shared/DynamicJsonConverter.cs new file mode 100644 index 0000000000..5fcbc718ad --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/Devices/Shared/DynamicJsonConverter.cs @@ -0,0 +1,65 @@ +using System.Dynamic; +using System.Globalization; +using System.Text.Json.Serialization; +using System.Text.Json; + +namespace Backbone.Modules.Devices.Module.Features.Devices.Shared; + +public class DynamicJsonConverter : JsonConverter +{ + public override dynamic Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + return reader.TokenType switch + { + JsonTokenType.True => true, + JsonTokenType.False => false, + JsonTokenType.Number => reader.TryGetInt64(out var i) ? i : reader.GetDouble(), + JsonTokenType.String => reader.TryGetDateTime(out var datetime) ? datetime.ToString(CultureInfo.InvariantCulture) : reader.GetString()!, + JsonTokenType.StartObject => ReadObject(JsonDocument.ParseValue(ref reader).RootElement), + _ => JsonDocument.ParseValue(ref reader).RootElement.Clone() // use JsonElement as fallback. + }; + } + + private object ReadObject(JsonElement jsonElement) + { + IDictionary expandoObject = new ExpandoObject(); + foreach (var obj in jsonElement.EnumerateObject()) + { + var k = obj.Name; + var value = ReadValue(obj.Value); + expandoObject[k] = value; + } + + return expandoObject; + } + + private object? ReadValue(JsonElement jsonElement) + { + return jsonElement.ValueKind switch + { + JsonValueKind.Object => ReadObject(jsonElement), + JsonValueKind.Array => ReadList(jsonElement), + JsonValueKind.String => jsonElement.GetString()!, + JsonValueKind.Number => jsonElement.TryGetInt64(out var i) ? i : jsonElement.GetDouble(), + JsonValueKind.True => true, + JsonValueKind.False => false, + JsonValueKind.Undefined => null, + JsonValueKind.Null => null, + _ => throw new ArgumentOutOfRangeException(nameof(jsonElement.ValueKind)) + }; + } + + private List? ReadList(JsonElement jsonElement) + { + var list = new List(); + jsonElement.EnumerateArray().ToList().ForEach(j => list.Add(ReadValue(j))); + return list.Count == 0 ? null : list; + } + + public override void Write(Utf8JsonWriter writer, + object value, + JsonSerializerOptions options) + { + JsonSerializer.Serialize(writer, value, options); + } +} diff --git a/Modules/Devices/src/Devices.Application/Devices/DTOs/PublicKey.cs b/Modules/Devices/src/Devices.Module/Features/Devices/Shared/PublicKey.cs similarity index 93% rename from Modules/Devices/src/Devices.Application/Devices/DTOs/PublicKey.cs rename to Modules/Devices/src/Devices.Module/Features/Devices/Shared/PublicKey.cs index 1b7ef5a8ff..27c44b3a5c 100644 --- a/Modules/Devices/src/Devices.Application/Devices/DTOs/PublicKey.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/Shared/PublicKey.cs @@ -1,10 +1,10 @@ -using System.Text; -using System.Text.Json; using System.Text.Json.Serialization; -using Backbone.Modules.Devices.Application.Devices.Commands.RegisterDevice; +using System.Text.Json; +using System.Text; +using Backbone.Modules.Devices.Module.Features.Devices.Shared; using Microsoft.IdentityModel.Tokens; -namespace Backbone.Modules.Devices.Application.Devices.DTOs; +namespace Backbone.Modules.Devices.Module.Features.Devices.Shared; public class PublicKey { diff --git a/Modules/Devices/src/Devices.Application/Devices/DTOs/Signature.cs b/Modules/Devices/src/Devices.Module/Features/Devices/Shared/Signature.cs similarity index 91% rename from Modules/Devices/src/Devices.Application/Devices/DTOs/Signature.cs rename to Modules/Devices/src/Devices.Module/Features/Devices/Shared/Signature.cs index 42bedae828..6e03cc2a00 100644 --- a/Modules/Devices/src/Devices.Application/Devices/DTOs/Signature.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/Shared/Signature.cs @@ -1,9 +1,9 @@ -using System.Text; using System.Text.Json; -using Backbone.Modules.Devices.Application.Devices.Commands.RegisterDevice; +using System.Text; +using Backbone.Modules.Devices.Module.Features.Devices.Shared; using Microsoft.IdentityModel.Tokens; -namespace Backbone.Modules.Devices.Application.Devices.DTOs; +namespace Backbone.Modules.Devices.Module.Features.Devices.Shared; public class Signature { diff --git a/Modules/Devices/src/Devices.Application/Devices/DTOs/SignedChallengeDTO.cs b/Modules/Devices/src/Devices.Module/Features/Devices/Shared/SignedChallengeDTO.cs similarity index 67% rename from Modules/Devices/src/Devices.Application/Devices/DTOs/SignedChallengeDTO.cs rename to Modules/Devices/src/Devices.Module/Features/Devices/Shared/SignedChallengeDTO.cs index 99133ed143..736dd8db81 100644 --- a/Modules/Devices/src/Devices.Application/Devices/DTOs/SignedChallengeDTO.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/Shared/SignedChallengeDTO.cs @@ -1,4 +1,4 @@ -namespace Backbone.Modules.Devices.Application.Devices.DTOs; +namespace Backbone.Modules.Devices.Module.Features.Devices.Shared; public class SignedChallengeDTO { diff --git a/Modules/Devices/src/Devices.Application/Devices/DTOs/Validators/SignedChallengeDTOValidator.cs b/Modules/Devices/src/Devices.Module/Features/Devices/Shared/Validators/SignedChallengeDTOValidator.cs similarity index 70% rename from Modules/Devices/src/Devices.Application/Devices/DTOs/Validators/SignedChallengeDTOValidator.cs rename to Modules/Devices/src/Devices.Module/Features/Devices/Shared/Validators/SignedChallengeDTOValidator.cs index e44d276cfe..0fa6ba37e5 100644 --- a/Modules/Devices/src/Devices.Application/Devices/DTOs/Validators/SignedChallengeDTOValidator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/Shared/Validators/SignedChallengeDTOValidator.cs @@ -1,7 +1,8 @@ using Backbone.BuildingBlocks.Application.FluentValidation; +using Backbone.Modules.Devices.Module.Features.Devices.Shared; using FluentValidation; -namespace Backbone.Modules.Devices.Application.Devices.DTOs.Validators; +namespace Backbone.Modules.Devices.Module.Features.Devices.Shared.Validators; public class SignedChallengeDTOValidator : AbstractValidator { diff --git a/Modules/Devices/src/Devices.Application/Devices/Commands/UpdateActiveDevice/UpdateActiveDeviceCommand.cs b/Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Command.cs similarity index 54% rename from Modules/Devices/src/Devices.Application/Devices/Commands/UpdateActiveDevice/UpdateActiveDeviceCommand.cs rename to Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Command.cs index acb1abd997..2ca6316934 100644 --- a/Modules/Devices/src/Devices.Application/Devices/Commands/UpdateActiveDevice/UpdateActiveDeviceCommand.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Command.cs @@ -1,6 +1,6 @@ -using MediatR; +using MediatR; -namespace Backbone.Modules.Devices.Application.Devices.Commands.UpdateActiveDevice; +namespace Backbone.Modules.Devices.Module.Features.Devices.UpdateActiveDevice; public class UpdateActiveDeviceCommand : IRequest { diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Endpoint.cs new file mode 100644 index 0000000000..9ee2b0d684 --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Endpoint.cs @@ -0,0 +1,29 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Devices.Module.Features.Devices.UpdateActiveDevice; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapUpdateActiveDeviceEndpoint(this RouteGroupBuilder group) + { + group.MapPut("Self", Handle) + .Produces(StatusCodes.Status204NoContent) + .Produces(StatusCodes.Status400BadRequest); + return group; + } + + private static async Task Handle([FromBody] UpdateActiveDeviceCommand request, IMediator mediator, CancellationToken cancellationToken) + { + if (request.CommunicationLanguage == null) + throw new BadHttpRequestException("Required request fields must not be null."); + + await mediator.Send(request, cancellationToken); + return Results.NoContent(); + } +} diff --git a/Modules/Devices/src/Devices.Application/Devices/Commands/UpdateActiveDevice/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Handler.cs similarity index 87% rename from Modules/Devices/src/Devices.Application/Devices/Commands/UpdateActiveDevice/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Handler.cs index 11cd30b16f..077d489449 100644 --- a/Modules/Devices/src/Devices.Application/Devices/Commands/UpdateActiveDevice/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Handler.cs @@ -1,12 +1,12 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.BuildingBlocks.Domain.Exceptions; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities.Identities; using MediatR; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Devices.Application.Devices.Commands.UpdateActiveDevice; +namespace Backbone.Modules.Devices.Module.Features.Devices.UpdateActiveDevice; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/Devices/Commands/UpdateActiveDevice/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Validator.cs similarity index 68% rename from Modules/Devices/src/Devices.Application/Devices/Commands/UpdateActiveDevice/Validator.cs rename to Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Validator.cs index e05a003dda..78c81e2720 100644 --- a/Modules/Devices/src/Devices.Application/Devices/Commands/UpdateActiveDevice/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Validator.cs @@ -1,8 +1,8 @@ -using Backbone.BuildingBlocks.Application.FluentValidation; +using Backbone.BuildingBlocks.Application.FluentValidation; using Backbone.Modules.Devices.Domain; using FluentValidation; -namespace Backbone.Modules.Devices.Application.Devices.Commands.UpdateActiveDevice; +namespace Backbone.Modules.Devices.Module.Features.Devices.UpdateActiveDevice; public class Validator : AbstractValidator { diff --git a/Modules/Devices/src/Devices.Application/DomainEvents/Incoming/AnnouncementCreated/AnnouncementCreatedDomainEventHandler.cs b/Modules/Devices/src/Devices.Module/Features/DomainEvents/AnnouncementCreated/Handler.cs similarity index 84% rename from Modules/Devices/src/Devices.Application/DomainEvents/Incoming/AnnouncementCreated/AnnouncementCreatedDomainEventHandler.cs rename to Modules/Devices/src/Devices.Module/Features/DomainEvents/AnnouncementCreated/Handler.cs index 8df9c0a00f..f0891f4759 100644 --- a/Modules/Devices/src/Devices.Application/DomainEvents/Incoming/AnnouncementCreated/AnnouncementCreatedDomainEventHandler.cs +++ b/Modules/Devices/src/Devices.Module/Features/DomainEvents/AnnouncementCreated/Handler.cs @@ -1,11 +1,11 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Announcements.Contracts.DomainEvents; -using Backbone.Modules.Devices.Application.Infrastructure.PushNotifications.Announcements; +using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.Announcements; using Backbone.Tooling.Extensions; -namespace Backbone.Modules.Devices.Application.DomainEvents.Incoming.AnnouncementCreated; +namespace Backbone.Modules.Devices.Module.Features.DomainEvents.AnnouncementCreated; public class AnnouncementCreatedDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Devices/src/Devices.Application/DomainEvents/Incoming/BackupDeviceUsed/BackupDeviceUsedDomainEventHandler.cs b/Modules/Devices/src/Devices.Module/Features/DomainEvents/BackupDeviceUsed/Handler.cs similarity index 73% rename from Modules/Devices/src/Devices.Application/DomainEvents/Incoming/BackupDeviceUsed/BackupDeviceUsedDomainEventHandler.cs rename to Modules/Devices/src/Devices.Module/Features/DomainEvents/BackupDeviceUsed/Handler.cs index 0edadd3e3e..64746de13f 100644 --- a/Modules/Devices/src/Devices.Application/DomainEvents/Incoming/BackupDeviceUsed/BackupDeviceUsedDomainEventHandler.cs +++ b/Modules/Devices/src/Devices.Module/Features/DomainEvents/BackupDeviceUsed/Handler.cs @@ -1,9 +1,9 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Application.PushNotifications; -using Backbone.Modules.Devices.Application.Infrastructure.PushNotifications.Device; using Backbone.Modules.Devices.Contracts.DomainEvents; +using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.Device; -namespace Backbone.Modules.Devices.Application.DomainEvents.Incoming.BackupDeviceUsed; +namespace Backbone.Modules.Devices.Module.Features.DomainEvents.BackupDeviceUsed; public class BackupDeviceUsedDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Devices/src/Devices.Application/DomainEvents/Incoming/DatawalletModificationCreated/DatawalletModifiedDomainEventHandler.cs b/Modules/Devices/src/Devices.Module/Features/DomainEvents/DatawalletModificationCreated/Handler.cs similarity index 84% rename from Modules/Devices/src/Devices.Application/DomainEvents/Incoming/DatawalletModificationCreated/DatawalletModifiedDomainEventHandler.cs rename to Modules/Devices/src/Devices.Module/Features/DomainEvents/DatawalletModificationCreated/Handler.cs index f9ebb36cb5..d3a8721b68 100644 --- a/Modules/Devices/src/Devices.Application/DomainEvents/Incoming/DatawalletModificationCreated/DatawalletModifiedDomainEventHandler.cs +++ b/Modules/Devices/src/Devices.Module/Features/DomainEvents/DatawalletModificationCreated/Handler.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Application.Infrastructure.PushNotifications.Datawallet; +using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.Datawallet; using Backbone.Modules.Synchronization.Contracts.DomainEvents; -namespace Backbone.Modules.Devices.Application.DomainEvents.Incoming.DatawalletModificationCreated; +namespace Backbone.Modules.Devices.Module.Features.DomainEvents.DatawalletModificationCreated; public class DatawalletModifiedDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Devices/src/Devices.Application/DomainEvents/Incoming/ExternalEventCreated/ExternalEventCreatedDomainEventHandler.cs b/Modules/Devices/src/Devices.Module/Features/DomainEvents/ExternalEventCreated/Handler.cs similarity index 82% rename from Modules/Devices/src/Devices.Application/DomainEvents/Incoming/ExternalEventCreated/ExternalEventCreatedDomainEventHandler.cs rename to Modules/Devices/src/Devices.Module/Features/DomainEvents/ExternalEventCreated/Handler.cs index 4973eab64d..234f287e0a 100644 --- a/Modules/Devices/src/Devices.Application/DomainEvents/Incoming/ExternalEventCreated/ExternalEventCreatedDomainEventHandler.cs +++ b/Modules/Devices/src/Devices.Module/Features/DomainEvents/ExternalEventCreated/Handler.cs @@ -1,11 +1,11 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Application.PushNotifications; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Devices.Application.Infrastructure.PushNotifications.ExternalEvents; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.ExternalEvents; using Backbone.Modules.Synchronization.Contracts.DomainEvents; -namespace Backbone.Modules.Devices.Application.DomainEvents.Incoming.ExternalEventCreated; +namespace Backbone.Modules.Devices.Module.Features.DomainEvents.ExternalEventCreated; public class ExternalEventCreatedDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Devices/src/Devices.Application/DomainEvents/Incoming/IdentityDeletionProcessStarted/IdentityDeletionProcessStartedDomainEventHandler.cs b/Modules/Devices/src/Devices.Module/Features/DomainEvents/IdentityDeletionProcessStarted/Handler.cs similarity index 81% rename from Modules/Devices/src/Devices.Application/DomainEvents/Incoming/IdentityDeletionProcessStarted/IdentityDeletionProcessStartedDomainEventHandler.cs rename to Modules/Devices/src/Devices.Module/Features/DomainEvents/IdentityDeletionProcessStarted/Handler.cs index ccd5de6293..d6fae0a156 100644 --- a/Modules/Devices/src/Devices.Application/DomainEvents/Incoming/IdentityDeletionProcessStarted/IdentityDeletionProcessStartedDomainEventHandler.cs +++ b/Modules/Devices/src/Devices.Module/Features/DomainEvents/IdentityDeletionProcessStarted/Handler.cs @@ -1,9 +1,9 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Application.PushNotifications; -using Backbone.Modules.Devices.Application.Infrastructure.PushNotifications.DeletionProcess; using Backbone.Modules.Devices.Contracts.DomainEvents; +using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.DeletionProcess; -namespace Backbone.Modules.Devices.Application.DomainEvents.Incoming.IdentityDeletionProcessStarted; +namespace Backbone.Modules.Devices.Module.Features.DomainEvents.IdentityDeletionProcessStarted; public class IdentityDeletionProcessStartedDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Devices/src/Devices.Application/DomainEvents/Incoming/TokenLocked/TokenLockedDomainEventHandler.cs b/Modules/Devices/src/Devices.Module/Features/DomainEvents/TokenLocked/Handler.cs similarity index 78% rename from Modules/Devices/src/Devices.Application/DomainEvents/Incoming/TokenLocked/TokenLockedDomainEventHandler.cs rename to Modules/Devices/src/Devices.Module/Features/DomainEvents/TokenLocked/Handler.cs index a578b1a64d..176b0d796c 100644 --- a/Modules/Devices/src/Devices.Application/DomainEvents/Incoming/TokenLocked/TokenLockedDomainEventHandler.cs +++ b/Modules/Devices/src/Devices.Module/Features/DomainEvents/TokenLocked/Handler.cs @@ -1,11 +1,11 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Application.PushNotifications; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Devices.Application.Infrastructure.PushNotifications.Tokens; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.Tokens; using Backbone.Modules.Tokens.Contracts.DomainEvents; -namespace Backbone.Modules.Devices.Application.DomainEvents.Incoming.TokenLocked; +namespace Backbone.Modules.Devices.Module.Features.DomainEvents.TokenLocked; public class TokenLockedDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Devices/src/Devices.Application/Identities/Commands/CancelDeletionProcess/CancelDeletionProcessCommand.cs b/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Command.cs similarity index 58% rename from Modules/Devices/src/Devices.Application/Identities/Commands/CancelDeletionProcess/CancelDeletionProcessCommand.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Command.cs index f4c4c18302..a891cd8447 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Commands/CancelDeletionProcess/CancelDeletionProcessCommand.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Command.cs @@ -1,6 +1,6 @@ -using MediatR; +using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Commands.CancelDeletionProcess; +namespace Backbone.Modules.Devices.Module.Features.Identities.CancelDeletionProcess; public class CancelDeletionProcessCommand : IRequest { diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Endpoint.cs new file mode 100644 index 0000000000..97ec929f73 --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Endpoint.cs @@ -0,0 +1,27 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Devices.Module.Features.Identities.CancelDeletionProcess; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapCancelDeletionProcessEndpoint(this RouteGroupBuilder group) + { + group.MapPut("{id}/Cancel", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status404NotFound); + return group; + } + + private static async Task Handle([FromRoute] string id, IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new CancelDeletionProcessCommand { DeletionProcessId = id }, cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Devices/src/Devices.Application/Identities/Commands/CancelDeletionProcess/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Handler.cs similarity index 85% rename from Modules/Devices/src/Devices.Application/Identities/Commands/CancelDeletionProcess/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Handler.cs index a8124f8837..54db5d69dc 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Commands/CancelDeletionProcess/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Handler.cs @@ -1,13 +1,13 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; +using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.BuildingBlocks.Domain.Exceptions; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Devices.Application.Infrastructure.PushNotifications.DeletionProcess; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.DeletionProcess; using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Commands.CancelDeletionProcess; +namespace Backbone.Modules.Devices.Module.Features.Identities.CancelDeletionProcess; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/Identities/Commands/CancelDeletionProcess/CancelDeletionProcessResponse.cs b/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Response.cs similarity index 64% rename from Modules/Devices/src/Devices.Application/Identities/Commands/CancelDeletionProcess/CancelDeletionProcessResponse.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Response.cs index f4b986ab59..40dc2c9237 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Commands/CancelDeletionProcess/CancelDeletionProcessResponse.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Response.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Devices.Application.DTOs; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Module.Features.Shared; -namespace Backbone.Modules.Devices.Application.Identities.Commands.CancelDeletionProcess; +namespace Backbone.Modules.Devices.Module.Features.Identities.CancelDeletionProcess; public class CancelDeletionProcessResponse : IdentityDeletionProcessOverviewDTO { diff --git a/Modules/Devices/src/Devices.Application/Identities/Commands/CancelDeletionProcess/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Validator.cs similarity index 67% rename from Modules/Devices/src/Devices.Application/Identities/Commands/CancelDeletionProcess/Validator.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Validator.cs index f450eabf30..9d9b3ec6bd 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Commands/CancelDeletionProcess/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Validator.cs @@ -1,8 +1,8 @@ -using Backbone.BuildingBlocks.Application.Extensions; +using Backbone.BuildingBlocks.Application.Extensions; using Backbone.Modules.Devices.Domain.Entities.Identities; using FluentValidation; -namespace Backbone.Modules.Devices.Application.Identities.Commands.CancelDeletionProcess; +namespace Backbone.Modules.Devices.Module.Features.Identities.CancelDeletionProcess; public class Validator : AbstractValidator { diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Command.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Command.cs new file mode 100644 index 0000000000..a2f7bbb711 --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Command.cs @@ -0,0 +1,5 @@ +using MediatR; + +namespace Backbone.Modules.Devices.Module.Features.Identities.ChangeFeatureFlags; + +public class ChangeFeatureFlagsCommand : Dictionary, IRequest; diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Endpoint.cs new file mode 100644 index 0000000000..540cf83bdc --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Endpoint.cs @@ -0,0 +1,26 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Devices.Module.Features.Identities.ChangeFeatureFlags; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapChangeFeatureFlagsEndpoint(this RouteGroupBuilder group) + { + group.MapPatch("Self/FeatureFlags", Handle) + .Produces(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest); + return group; + } + + private static async Task Handle([FromBody] ChangeFeatureFlagsCommand request, IMediator mediator, CancellationToken cancellationToken) + { + await mediator.Send(request, cancellationToken); + return Results.NoContent(); + } +} diff --git a/Modules/Devices/src/Devices.Application/Identities/Commands/ChangeFeatureFlags/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Handler.cs similarity index 89% rename from Modules/Devices/src/Devices.Application/Identities/Commands/ChangeFeatureFlags/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Handler.cs index 80e7c5f78b..b4fab2ddd0 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Commands/ChangeFeatureFlags/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Handler.cs @@ -1,13 +1,13 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; +using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities.Identities; using MediatR; using Microsoft.Extensions.Options; using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; -namespace Backbone.Modules.Devices.Application.Identities.Commands.ChangeFeatureFlags; +namespace Backbone.Modules.Devices.Module.Features.Identities.ChangeFeatureFlags; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/Identities/Commands/ChangeFeatureFlags/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Validator.cs similarity index 85% rename from Modules/Devices/src/Devices.Application/Identities/Commands/ChangeFeatureFlags/Validator.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Validator.cs index 7ab1d7e800..088ea07ecf 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Commands/ChangeFeatureFlags/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Validator.cs @@ -1,9 +1,9 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; +using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.Modules.Devices.Domain.Entities.Identities; using FluentValidation; using Microsoft.Extensions.Options; -namespace Backbone.Modules.Devices.Application.Identities.Commands.ChangeFeatureFlags; +namespace Backbone.Modules.Devices.Module.Features.Identities.ChangeFeatureFlags; public class Validator : AbstractValidator { diff --git a/Modules/Devices/src/Devices.Application/Identities/Commands/CreateIdentity/CreateIdentityCommand.cs b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Command.cs similarity index 75% rename from Modules/Devices/src/Devices.Application/Identities/Commands/CreateIdentity/CreateIdentityCommand.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Command.cs index f1bc55e3cd..361af98f3d 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Commands/CreateIdentity/CreateIdentityCommand.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Command.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Devices.Application.Devices.DTOs; +using Backbone.Modules.Devices.Module.Features.Devices.Shared; using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Commands.CreateIdentity; +namespace Backbone.Modules.Devices.Module.Features.Identities.CreateIdentity; public class CreateIdentityCommand : IRequest { diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Endpoint.cs new file mode 100644 index 0000000000..57c8a481a9 --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Endpoint.cs @@ -0,0 +1,51 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; +using Backbone.Modules.Devices.Abstractions; +using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Module.Features.Devices.Shared; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Devices.Module.Features.Identities.CreateIdentity; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapCreateIdentityEndpoint(this RouteGroupBuilder group) + { + group.MapPost("", Handle) + .Produces>(StatusCodes.Status201Created) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status404NotFound) + .AllowAnonymous(); + return group; + } + + private static async Task Handle([FromBody] CreateIdentityRequest request, IOAuthClientsRepository clients, IMediator mediator, CancellationToken cancellationToken) + { + if (request.ClientId == null || request.ClientSecret == null || request.IdentityPublicKey == null || request.DevicePassword == null || request.SignedChallenge == null || request.SignedChallenge.Challenge == null || request.SignedChallenge.Signature == null) + throw new BadHttpRequestException("Required request fields must not be null."); + + if (!await clients.ValidateSecret(request.ClientId, request.ClientSecret, cancellationToken)) + throw new OperationFailedException(GenericApplicationErrors.Unauthorized()); + + var command = new CreateIdentityCommand + { + ClientId = request.ClientId, + DevicePassword = request.DevicePassword, + IdentityPublicKey = request.IdentityPublicKey, + IdentityVersion = request.IdentityVersion, + CommunicationLanguage = request.DeviceCommunicationLanguage ?? CommunicationLanguage.DEFAULT_LANGUAGE.Value, + SignedChallenge = new SignedChallengeDTO + { + Challenge = request.SignedChallenge.Challenge, + Signature = request.SignedChallenge.Signature + } + }; + var response = await mediator.Send(command, cancellationToken); + return EnvelopeHttpResults.Created("", response); + } +} diff --git a/Modules/Devices/src/Devices.Application/Identities/Commands/CreateIdentity/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Handler.cs similarity index 94% rename from Modules/Devices/src/Devices.Application/Identities/Commands/CreateIdentity/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Handler.cs index 599963f0ae..e843e3235c 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Commands/CreateIdentity/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Handler.cs @@ -1,14 +1,14 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Application.Devices.DTOs; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Devices.Domain.Entities; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Domain.Entities; +using Backbone.Modules.Devices.Module.Features.Devices.Shared; using MediatR; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; -namespace Backbone.Modules.Devices.Application.Identities.Commands.CreateIdentity; +namespace Backbone.Modules.Devices.Module.Features.Identities.CreateIdentity; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Request.cs b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Request.cs new file mode 100644 index 0000000000..d082d679de --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Request.cs @@ -0,0 +1,20 @@ +using Backbone.Modules.Devices.Module.Features.Devices.Shared; + +namespace Backbone.Modules.Devices.Module.Features.Identities.CreateIdentity; + +public class CreateIdentityRequest +{ + public required string ClientId { get; set; } + public required string ClientSecret { get; set; } + public required byte[] IdentityPublicKey { get; set; } + public required string DevicePassword { get; set; } + public string? DeviceCommunicationLanguage { get; set; } + public required byte IdentityVersion { get; set; } + public required CreateIdentityRequestSignedChallenge SignedChallenge { get; set; } +} + +public class CreateIdentityRequestSignedChallenge +{ + public required string Challenge { get; set; } + public required byte[] Signature { get; set; } +} diff --git a/Modules/Devices/src/Devices.Application/Identities/Commands/CreateIdentity/CreateIdentityResponse.cs b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Response.cs similarity index 83% rename from Modules/Devices/src/Devices.Application/Identities/Commands/CreateIdentity/CreateIdentityResponse.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Response.cs index 89020c108b..cf60f46eca 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Commands/CreateIdentity/CreateIdentityResponse.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Response.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Devices.Domain.Entities.Identities; -namespace Backbone.Modules.Devices.Application.Identities.Commands.CreateIdentity; +namespace Backbone.Modules.Devices.Module.Features.Identities.CreateIdentity; public class CreateIdentityResponse { @@ -11,7 +11,7 @@ public CreateIdentityResponse(Identity identity) Device = new CreateIdentityResponseDevice { Id = identity.Devices.First().Id, - Username = identity.Devices.First().User.UserName!, + Username = identity.Devices.First().Username, CreatedAt = identity.Devices.First().CreatedAt }; } diff --git a/Modules/Devices/src/Devices.Application/Identities/Commands/CreateIdentity/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Validator.cs similarity index 75% rename from Modules/Devices/src/Devices.Application/Identities/Commands/CreateIdentity/Validator.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Validator.cs index 4545deaccc..db3408966f 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Commands/CreateIdentity/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Validator.cs @@ -1,9 +1,10 @@ using Backbone.BuildingBlocks.Application.FluentValidation; -using Backbone.Modules.Devices.Application.Devices.DTOs.Validators; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Module.Features.Devices.Shared.Validators; +using Backbone.Modules.Devices.Module.Features.Devices.Shared; using FluentValidation; -namespace Backbone.Modules.Devices.Application.Identities.Commands.CreateIdentity; +namespace Backbone.Modules.Devices.Module.Features.Identities.CreateIdentity; // ReSharper disable once UnusedMember.Global public class CreateIdentityCommandValidator : AbstractValidator diff --git a/Modules/Devices/src/Devices.Application/Identities/Commands/DeleteIdentity/DeleteIdentityCommand.cs b/Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/Command.cs similarity index 52% rename from Modules/Devices/src/Devices.Application/Identities/Commands/DeleteIdentity/DeleteIdentityCommand.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/Command.cs index 2ffa03601c..c37fa044ab 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Commands/DeleteIdentity/DeleteIdentityCommand.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/Command.cs @@ -1,6 +1,6 @@ -using MediatR; +using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Commands.DeleteIdentity; +namespace Backbone.Modules.Devices.Module.Features.Identities.DeleteIdentity; public class DeleteIdentityCommand : IRequest { diff --git a/Modules/Devices/src/Devices.Application/Identities/Commands/DeleteIdentity/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/Handler.cs similarity index 76% rename from Modules/Devices/src/Devices.Application/Identities/Commands/DeleteIdentity/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/Handler.cs index 73a435abde..e3bf3055e1 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Commands/DeleteIdentity/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/Handler.cs @@ -1,8 +1,8 @@ -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities.Identities; using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Commands.DeleteIdentity; +namespace Backbone.Modules.Devices.Module.Features.Identities.DeleteIdentity; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/Identities/IdentityDeleter.cs b/Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs similarity index 74% rename from Modules/Devices/src/Devices.Application/Identities/IdentityDeleter.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs index d282948d29..16d0fd7445 100644 --- a/Modules/Devices/src/Devices.Application/Identities/IdentityDeleter.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs @@ -1,10 +1,10 @@ -using Backbone.BuildingBlocks.Application.Identities; +using Backbone.BuildingBlocks.Application.Identities; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Application.Identities.Commands.DeleteIdentity; -using Backbone.Modules.Devices.Application.PushNotifications.Commands.DeletePnsRegistrationsOfIdentity; +using Backbone.Modules.Devices.Module.Features.Identities.DeleteIdentity; +using Backbone.Modules.Devices.Module.Features.PushNotifications.DeletePnsRegistrationsOfIdentity; using MediatR; -namespace Backbone.Modules.Devices.Application.Identities; +namespace Backbone.Modules.Devices.Module.Features.Identities.DeleteIdentity; public class IdentityDeleter : IIdentityDeleter { diff --git a/Modules/Devices/src/Devices.Application/Identities/Commands/DeleteIdentity/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/Validator.cs similarity index 66% rename from Modules/Devices/src/Devices.Application/Identities/Commands/DeleteIdentity/Validator.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/Validator.cs index 9cf4f9fd81..8e4100ad81 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Commands/DeleteIdentity/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/Validator.cs @@ -1,8 +1,8 @@ -using Backbone.BuildingBlocks.Application.Extensions; +using Backbone.BuildingBlocks.Application.Extensions; using Backbone.DevelopmentKit.Identity.ValueObjects; using FluentValidation; -namespace Backbone.Modules.Devices.Application.Identities.Commands.DeleteIdentity; +namespace Backbone.Modules.Devices.Module.Features.Identities.DeleteIdentity; public class Validator : AbstractValidator { diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Endpoint.cs new file mode 100644 index 0000000000..178f7ff142 --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Endpoint.cs @@ -0,0 +1,28 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using Backbone.Modules.Devices.Module.Features.Shared; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsOwner; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapGetDeletionProcessAsOwnerEndpoint(this RouteGroupBuilder group) + { + group.MapGet("{id}", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status404NotFound); + return group; + } + + private static async Task Handle([FromRoute] string id, IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new GetDeletionProcessAsOwnerQuery { Id = id }, cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/GetDeletionProcessAsOwner/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Handler.cs similarity index 84% rename from Modules/Devices/src/Devices.Application/Identities/Queries/GetDeletionProcessAsOwner/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Handler.cs index 027ab3684d..56ad3c2a37 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/GetDeletionProcessAsOwner/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Handler.cs @@ -1,11 +1,11 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; -using Backbone.Modules.Devices.Application.DTOs; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Module.Features.Shared; using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Queries.GetDeletionProcessAsOwner; +namespace Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsOwner; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/GetDeletionProcessAsOwner/GetDeletionProcessAsOwnerQuery.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Query.cs similarity index 52% rename from Modules/Devices/src/Devices.Application/Identities/Queries/GetDeletionProcessAsOwner/GetDeletionProcessAsOwnerQuery.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Query.cs index 073b5b1434..f6bb3ac2da 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/GetDeletionProcessAsOwner/GetDeletionProcessAsOwnerQuery.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Query.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Devices.Application.DTOs; +using Backbone.Modules.Devices.Module.Features.Shared; using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Queries.GetDeletionProcessAsOwner; +namespace Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsOwner; public class GetDeletionProcessAsOwnerQuery : IRequest { diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/GetDeletionProcessAsOwner/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Validator.cs similarity index 66% rename from Modules/Devices/src/Devices.Application/Identities/Queries/GetDeletionProcessAsOwner/Validator.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Validator.cs index 0d98808140..ac26d29917 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/GetDeletionProcessAsOwner/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Validator.cs @@ -1,8 +1,8 @@ -using Backbone.BuildingBlocks.Application.Extensions; +using Backbone.BuildingBlocks.Application.Extensions; using Backbone.Modules.Devices.Domain.Entities.Identities; using FluentValidation; -namespace Backbone.Modules.Devices.Application.Identities.Queries.GetDeletionProcessAsOwner; +namespace Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsOwner; public class Validator : AbstractValidator { diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/GetDeletionProcessAsSupport/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsSupport/Handler.cs similarity index 76% rename from Modules/Devices/src/Devices.Application/Identities/Queries/GetDeletionProcessAsSupport/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsSupport/Handler.cs index 22b780f8cc..ebfa517d18 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/GetDeletionProcessAsSupport/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsSupport/Handler.cs @@ -1,10 +1,10 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.Modules.Devices.Application.DTOs; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Module.Features.Shared; using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Queries.GetDeletionProcessAsSupport; +namespace Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsSupport; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/GetDeletionProcessAsSupport/GetDeletionProcessAsSupportQuery.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsSupport/Query.cs similarity index 61% rename from Modules/Devices/src/Devices.Application/Identities/Queries/GetDeletionProcessAsSupport/GetDeletionProcessAsSupportQuery.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsSupport/Query.cs index 53fc1d1a13..0859d16807 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/GetDeletionProcessAsSupport/GetDeletionProcessAsSupportQuery.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsSupport/Query.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Devices.Application.DTOs; +using Backbone.Modules.Devices.Module.Features.Shared; using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Queries.GetDeletionProcessAsSupport; +namespace Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsSupport; public class GetDeletionProcessAsSupportQuery : IRequest { diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/GetDeletionProcessAsSupport/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsSupport/Validator.cs similarity index 75% rename from Modules/Devices/src/Devices.Application/Identities/Queries/GetDeletionProcessAsSupport/Validator.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsSupport/Validator.cs index 97ade62318..f941a626eb 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/GetDeletionProcessAsSupport/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsSupport/Validator.cs @@ -1,9 +1,9 @@ -using Backbone.BuildingBlocks.Application.Extensions; +using Backbone.BuildingBlocks.Application.Extensions; using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Devices.Domain.Entities.Identities; using FluentValidation; -namespace Backbone.Modules.Devices.Application.Identities.Queries.GetDeletionProcessAsSupport; +namespace Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsSupport; public class Validator : AbstractValidator { diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/GetIdentity/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Handler.cs similarity index 82% rename from Modules/Devices/src/Devices.Application/Identities/Queries/GetIdentity/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Handler.cs index 555ec8821a..af27c9108c 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/GetIdentity/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Handler.cs @@ -1,9 +1,9 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities.Identities; using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Queries.GetIdentity; +namespace Backbone.Modules.Devices.Module.Features.Identities.GetIdentity; public class Handler : IRequestHandler { diff --git a/Modules/Quotas/src/Quotas.Application/Identities/Queries/GetIdentity/GetIdentityQuery.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Query.cs similarity index 63% rename from Modules/Quotas/src/Quotas.Application/Identities/Queries/GetIdentity/GetIdentityQuery.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Query.cs index bc42aefd6b..d9dd7d6cca 100644 --- a/Modules/Quotas/src/Quotas.Application/Identities/Queries/GetIdentity/GetIdentityQuery.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Query.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Quotas.Application.Identities.Queries.GetIdentity; +namespace Backbone.Modules.Devices.Module.Features.Identities.GetIdentity; public class GetIdentityQuery : IRequest { diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/GetIdentity/GetIdentityResponse.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Response.cs similarity index 59% rename from Modules/Devices/src/Devices.Application/Identities/Queries/GetIdentity/GetIdentityResponse.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Response.cs index c75a8d62b4..9c46df1880 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/GetIdentity/GetIdentityResponse.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Response.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Devices.Application.DTOs; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Module.Features.Shared; -namespace Backbone.Modules.Devices.Application.Identities.Queries.GetIdentity; +namespace Backbone.Modules.Devices.Module.Features.Identities.GetIdentity; public class GetIdentityResponse : IdentitySummaryDTO { diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/GetIdentity/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Validator.cs similarity index 65% rename from Modules/Devices/src/Devices.Application/Identities/Queries/GetIdentity/Validator.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Validator.cs index 1accc5b8aa..d92f1ab1a3 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/GetIdentity/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Validator.cs @@ -1,8 +1,8 @@ -using Backbone.BuildingBlocks.Application.Extensions; +using Backbone.BuildingBlocks.Application.Extensions; using Backbone.DevelopmentKit.Identity.ValueObjects; using FluentValidation; -namespace Backbone.Modules.Devices.Application.Identities.Queries.GetIdentity; +namespace Backbone.Modules.Devices.Module.Features.Identities.GetIdentity; public class Validator : AbstractValidator { diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Endpoint.cs new file mode 100644 index 0000000000..f2c8bc8248 --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Endpoint.cs @@ -0,0 +1,25 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Devices.Module.Features.Identities.GetOwnIdentity; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapGetOwnIdentityEndpoint(this RouteGroupBuilder group) + { + group.MapGet("Self", Handle) + .Produces>(StatusCodes.Status200OK); + return group; + } + + private static async Task Handle(IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new GetOwnIdentityQuery(), cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/GetOwnIdentity/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Handler.cs similarity index 76% rename from Modules/Devices/src/Devices.Application/Identities/Queries/GetOwnIdentity/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Handler.cs index 3f9e3802c5..923af6ecd6 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/GetOwnIdentity/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Handler.cs @@ -1,8 +1,8 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; +using Backbone.Modules.Devices.Abstractions; using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Queries.GetOwnIdentity; +namespace Backbone.Modules.Devices.Module.Features.Identities.GetOwnIdentity; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Query.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Query.cs new file mode 100644 index 0000000000..d77fc7ab55 --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Query.cs @@ -0,0 +1,5 @@ +using MediatR; + +namespace Backbone.Modules.Devices.Module.Features.Identities.GetOwnIdentity; + +public class GetOwnIdentityQuery : IRequest; diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/GetOwnIdentity/GetOwnIdentityResponse.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Response.cs similarity index 82% rename from Modules/Devices/src/Devices.Application/Identities/Queries/GetOwnIdentity/GetOwnIdentityResponse.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Response.cs index ae4a4f0e35..eb1637869c 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/GetOwnIdentity/GetOwnIdentityResponse.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Response.cs @@ -1,6 +1,6 @@ -using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Domain.Entities.Identities; -namespace Backbone.Modules.Devices.Application.Identities.Queries.GetOwnIdentity; +namespace Backbone.Modules.Devices.Module.Features.Identities.GetOwnIdentity; public class GetOwnIdentityResponse { diff --git a/Modules/Devices/src/Devices.Application/Identities/Commands/HandleCompletedDeletionProcess/HandleCompletedDeletionProcessCommand.cs b/Modules/Devices/src/Devices.Module/Features/Identities/HandleCompletedDeletionProcess/Command.cs similarity index 62% rename from Modules/Devices/src/Devices.Application/Identities/Commands/HandleCompletedDeletionProcess/HandleCompletedDeletionProcessCommand.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/HandleCompletedDeletionProcess/Command.cs index 8cce8f073e..54fef7deb9 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Commands/HandleCompletedDeletionProcess/HandleCompletedDeletionProcessCommand.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/HandleCompletedDeletionProcess/Command.cs @@ -1,6 +1,6 @@ -using MediatR; +using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Commands.HandleCompletedDeletionProcess; +namespace Backbone.Modules.Devices.Module.Features.Identities.HandleCompletedDeletionProcess; public class HandleCompletedDeletionProcessCommand : IRequest { diff --git a/Modules/Devices/src/Devices.Application/Identities/Commands/HandleCompletedDeletionProcess/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/HandleCompletedDeletionProcess/Handler.cs similarity index 85% rename from Modules/Devices/src/Devices.Application/Identities/Commands/HandleCompletedDeletionProcess/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/HandleCompletedDeletionProcess/Handler.cs index 508c224eaa..8de824d61e 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Commands/HandleCompletedDeletionProcess/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/HandleCompletedDeletionProcess/Handler.cs @@ -1,9 +1,9 @@ -using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.DevelopmentKit.Identity.ValueObjects; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities.Identities; using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Commands.HandleCompletedDeletionProcess; +namespace Backbone.Modules.Devices.Module.Features.Identities.HandleCompletedDeletionProcess; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/Identities/Commands/HandleCompletedDeletionProcess/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Identities/HandleCompletedDeletionProcess/Validator.cs similarity index 72% rename from Modules/Devices/src/Devices.Application/Identities/Commands/HandleCompletedDeletionProcess/Validator.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/HandleCompletedDeletionProcess/Validator.cs index 9207e08229..b6aae401fc 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Commands/HandleCompletedDeletionProcess/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/HandleCompletedDeletionProcess/Validator.cs @@ -1,9 +1,9 @@ -using Backbone.BuildingBlocks.Application.Extensions; +using Backbone.BuildingBlocks.Application.Extensions; using Backbone.BuildingBlocks.Application.FluentValidation; using Backbone.DevelopmentKit.Identity.ValueObjects; using FluentValidation; -namespace Backbone.Modules.Devices.Application.Identities.Commands.HandleCompletedDeletionProcess; +namespace Backbone.Modules.Devices.Module.Features.Identities.HandleCompletedDeletionProcess; public class Validator : AbstractValidator { diff --git a/Modules/Devices/src/Devices.Application/Identities/Commands/HandleErrorDuringIdentityDeletion/HandleErrorDuringIdentityDeletionCommand.cs b/Modules/Devices/src/Devices.Module/Features/Identities/HandleErrorDuringIdentityDeletion/Command.cs similarity index 60% rename from Modules/Devices/src/Devices.Application/Identities/Commands/HandleErrorDuringIdentityDeletion/HandleErrorDuringIdentityDeletionCommand.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/HandleErrorDuringIdentityDeletion/Command.cs index c0b1a93a57..8ab8e80160 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Commands/HandleErrorDuringIdentityDeletion/HandleErrorDuringIdentityDeletionCommand.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/HandleErrorDuringIdentityDeletion/Command.cs @@ -1,6 +1,6 @@ -using MediatR; +using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Commands.HandleErrorDuringIdentityDeletion; +namespace Backbone.Modules.Devices.Module.Features.Identities.HandleErrorDuringIdentityDeletion; public class HandleErrorDuringIdentityDeletionCommand : IRequest { diff --git a/Modules/Devices/src/Devices.Application/Identities/Commands/HandleErrorDuringIdentityDeletion/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/HandleErrorDuringIdentityDeletion/Handler.cs similarity index 86% rename from Modules/Devices/src/Devices.Application/Identities/Commands/HandleErrorDuringIdentityDeletion/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/HandleErrorDuringIdentityDeletion/Handler.cs index 51d72fc0c1..e79ef41582 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Commands/HandleErrorDuringIdentityDeletion/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/HandleErrorDuringIdentityDeletion/Handler.cs @@ -1,8 +1,8 @@ -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities.Identities; using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Commands.HandleErrorDuringIdentityDeletion; +namespace Backbone.Modules.Devices.Module.Features.Identities.HandleErrorDuringIdentityDeletion; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Endpoint.cs new file mode 100644 index 0000000000..f13358a928 --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Endpoint.cs @@ -0,0 +1,27 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Devices.Module.Features.Identities.IsIdentityOfUserDeleted; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapIsIdentityOfUserDeletedEndpoint(this RouteGroupBuilder group) + { + group.MapGet("IsDeleted", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest) + .AllowAnonymous(); + return group; + } + + private static async Task Handle([FromQuery(Name = "username")] string username, IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new IsIdentityOfUserDeletedQuery { Username = username }, cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/IsIdentityOfUserDeleted/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Handler.cs similarity index 87% rename from Modules/Devices/src/Devices.Application/Identities/Queries/IsIdentityOfUserDeleted/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Handler.cs index 6e4f21887b..368b409ed7 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/IsIdentityOfUserDeleted/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Handler.cs @@ -1,9 +1,9 @@ -using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.DevelopmentKit.Identity.ValueObjects; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities.Identities; using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Queries.IsIdentityOfUserDeleted; +namespace Backbone.Modules.Devices.Module.Features.Identities.IsIdentityOfUserDeleted; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/IsIdentityOfUserDeleted/IsIdentityOfUserDeletedQuery.cs b/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Query.cs similarity index 56% rename from Modules/Devices/src/Devices.Application/Identities/Queries/IsIdentityOfUserDeleted/IsIdentityOfUserDeletedQuery.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Query.cs index b5c22c92dc..b376c3324f 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/IsIdentityOfUserDeleted/IsIdentityOfUserDeletedQuery.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Query.cs @@ -1,6 +1,6 @@ -using MediatR; +using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Queries.IsIdentityOfUserDeleted; +namespace Backbone.Modules.Devices.Module.Features.Identities.IsIdentityOfUserDeleted; public class IsIdentityOfUserDeletedQuery : IRequest { diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/IsIdentityOfUserDeleted/IsIdentityOfUserDeletedResponse.cs b/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Response.cs similarity index 76% rename from Modules/Devices/src/Devices.Application/Identities/Queries/IsIdentityOfUserDeleted/IsIdentityOfUserDeletedResponse.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Response.cs index d94fc90363..5de765a7f7 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/IsIdentityOfUserDeleted/IsIdentityOfUserDeletedResponse.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Response.cs @@ -1,4 +1,4 @@ -namespace Backbone.Modules.Devices.Application.Identities.Queries.IsIdentityOfUserDeleted; +namespace Backbone.Modules.Devices.Module.Features.Identities.IsIdentityOfUserDeleted; public class IsIdentityOfUserDeletedResponse { diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/IsIdentityOfUserDeleted/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Validator.cs similarity index 65% rename from Modules/Devices/src/Devices.Application/Identities/Queries/IsIdentityOfUserDeleted/Validator.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Validator.cs index 7df6aabed5..69d88bac38 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/IsIdentityOfUserDeleted/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Validator.cs @@ -1,8 +1,8 @@ -using Backbone.BuildingBlocks.Application.Extensions; +using Backbone.BuildingBlocks.Application.Extensions; using Backbone.DevelopmentKit.Identity.ValueObjects; using FluentValidation; -namespace Backbone.Modules.Devices.Application.Identities.Queries.IsIdentityOfUserDeleted; +namespace Backbone.Modules.Devices.Module.Features.Identities.IsIdentityOfUserDeleted; public class Validator : AbstractValidator { diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Handler.cs similarity index 81% rename from Modules/Devices/src/Devices.Application/Identities/Queries/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Handler.cs index 6067ae2885..5e533ed226 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Handler.cs @@ -1,8 +1,8 @@ -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities.Identities; using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Queries.ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting; +namespace Backbone.Modules.Devices.Module.Features.Identities.ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeletingQuery.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Query.cs similarity index 52% rename from Modules/Devices/src/Devices.Application/Identities/Queries/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeletingQuery.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Query.cs index e0a7b600d2..f53245ffe7 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeletingQuery.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Query.cs @@ -1,5 +1,5 @@ -using MediatR; +using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Queries.ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting; +namespace Backbone.Modules.Devices.Module.Features.Identities.ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting; public class ListAddressesOfIdentitiesWithDeletionProcessInStatusDeletingQuery : IRequest; diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeletingResponse.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Response.cs similarity index 64% rename from Modules/Devices/src/Devices.Application/Identities/Queries/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeletingResponse.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Response.cs index 06ef4bdc18..36d3f74915 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeletingResponse.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Response.cs @@ -1,6 +1,6 @@ -using Backbone.DevelopmentKit.Identity.ValueObjects; +using Backbone.DevelopmentKit.Identity.ValueObjects; -namespace Backbone.Modules.Devices.Application.Identities.Queries.ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting; +namespace Backbone.Modules.Devices.Module.Features.Identities.ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting; public class ListAddressesOfIdentitiesWithDeletionProcessInStatusDeletingResponse { diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Endpoint.cs new file mode 100644 index 0000000000..9c00f2a8f9 --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Endpoint.cs @@ -0,0 +1,25 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsOwner; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapListDeletionProcessesAsOwnerEndpoint(this RouteGroupBuilder group) + { + group.MapGet("", Handle) + .Produces>(StatusCodes.Status200OK); + return group; + } + + private static async Task Handle(IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new ListDeletionProcessesAsOwnerQuery(), cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/ListDeletionProcessesAsOwner/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Handler.cs similarity index 86% rename from Modules/Devices/src/Devices.Application/Identities/Queries/ListDeletionProcessesAsOwner/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Handler.cs index 602520001d..1b87fd888d 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/ListDeletionProcessesAsOwner/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Handler.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities.Identities; using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Queries.ListDeletionProcessesAsOwner; +namespace Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsOwner; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/ListDeletionProcessesAsOwner/ListDeletionProcessesAsOwnerQuery.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Query.cs similarity index 54% rename from Modules/Devices/src/Devices.Application/Identities/Queries/ListDeletionProcessesAsOwner/ListDeletionProcessesAsOwnerQuery.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Query.cs index 6f7b94e6cb..17a6329d06 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/ListDeletionProcessesAsOwner/ListDeletionProcessesAsOwnerQuery.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Query.cs @@ -1,5 +1,5 @@ using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Queries.ListDeletionProcessesAsOwner; +namespace Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsOwner; public class ListDeletionProcessesAsOwnerQuery : IRequest; diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/ListDeletionProcessesAsOwner/ListDeletionProcessesAsOwnerResponse.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Response.cs similarity index 74% rename from Modules/Devices/src/Devices.Application/Identities/Queries/ListDeletionProcessesAsOwner/ListDeletionProcessesAsOwnerResponse.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Response.cs index a02a29d623..ebe6656c1e 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/ListDeletionProcessesAsOwner/ListDeletionProcessesAsOwnerResponse.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Response.cs @@ -1,8 +1,8 @@ using Backbone.BuildingBlocks.Application.CQRS.BaseClasses; -using Backbone.Modules.Devices.Application.DTOs; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Module.Features.Shared; -namespace Backbone.Modules.Devices.Application.Identities.Queries.ListDeletionProcessesAsOwner; +namespace Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsOwner; public class ListDeletionProcessesAsOwnerResponse : CollectionResponseBase { diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/ListDeletionProcessesAsSupport/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Handler.cs similarity index 83% rename from Modules/Devices/src/Devices.Application/Identities/Queries/ListDeletionProcessesAsSupport/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Handler.cs index c25fb71500..05218a7bed 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/ListDeletionProcessesAsSupport/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Handler.cs @@ -1,9 +1,9 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities.Identities; using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Queries.ListDeletionProcessesAsSupport; +namespace Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsSupport; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/ListDeletionProcessesAsSupport/ListDeletionProcessesAsSupportQuery.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Query.cs similarity index 64% rename from Modules/Devices/src/Devices.Application/Identities/Queries/ListDeletionProcessesAsSupport/ListDeletionProcessesAsSupportQuery.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Query.cs index 0392aa7910..b16a8fdb84 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/ListDeletionProcessesAsSupport/ListDeletionProcessesAsSupportQuery.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Query.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Queries.ListDeletionProcessesAsSupport; +namespace Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsSupport; public class ListDeletionProcessesAsSupportQuery : IRequest { diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/ListDeletionProcessesAsSupport/GetDeletionProcessesAsSupportResponse.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Response.cs similarity index 75% rename from Modules/Devices/src/Devices.Application/Identities/Queries/ListDeletionProcessesAsSupport/GetDeletionProcessesAsSupportResponse.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Response.cs index 88d75061d0..aebad27044 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/ListDeletionProcessesAsSupport/GetDeletionProcessesAsSupportResponse.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Response.cs @@ -1,8 +1,8 @@ using Backbone.BuildingBlocks.Application.CQRS.BaseClasses; -using Backbone.Modules.Devices.Application.DTOs; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Module.Features.Shared; -namespace Backbone.Modules.Devices.Application.Identities.Queries.ListDeletionProcessesAsSupport; +namespace Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsSupport; public class GetDeletionProcessesAsSupportResponse : CollectionResponseBase { diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/ListDeletionProcessesAsSupport/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Validator.cs similarity index 66% rename from Modules/Devices/src/Devices.Application/Identities/Queries/ListDeletionProcessesAsSupport/Validator.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Validator.cs index 068752a464..6303df122d 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/ListDeletionProcessesAsSupport/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Validator.cs @@ -1,8 +1,8 @@ -using Backbone.BuildingBlocks.Application.Extensions; +using Backbone.BuildingBlocks.Application.Extensions; using Backbone.DevelopmentKit.Identity.ValueObjects; using FluentValidation; -namespace Backbone.Modules.Devices.Application.Identities.Queries.ListDeletionProcessesAsSupport; +namespace Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsSupport; public class Validator : AbstractValidator { diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/ListDeletionProcessesAuditLogs/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Handler.cs similarity index 83% rename from Modules/Devices/src/Devices.Application/Identities/Queries/ListDeletionProcessesAuditLogs/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Handler.cs index 1d802bcb35..13bdb3bbfc 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/ListDeletionProcessesAuditLogs/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Handler.cs @@ -1,8 +1,8 @@ -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities.Identities; using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Queries.ListDeletionProcessesAuditLogs; +namespace Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/ListDeletionProcessesAuditLogs/ListDeletionProcessesAuditLogsQuery.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Query.cs similarity index 58% rename from Modules/Devices/src/Devices.Application/Identities/Queries/ListDeletionProcessesAuditLogs/ListDeletionProcessesAuditLogsQuery.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Query.cs index f6f1451ce9..4dd5b6f8fb 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/ListDeletionProcessesAuditLogs/ListDeletionProcessesAuditLogsQuery.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Query.cs @@ -1,6 +1,6 @@ -using MediatR; +using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Queries.ListDeletionProcessesAuditLogs; +namespace Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; public class ListDeletionProcessesAuditLogsQuery : IRequest { diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/ListDeletionProcessesAuditLogs/ListDeletionProcessesAuditLogsResponse.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Response.cs similarity index 65% rename from Modules/Devices/src/Devices.Application/Identities/Queries/ListDeletionProcessesAuditLogs/ListDeletionProcessesAuditLogsResponse.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Response.cs index 11d3f95b8e..4856f7b75c 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/ListDeletionProcessesAuditLogs/ListDeletionProcessesAuditLogsResponse.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Response.cs @@ -1,8 +1,8 @@ -using Backbone.BuildingBlocks.Application.CQRS.BaseClasses; -using Backbone.Modules.Devices.Application.DTOs; +using Backbone.BuildingBlocks.Application.CQRS.BaseClasses; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Module.Features.Shared; -namespace Backbone.Modules.Devices.Application.Identities.Queries.ListDeletionProcessesAuditLogs; +namespace Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; public class ListDeletionProcessesAuditLogsResponse : CollectionResponseBase { diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/ListDeletionProcessesAuditLogs/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Validator.cs similarity index 66% rename from Modules/Devices/src/Devices.Application/Identities/Queries/ListDeletionProcessesAuditLogs/Validator.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Validator.cs index aa18e072af..0e45251fc0 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/ListDeletionProcessesAuditLogs/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Validator.cs @@ -1,8 +1,8 @@ -using Backbone.BuildingBlocks.Application.Extensions; +using Backbone.BuildingBlocks.Application.Extensions; using Backbone.DevelopmentKit.Identity.ValueObjects; using FluentValidation; -namespace Backbone.Modules.Devices.Application.Identities.Queries.ListDeletionProcessesAuditLogs; +namespace Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; public class Validator : AbstractValidator { diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Endpoint.cs new file mode 100644 index 0000000000..7fff870de6 --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Endpoint.cs @@ -0,0 +1,27 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Devices.Module.Features.Identities.ListFeatureFlags; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapListFeatureFlagsEndpoint(this RouteGroupBuilder group) + { + group.MapGet("{identityAddress}/FeatureFlags", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status404NotFound); + return group; + } + + private static async Task Handle([FromRoute] string identityAddress, IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new ListFeatureFlagsQuery { IdentityAddress = identityAddress }, cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/ListFeatureFlags/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Handler.cs similarity index 93% rename from Modules/Devices/src/Devices.Application/Identities/Queries/ListFeatureFlags/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Handler.cs index 1d750f91ae..d2cfa5c44f 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/ListFeatureFlags/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Handler.cs @@ -1,13 +1,13 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Aggregates.Relationships; using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.Tooling.Extensions; using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Queries.ListFeatureFlags; +namespace Backbone.Modules.Devices.Module.Features.Identities.ListFeatureFlags; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/ListFeatureFlags/ListFeatureFlagsQuery.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Query.cs similarity index 64% rename from Modules/Devices/src/Devices.Application/Identities/Queries/ListFeatureFlags/ListFeatureFlagsQuery.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Query.cs index 041d6ebc38..ba8a4717eb 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/ListFeatureFlags/ListFeatureFlagsQuery.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Query.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Queries.ListFeatureFlags; +namespace Backbone.Modules.Devices.Module.Features.Identities.ListFeatureFlags; public class ListFeatureFlagsQuery : IRequest { diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/ListFeatureFlags/ListFeatureFlagsResponse.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Response.cs similarity index 80% rename from Modules/Devices/src/Devices.Application/Identities/Queries/ListFeatureFlags/ListFeatureFlagsResponse.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Response.cs index d6faa6c395..effb9d2f4d 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/ListFeatureFlags/ListFeatureFlagsResponse.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Response.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Devices.Domain.Entities.Identities; -namespace Backbone.Modules.Devices.Application.Identities.Queries.ListFeatureFlags; +namespace Backbone.Modules.Devices.Module.Features.Identities.ListFeatureFlags; public class ListFeatureFlagsResponse : Dictionary { diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/ListFeatureFlags/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Validator.cs similarity index 79% rename from Modules/Devices/src/Devices.Application/Identities/Queries/ListFeatureFlags/Validator.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Validator.cs index dc84be341a..ee3d29fc7a 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/ListFeatureFlags/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Validator.cs @@ -2,7 +2,7 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; using FluentValidation; -namespace Backbone.Modules.Devices.Application.Identities.Queries.ListFeatureFlags; +namespace Backbone.Modules.Devices.Module.Features.Identities.ListFeatureFlags; public class Validator : AbstractValidator { diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/ListIdentities/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Handler.cs similarity index 84% rename from Modules/Devices/src/Devices.Application/Identities/Queries/ListIdentities/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Handler.cs index fa8107f02f..768b29c265 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/ListIdentities/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Handler.cs @@ -1,9 +1,9 @@ using System.Linq.Expressions; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities.Identities; using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Queries.ListIdentities; +namespace Backbone.Modules.Devices.Module.Features.Identities.ListIdentities; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/ListIdentities/ListIdentitiesQuery.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Query.cs similarity index 76% rename from Modules/Devices/src/Devices.Application/Identities/Queries/ListIdentities/ListIdentitiesQuery.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Query.cs index eb27d69fca..53680d6e02 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/ListIdentities/ListIdentitiesQuery.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Query.cs @@ -1,7 +1,7 @@ using Backbone.Modules.Devices.Domain.Entities.Identities; using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Queries.ListIdentities; +namespace Backbone.Modules.Devices.Module.Features.Identities.ListIdentities; public class ListIdentitiesQuery : IRequest { diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/ListIdentities/ListIdentitiesResponse.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Response.cs similarity index 71% rename from Modules/Devices/src/Devices.Application/Identities/Queries/ListIdentities/ListIdentitiesResponse.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Response.cs index 29db72da56..e81904fb80 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/ListIdentities/ListIdentitiesResponse.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Response.cs @@ -1,8 +1,8 @@ using Backbone.BuildingBlocks.Application.CQRS.BaseClasses; -using Backbone.Modules.Devices.Application.DTOs; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Module.Features.Shared; -namespace Backbone.Modules.Devices.Application.Identities.Queries.ListIdentities; +namespace Backbone.Modules.Devices.Module.Features.Identities.ListIdentities; public class ListIdentitiesResponse : CollectionResponseBase { diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/ListIdentities/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Validator.cs similarity index 65% rename from Modules/Devices/src/Devices.Application/Identities/Queries/ListIdentities/Validator.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Validator.cs index 0973a1d285..c1789dd663 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/ListIdentities/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Validator.cs @@ -1,8 +1,8 @@ -using Backbone.BuildingBlocks.Application.Extensions; +using Backbone.BuildingBlocks.Application.Extensions; using Backbone.DevelopmentKit.Identity.ValueObjects; using FluentValidation; -namespace Backbone.Modules.Devices.Application.Identities.Queries.ListIdentities; +namespace Backbone.Modules.Devices.Module.Features.Identities.ListIdentities; public class Validator : AbstractValidator { diff --git a/Modules/Devices/src/Devices.Application/Identities/Commands/LogDeletionProcess/LogDeletionProcessCommand.cs b/Modules/Devices/src/Devices.Module/Features/Identities/LogDeletionProcess/Command.cs similarity index 61% rename from Modules/Devices/src/Devices.Application/Identities/Commands/LogDeletionProcess/LogDeletionProcessCommand.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/LogDeletionProcess/Command.cs index a12599b59a..b38d93eaba 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Commands/LogDeletionProcess/LogDeletionProcessCommand.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/LogDeletionProcess/Command.cs @@ -1,6 +1,6 @@ -using MediatR; +using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Commands.LogDeletionProcess; +namespace Backbone.Modules.Devices.Module.Features.Identities.LogDeletionProcess; public class LogDeletionProcessCommand : IRequest { diff --git a/Modules/Devices/src/Devices.Application/Identities/Commands/LogDeletionProcess/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/LogDeletionProcess/Handler.cs similarity index 79% rename from Modules/Devices/src/Devices.Application/Identities/Commands/LogDeletionProcess/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/LogDeletionProcess/Handler.cs index d30ee35bf6..cd1d82b1aa 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Commands/LogDeletionProcess/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/LogDeletionProcess/Handler.cs @@ -1,8 +1,8 @@ -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities.Identities; using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Commands.LogDeletionProcess; +namespace Backbone.Modules.Devices.Module.Features.Identities.LogDeletionProcess; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/Identities/Commands/LogDeletionProcess/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Identities/LogDeletionProcess/Validator.cs similarity index 66% rename from Modules/Devices/src/Devices.Application/Identities/Commands/LogDeletionProcess/Validator.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/LogDeletionProcess/Validator.cs index 2aeb1b04b1..1723c8821b 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Commands/LogDeletionProcess/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/LogDeletionProcess/Validator.cs @@ -1,8 +1,8 @@ -using Backbone.BuildingBlocks.Application.Extensions; +using Backbone.BuildingBlocks.Application.Extensions; using Backbone.DevelopmentKit.Identity.ValueObjects; using FluentValidation; -namespace Backbone.Modules.Devices.Application.Identities.Commands.LogDeletionProcess; +namespace Backbone.Modules.Devices.Module.Features.Identities.LogDeletionProcess; public class Validator : AbstractValidator { diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/SendDeletionProcessGracePeriodReminders/Command.cs b/Modules/Devices/src/Devices.Module/Features/Identities/SendDeletionProcessGracePeriodReminders/Command.cs new file mode 100644 index 0000000000..101047c781 --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/Identities/SendDeletionProcessGracePeriodReminders/Command.cs @@ -0,0 +1,5 @@ +using MediatR; + +namespace Backbone.Modules.Devices.Module.Features.Identities.SendDeletionProcessGracePeriodReminders; + +public class SendDeletionProcessGracePeriodRemindersCommand : IRequest; diff --git a/Modules/Devices/src/Devices.Application/Identities/Commands/SendDeletionProcessGracePeriodReminders/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/SendDeletionProcessGracePeriodReminders/Handler.cs similarity index 95% rename from Modules/Devices/src/Devices.Application/Identities/Commands/SendDeletionProcessGracePeriodReminders/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/SendDeletionProcessGracePeriodReminders/Handler.cs index 1fdb27d441..d70e48a7e8 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Commands/SendDeletionProcessGracePeriodReminders/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/SendDeletionProcessGracePeriodReminders/Handler.cs @@ -1,13 +1,13 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.PushNotifications; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Devices.Application.Infrastructure.PushNotifications.DeletionProcess; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.DeletionProcess; using Backbone.Tooling; using MediatR; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Devices.Application.Identities.Commands.SendDeletionProcessGracePeriodReminders; +namespace Backbone.Modules.Devices.Module.Features.Identities.SendDeletionProcessGracePeriodReminders; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/Identities/Commands/StartDeletionProcess/StartDeletionProcessCommand.cs b/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Command.cs similarity index 64% rename from Modules/Devices/src/Devices.Application/Identities/Commands/StartDeletionProcess/StartDeletionProcessCommand.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Command.cs index 57ece0b54e..d1d411c7b3 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Commands/StartDeletionProcess/StartDeletionProcessCommand.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Commands.StartDeletionProcess; +namespace Backbone.Modules.Devices.Module.Features.Identities.StartDeletionProcess; public class StartDeletionProcessCommand : IRequest { diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Endpoint.cs new file mode 100644 index 0000000000..e7017318b1 --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Endpoint.cs @@ -0,0 +1,26 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Devices.Module.Features.Identities.StartDeletionProcess; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapStartDeletionProcessEndpoint(this RouteGroupBuilder group) + { + group.MapPost("", Handle) + .Produces>(StatusCodes.Status201Created) + .Produces(StatusCodes.Status400BadRequest); + return group; + } + + private static async Task Handle([FromBody] StartDeletionProcessCommand? request, IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(request ?? new StartDeletionProcessCommand(), cancellationToken); + return EnvelopeHttpResults.Created("", response); + } +} diff --git a/Modules/Devices/src/Devices.Application/Identities/Commands/StartDeletionProcess/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Handler.cs similarity index 88% rename from Modules/Devices/src/Devices.Application/Identities/Commands/StartDeletionProcess/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Handler.cs index 0bfe8905f0..caf2bbdfce 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Commands/StartDeletionProcess/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Handler.cs @@ -2,13 +2,13 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.BuildingBlocks.Domain.Exceptions; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Devices.Application.Infrastructure.PushNotifications.DeletionProcess; -using Backbone.Modules.Devices.Domain; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Domain; +using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.DeletionProcess; using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Commands.StartDeletionProcess; +namespace Backbone.Modules.Devices.Module.Features.Identities.StartDeletionProcess; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/Identities/Commands/StartDeletionProcess/StartDeletionProcessResponse.cs b/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Response.cs similarity index 65% rename from Modules/Devices/src/Devices.Application/Identities/Commands/StartDeletionProcess/StartDeletionProcessResponse.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Response.cs index 6cbb18bf77..42e8709037 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Commands/StartDeletionProcess/StartDeletionProcessResponse.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Response.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Devices.Application.DTOs; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Module.Features.Shared; -namespace Backbone.Modules.Devices.Application.Identities.Commands.StartDeletionProcess; +namespace Backbone.Modules.Devices.Module.Features.Identities.StartDeletionProcess; public class StartDeletionProcessResponse : IdentityDeletionProcessOverviewDTO { diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/TriggerRipeDeletionProcesses/Command.cs b/Modules/Devices/src/Devices.Module/Features/Identities/TriggerRipeDeletionProcesses/Command.cs new file mode 100644 index 0000000000..75048a3d40 --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/Identities/TriggerRipeDeletionProcesses/Command.cs @@ -0,0 +1,5 @@ +using MediatR; + +namespace Backbone.Modules.Devices.Module.Features.Identities.TriggerRipeDeletionProcesses; + +public class TriggerRipeDeletionProcessesCommand : IRequest; diff --git a/Modules/Devices/src/Devices.Application/Identities/Commands/TriggerRipeDeletionProcesses/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/TriggerRipeDeletionProcesses/Handler.cs similarity index 83% rename from Modules/Devices/src/Devices.Application/Identities/Commands/TriggerRipeDeletionProcesses/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/TriggerRipeDeletionProcesses/Handler.cs index 33254272c5..570dfc328d 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Commands/TriggerRipeDeletionProcesses/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/TriggerRipeDeletionProcesses/Handler.cs @@ -1,9 +1,9 @@ -using Backbone.BuildingBlocks.Domain.Exceptions; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.BuildingBlocks.Domain.Exceptions; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities.Identities; using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Commands.TriggerRipeDeletionProcesses; +namespace Backbone.Modules.Devices.Module.Features.Identities.TriggerRipeDeletionProcesses; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/Identities/Commands/TriggerRipeDeletionProcesses/TriggerRipeDeletionProcessesResponse.cs b/Modules/Devices/src/Devices.Module/Features/Identities/TriggerRipeDeletionProcesses/Response.cs similarity index 82% rename from Modules/Devices/src/Devices.Application/Identities/Commands/TriggerRipeDeletionProcesses/TriggerRipeDeletionProcessesResponse.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/TriggerRipeDeletionProcesses/Response.cs index 16e884d140..7dd82897ad 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Commands/TriggerRipeDeletionProcesses/TriggerRipeDeletionProcessesResponse.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/TriggerRipeDeletionProcesses/Response.cs @@ -1,7 +1,7 @@ -using Backbone.BuildingBlocks.Domain.Errors; +using Backbone.BuildingBlocks.Domain.Errors; using CSharpFunctionalExtensions; -namespace Backbone.Modules.Devices.Application.Identities.Commands.TriggerRipeDeletionProcesses; +namespace Backbone.Modules.Devices.Module.Features.Identities.TriggerRipeDeletionProcesses; public class TriggerRipeDeletionProcessesResponse { diff --git a/Modules/Devices/src/Devices.Application/Identities/Commands/UpdateIdentity/UpdateIdentityCommand.cs b/Modules/Devices/src/Devices.Module/Features/Identities/UpdateIdentity/Command.cs similarity index 66% rename from Modules/Devices/src/Devices.Application/Identities/Commands/UpdateIdentity/UpdateIdentityCommand.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/UpdateIdentity/Command.cs index df89d71d0c..4af4204a91 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Commands/UpdateIdentity/UpdateIdentityCommand.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/UpdateIdentity/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Commands.UpdateIdentity; +namespace Backbone.Modules.Devices.Module.Features.Identities.UpdateIdentity; public class UpdateIdentityCommand : IRequest { diff --git a/Modules/Devices/src/Devices.Application/Identities/Commands/UpdateIdentity/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/UpdateIdentity/Handler.cs similarity index 88% rename from Modules/Devices/src/Devices.Application/Identities/Commands/UpdateIdentity/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/UpdateIdentity/Handler.cs index 1dffae0ee1..e3e281b717 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Commands/UpdateIdentity/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/UpdateIdentity/Handler.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Aggregates.Tier; using Backbone.Modules.Devices.Domain.Entities.Identities; using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Commands.UpdateIdentity; +namespace Backbone.Modules.Devices.Module.Features.Identities.UpdateIdentity; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/Identities/Commands/UpdateIdentity/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Identities/UpdateIdentity/Validator.cs similarity index 84% rename from Modules/Devices/src/Devices.Application/Identities/Commands/UpdateIdentity/Validator.cs rename to Modules/Devices/src/Devices.Module/Features/Identities/UpdateIdentity/Validator.cs index a0dcd37de3..993cbb6925 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Commands/UpdateIdentity/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/UpdateIdentity/Validator.cs @@ -3,7 +3,7 @@ using Backbone.Modules.Devices.Domain.Aggregates.Tier; using FluentValidation; -namespace Backbone.Modules.Devices.Application.Identities.Commands.UpdateIdentity; +namespace Backbone.Modules.Devices.Module.Features.Identities.UpdateIdentity; public class Validator : AbstractValidator { diff --git a/Modules/Devices/src/Devices.Application/Notifications/Commands/SendNotification/SendNotificationCommand.cs b/Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Command.cs similarity index 59% rename from Modules/Devices/src/Devices.Application/Notifications/Commands/SendNotification/SendNotificationCommand.cs rename to Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Command.cs index 80c66baa67..ec2efd98df 100644 --- a/Modules/Devices/src/Devices.Application/Notifications/Commands/SendNotification/SendNotificationCommand.cs +++ b/Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Command.cs @@ -1,6 +1,6 @@ -using MediatR; +using MediatR; -namespace Backbone.Modules.Devices.Application.Notifications.Commands.SendNotification; +namespace Backbone.Modules.Devices.Module.Features.Notifications.SendNotification; public class SendNotificationCommand : IRequest { diff --git a/Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Endpoint.cs new file mode 100644 index 0000000000..e647d2f421 --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Endpoint.cs @@ -0,0 +1,29 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Devices.Module.Features.Notifications.SendNotification; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapSendNotificationEndpoint(this RouteGroupBuilder group) + { + group.MapPost("", Handle) + .Produces(StatusCodes.Status204NoContent) + .Produces(StatusCodes.Status400BadRequest); + return group; + } + + private static async Task Handle([FromBody] SendNotificationCommand request, IMediator mediator, CancellationToken cancellationToken) + { + if (request.Recipients == null || request.Code == null) + throw new BadHttpRequestException("Required request fields must not be null."); + + await mediator.Send(request, cancellationToken); + return Results.NoContent(); + } +} diff --git a/Modules/Devices/src/Devices.Application/Notifications/Commands/SendNotification/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Handler.cs similarity index 92% rename from Modules/Devices/src/Devices.Application/Notifications/Commands/SendNotification/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Handler.cs index 6ad2ef32ce..c3fdaf8fad 100644 --- a/Modules/Devices/src/Devices.Application/Notifications/Commands/SendNotification/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Handler.cs @@ -1,12 +1,12 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using MediatR; using Microsoft.Extensions.Options; using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; -namespace Backbone.Modules.Devices.Application.Notifications.Commands.SendNotification; +namespace Backbone.Modules.Devices.Module.Features.Notifications.SendNotification; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/Notifications/Commands/SendNotification/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Validator.cs similarity index 78% rename from Modules/Devices/src/Devices.Application/Notifications/Commands/SendNotification/Validator.cs rename to Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Validator.cs index a9e6ec2e6b..3146f7301e 100644 --- a/Modules/Devices/src/Devices.Application/Notifications/Commands/SendNotification/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Validator.cs @@ -1,10 +1,10 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; +using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Extensions; using Backbone.BuildingBlocks.Application.FluentValidation; using Backbone.DevelopmentKit.Identity.ValueObjects; using FluentValidation; -namespace Backbone.Modules.Devices.Application.Notifications.Commands.SendNotification; +namespace Backbone.Modules.Devices.Module.Features.Notifications.SendNotification; public class Validator : AbstractValidator { diff --git a/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeleteDeviceRegistration/Command.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeleteDeviceRegistration/Command.cs new file mode 100644 index 0000000000..543b763e4b --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeleteDeviceRegistration/Command.cs @@ -0,0 +1,5 @@ +using MediatR; + +namespace Backbone.Modules.Devices.Module.Features.PushNotifications.DeleteDeviceRegistration; + +public class DeleteDeviceRegistrationCommand : IRequest; diff --git a/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeleteDeviceRegistration/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeleteDeviceRegistration/Endpoint.cs new file mode 100644 index 0000000000..11bea107c9 --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeleteDeviceRegistration/Endpoint.cs @@ -0,0 +1,25 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Devices.Module.Features.PushNotifications.DeleteDeviceRegistration; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapDeleteDeviceRegistrationEndpoint(this RouteGroupBuilder group) + { + group.MapDelete("", Handle) + .Produces(StatusCodes.Status204NoContent); + return group; + } + + private static async Task Handle(IMediator mediator, CancellationToken cancellationToken) + { + await mediator.Send(new DeleteDeviceRegistrationCommand(), cancellationToken); + return Results.NoContent(); + } +} diff --git a/Modules/Devices/src/Devices.Application/PushNotifications/Commands/DeleteDeviceRegistration/Handler.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeleteDeviceRegistration/Handler.cs similarity index 77% rename from Modules/Devices/src/Devices.Application/PushNotifications/Commands/DeleteDeviceRegistration/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/PushNotifications/DeleteDeviceRegistration/Handler.cs index 16bf3435e3..3ed6a43d85 100644 --- a/Modules/Devices/src/Devices.Application/PushNotifications/Commands/DeleteDeviceRegistration/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeleteDeviceRegistration/Handler.cs @@ -1,9 +1,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Application.Infrastructure.PushNotifications; +using Backbone.Modules.Devices.Abstractions.PushNotifications; +using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared; using MediatR; -namespace Backbone.Modules.Devices.Application.PushNotifications.Commands.DeleteDeviceRegistration; +namespace Backbone.Modules.Devices.Module.Features.PushNotifications.DeleteDeviceRegistration; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/PushNotifications/Commands/DeletePnsRegistrationsOfIdentity/DeletePnsRegistrationsOfIdentityCommand.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeletePnsRegistrationsOfIdentity/Command.cs similarity index 50% rename from Modules/Devices/src/Devices.Application/PushNotifications/Commands/DeletePnsRegistrationsOfIdentity/DeletePnsRegistrationsOfIdentityCommand.cs rename to Modules/Devices/src/Devices.Module/Features/PushNotifications/DeletePnsRegistrationsOfIdentity/Command.cs index 9724fdbc55..fcf5716963 100644 --- a/Modules/Devices/src/Devices.Application/PushNotifications/Commands/DeletePnsRegistrationsOfIdentity/DeletePnsRegistrationsOfIdentityCommand.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeletePnsRegistrationsOfIdentity/Command.cs @@ -1,6 +1,6 @@ -using MediatR; +using MediatR; -namespace Backbone.Modules.Devices.Application.PushNotifications.Commands.DeletePnsRegistrationsOfIdentity; +namespace Backbone.Modules.Devices.Module.Features.PushNotifications.DeletePnsRegistrationsOfIdentity; public class DeletePnsRegistrationsOfIdentityCommand : IRequest { diff --git a/Modules/Devices/src/Devices.Application/PushNotifications/Commands/DeletePnsRegistrationsOfIdentity/Handler.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeletePnsRegistrationsOfIdentity/Handler.cs similarity index 76% rename from Modules/Devices/src/Devices.Application/PushNotifications/Commands/DeletePnsRegistrationsOfIdentity/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/PushNotifications/DeletePnsRegistrationsOfIdentity/Handler.cs index 3f0e65a115..733d8bd610 100644 --- a/Modules/Devices/src/Devices.Application/PushNotifications/Commands/DeletePnsRegistrationsOfIdentity/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeletePnsRegistrationsOfIdentity/Handler.cs @@ -1,8 +1,8 @@ -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications; using MediatR; -namespace Backbone.Modules.Devices.Application.PushNotifications.Commands.DeletePnsRegistrationsOfIdentity; +namespace Backbone.Modules.Devices.Module.Features.PushNotifications.DeletePnsRegistrationsOfIdentity; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/PushNotifications/Commands/DeletePnsRegistrationsOfIdentity/Validator.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeletePnsRegistrationsOfIdentity/Validator.cs similarity index 65% rename from Modules/Devices/src/Devices.Application/PushNotifications/Commands/DeletePnsRegistrationsOfIdentity/Validator.cs rename to Modules/Devices/src/Devices.Module/Features/PushNotifications/DeletePnsRegistrationsOfIdentity/Validator.cs index b6c524dc37..4961d2a028 100644 --- a/Modules/Devices/src/Devices.Application/PushNotifications/Commands/DeletePnsRegistrationsOfIdentity/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeletePnsRegistrationsOfIdentity/Validator.cs @@ -1,8 +1,8 @@ -using Backbone.BuildingBlocks.Application.Extensions; +using Backbone.BuildingBlocks.Application.Extensions; using Backbone.DevelopmentKit.Identity.ValueObjects; using FluentValidation; -namespace Backbone.Modules.Devices.Application.PushNotifications.Commands.DeletePnsRegistrationsOfIdentity; +namespace Backbone.Modules.Devices.Module.Features.PushNotifications.DeletePnsRegistrationsOfIdentity; public class Validator : AbstractValidator { diff --git a/Modules/Devices/src/Devices.Application/PushNotifications/Commands/SendTestNotification/SendTestNotificationCommand.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Command.cs similarity index 56% rename from Modules/Devices/src/Devices.Application/PushNotifications/Commands/SendTestNotification/SendTestNotificationCommand.cs rename to Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Command.cs index d3ab356b96..bcdeaf5329 100644 --- a/Modules/Devices/src/Devices.Application/PushNotifications/Commands/SendTestNotification/SendTestNotificationCommand.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Devices.Application.PushNotifications.Commands.SendTestNotification; +namespace Backbone.Modules.Devices.Module.Features.PushNotifications.SendTestNotification; public class SendTestNotificationCommand : IRequest { diff --git a/Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Endpoint.cs new file mode 100644 index 0000000000..1e44351d6c --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Endpoint.cs @@ -0,0 +1,26 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Devices.Module.Features.PushNotifications.SendTestNotification; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapSendTestNotificationEndpoint(this RouteGroupBuilder group) + { + group.MapPost("SendTestNotification", Handle) + .Produces(StatusCodes.Status204NoContent) + .ExcludeFromDescription(); + return group; + } + + private static async Task Handle([FromBody] object data, IMediator mediator, CancellationToken cancellationToken) + { + await mediator.Send(new SendTestNotificationCommand { Data = data }, cancellationToken); + return Results.NoContent(); + } +} diff --git a/Modules/Devices/src/Devices.Application/PushNotifications/Commands/SendTestNotification/Handler.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Handler.cs similarity index 85% rename from Modules/Devices/src/Devices.Application/PushNotifications/Commands/SendTestNotification/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Handler.cs index 456ff035fe..e908b403b6 100644 --- a/Modules/Devices/src/Devices.Application/PushNotifications/Commands/SendTestNotification/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Handler.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Application.Infrastructure.PushNotifications; +using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared; using MediatR; -namespace Backbone.Modules.Devices.Application.PushNotifications.Commands.SendTestNotification; +namespace Backbone.Modules.Devices.Module.Features.PushNotifications.SendTestNotification; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/PushNotifications/Commands/SendTestNotification/Validator.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Validator.cs similarity index 71% rename from Modules/Devices/src/Devices.Application/PushNotifications/Commands/SendTestNotification/Validator.cs rename to Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Validator.cs index 8bf89b4fac..c75137a80e 100644 --- a/Modules/Devices/src/Devices.Application/PushNotifications/Commands/SendTestNotification/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Validator.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.FluentValidation; using FluentValidation; -namespace Backbone.Modules.Devices.Application.PushNotifications.Commands.SendTestNotification; +namespace Backbone.Modules.Devices.Module.Features.PushNotifications.SendTestNotification; public class Validator : AbstractValidator { diff --git a/Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/Announcements/NewAnnouncementPushNotification.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/Announcements/NewAnnouncementPushNotification.cs new file mode 100644 index 0000000000..1db1a0124b --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/Announcements/NewAnnouncementPushNotification.cs @@ -0,0 +1,8 @@ +using Backbone.BuildingBlocks.Application.PushNotifications; + +namespace Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.Announcements; + +public class NewAnnouncementPushNotification : IPushNotification +{ + public required string AnnouncementId { get; set; } +} diff --git a/Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/Datawallet/DatawalletModificationsCreatedPushNotification.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/Datawallet/DatawalletModificationsCreatedPushNotification.cs similarity index 57% rename from Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/Datawallet/DatawalletModificationsCreatedPushNotification.cs rename to Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/Datawallet/DatawalletModificationsCreatedPushNotification.cs index 801d58e3d9..7a80f46f0c 100644 --- a/Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/Datawallet/DatawalletModificationsCreatedPushNotification.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/Datawallet/DatawalletModificationsCreatedPushNotification.cs @@ -1,6 +1,7 @@ using Backbone.BuildingBlocks.Application.PushNotifications; +using Backbone.Modules.Devices.Abstractions.PushNotifications; -namespace Backbone.Modules.Devices.Application.Infrastructure.PushNotifications.Datawallet; +namespace Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.Datawallet; [NotificationId("DatawalletModified")] public record DatawalletModificationsCreatedPushNotification(string CreatedByDevice) : IPushNotification; diff --git a/Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/DeletionProcess/DeletionProcessCancelledByOwnerPushNotification.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/DeletionProcess/DeletionProcessCancelledByOwnerPushNotification.cs similarity index 60% rename from Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/DeletionProcess/DeletionProcessCancelledByOwnerPushNotification.cs rename to Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/DeletionProcess/DeletionProcessCancelledByOwnerPushNotification.cs index 8816f209b4..52fb92f46d 100644 --- a/Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/DeletionProcess/DeletionProcessCancelledByOwnerPushNotification.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/DeletionProcess/DeletionProcessCancelledByOwnerPushNotification.cs @@ -1,5 +1,5 @@ using Backbone.BuildingBlocks.Application.PushNotifications; -namespace Backbone.Modules.Devices.Application.Infrastructure.PushNotifications.DeletionProcess; +namespace Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.DeletionProcess; public record DeletionProcessCancelledByOwnerPushNotification : IPushNotification; diff --git a/Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/DeletionProcess/DeletionProcessGracePeriodReminderPushNotification.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/DeletionProcess/DeletionProcessGracePeriodReminderPushNotification.cs similarity index 63% rename from Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/DeletionProcess/DeletionProcessGracePeriodReminderPushNotification.cs rename to Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/DeletionProcess/DeletionProcessGracePeriodReminderPushNotification.cs index 4265dddeec..aeebb44803 100644 --- a/Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/DeletionProcess/DeletionProcessGracePeriodReminderPushNotification.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/DeletionProcess/DeletionProcessGracePeriodReminderPushNotification.cs @@ -1,5 +1,5 @@ using Backbone.BuildingBlocks.Application.PushNotifications; -namespace Backbone.Modules.Devices.Application.Infrastructure.PushNotifications.DeletionProcess; +namespace Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.DeletionProcess; public record DeletionProcessGracePeriodReminderPushNotification(int DaysUntilDeletion) : IPushNotification; diff --git a/Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/DeletionProcess/DeletionProcessStartedPushNotification.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/DeletionProcess/DeletionProcessStartedPushNotification.cs similarity index 58% rename from Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/DeletionProcess/DeletionProcessStartedPushNotification.cs rename to Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/DeletionProcess/DeletionProcessStartedPushNotification.cs index 867949cb4d..656abfc411 100644 --- a/Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/DeletionProcess/DeletionProcessStartedPushNotification.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/DeletionProcess/DeletionProcessStartedPushNotification.cs @@ -1,5 +1,5 @@ using Backbone.BuildingBlocks.Application.PushNotifications; -namespace Backbone.Modules.Devices.Application.Infrastructure.PushNotifications.DeletionProcess; +namespace Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.DeletionProcess; public record DeletionProcessStartedPushNotification : IPushNotification; diff --git a/Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/DeletionProcess/DeletionStartsPushNotification.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/DeletionProcess/DeletionStartsPushNotification.cs new file mode 100644 index 0000000000..a02bad54ef --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/DeletionProcess/DeletionStartsPushNotification.cs @@ -0,0 +1,5 @@ +using Backbone.BuildingBlocks.Application.PushNotifications; + +namespace Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.DeletionProcess; + +public record DeletionStartsPushNotification : IPushNotification; diff --git a/Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/Device/BackupDeviceUsedPushNotification.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/Device/BackupDeviceUsedPushNotification.cs new file mode 100644 index 0000000000..bf7061372d --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/Device/BackupDeviceUsedPushNotification.cs @@ -0,0 +1,5 @@ +using Backbone.BuildingBlocks.Application.PushNotifications; + +namespace Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.Device; + +public class BackupDeviceUsedPushNotification : IPushNotification; diff --git a/Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/ExternalEvents/ExternalEventCreatedPushNotification.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/ExternalEvents/ExternalEventCreatedPushNotification.cs similarity index 53% rename from Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/ExternalEvents/ExternalEventCreatedPushNotification.cs rename to Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/ExternalEvents/ExternalEventCreatedPushNotification.cs index 920593104c..7cc6846f87 100644 --- a/Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/ExternalEvents/ExternalEventCreatedPushNotification.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/ExternalEvents/ExternalEventCreatedPushNotification.cs @@ -1,6 +1,7 @@ using Backbone.BuildingBlocks.Application.PushNotifications; +using Backbone.Modules.Devices.Abstractions.PushNotifications; -namespace Backbone.Modules.Devices.Application.Infrastructure.PushNotifications.ExternalEvents; +namespace Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.ExternalEvents; [NotificationId("ExternalEventCreated")] public record ExternalEventCreatedPushNotification : IPushNotification; diff --git a/Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/TestPushNotification.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/TestPushNotification.cs similarity index 66% rename from Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/TestPushNotification.cs rename to Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/TestPushNotification.cs index 70ad586b0b..568cf32e30 100644 --- a/Modules/Devices/src/Devices.Application/Infrastructure/PushNotifications/TestPushNotification.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/TestPushNotification.cs @@ -1,6 +1,6 @@ using Backbone.BuildingBlocks.Application.PushNotifications; -namespace Backbone.Modules.Devices.Application.Infrastructure.PushNotifications; +namespace Backbone.Modules.Devices.Module.Features.PushNotifications.Shared; public record TestPushNotification : IPushNotification { diff --git a/Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/Tokens/TokenLockedPushNotification.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/Tokens/TokenLockedPushNotification.cs new file mode 100644 index 0000000000..1bb7538681 --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/Shared/Tokens/TokenLockedPushNotification.cs @@ -0,0 +1,5 @@ +using Backbone.BuildingBlocks.Application.PushNotifications; + +namespace Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.Tokens; + +public class TokenLockedPushNotification : IPushNotification; diff --git a/Modules/Devices/src/Devices.Application/PushNotifications/Commands/UpdateDeviceRegistration/UpdateDeviceRegistrationCommand.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Command.cs similarity index 75% rename from Modules/Devices/src/Devices.Application/PushNotifications/Commands/UpdateDeviceRegistration/UpdateDeviceRegistrationCommand.cs rename to Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Command.cs index 35182254d6..a6c264f6cd 100644 --- a/Modules/Devices/src/Devices.Application/PushNotifications/Commands/UpdateDeviceRegistration/UpdateDeviceRegistrationCommand.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Devices.Application.PushNotifications.Commands.UpdateDeviceRegistration; +namespace Backbone.Modules.Devices.Module.Features.PushNotifications.UpdateDeviceRegistration; public class UpdateDeviceRegistrationCommand : IRequest { diff --git a/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Endpoint.cs new file mode 100644 index 0000000000..23e52d3006 --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Endpoint.cs @@ -0,0 +1,29 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Devices.Module.Features.PushNotifications.UpdateDeviceRegistration; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapUpdateDeviceRegistrationEndpoint(this RouteGroupBuilder group) + { + group.MapPut("", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest); + return group; + } + + private static async Task Handle([FromBody] UpdateDeviceRegistrationCommand request, IMediator mediator, CancellationToken cancellationToken) + { + if (request.Platform == null || request.Handle == null || request.AppId == null) + throw new BadHttpRequestException("Required request fields must not be null."); + + var response = await mediator.Send(request, cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Devices/src/Devices.Application/PushNotifications/Commands/UpdateDeviceRegistration/Handler.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Handler.cs similarity index 92% rename from Modules/Devices/src/Devices.Application/PushNotifications/Commands/UpdateDeviceRegistration/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Handler.cs index 7873ee9e8f..dad0f74157 100644 --- a/Modules/Devices/src/Devices.Application/PushNotifications/Commands/UpdateDeviceRegistration/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Handler.cs @@ -1,13 +1,14 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Application.Infrastructure.PushNotifications; -using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications; +using Backbone.Modules.Devices.Abstractions.PushNotifications; using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications.Handles; +using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications; +using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared; using MediatR; using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; -namespace Backbone.Modules.Devices.Application.PushNotifications.Commands.UpdateDeviceRegistration; +namespace Backbone.Modules.Devices.Module.Features.PushNotifications.UpdateDeviceRegistration; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/PushNotifications/Commands/UpdateDeviceRegistration/UpdateDeviceRegistrationResponse.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Response.cs similarity index 76% rename from Modules/Devices/src/Devices.Application/PushNotifications/Commands/UpdateDeviceRegistration/UpdateDeviceRegistrationResponse.cs rename to Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Response.cs index fe01276236..cae004ec34 100644 --- a/Modules/Devices/src/Devices.Application/PushNotifications/Commands/UpdateDeviceRegistration/UpdateDeviceRegistrationResponse.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Response.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications; -namespace Backbone.Modules.Devices.Application.PushNotifications.Commands.UpdateDeviceRegistration; +namespace Backbone.Modules.Devices.Module.Features.PushNotifications.UpdateDeviceRegistration; public class UpdateDeviceRegistrationResponse { diff --git a/Modules/Devices/src/Devices.Application/PushNotifications/Commands/UpdateDeviceRegistration/Validator.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Validator.cs similarity index 88% rename from Modules/Devices/src/Devices.Application/PushNotifications/Commands/UpdateDeviceRegistration/Validator.cs rename to Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Validator.cs index 60ef9f50d7..8fdc726789 100644 --- a/Modules/Devices/src/Devices.Application/PushNotifications/Commands/UpdateDeviceRegistration/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Validator.cs @@ -3,7 +3,7 @@ using Backbone.BuildingBlocks.Application.FluentValidation; using FluentValidation; -namespace Backbone.Modules.Devices.Application.PushNotifications.Commands.UpdateDeviceRegistration; +namespace Backbone.Modules.Devices.Module.Features.PushNotifications.UpdateDeviceRegistration; // ReSharper disable once UnusedMember.Global public class Validator : AbstractValidator diff --git a/Modules/Devices/src/Devices.Application/DTOs/ChallengeDTO.cs b/Modules/Devices/src/Devices.Module/Features/Shared/ChallengeDTO.cs similarity index 68% rename from Modules/Devices/src/Devices.Application/DTOs/ChallengeDTO.cs rename to Modules/Devices/src/Devices.Module/Features/Shared/ChallengeDTO.cs index 00cfbcbf62..8d58322c9d 100644 --- a/Modules/Devices/src/Devices.Application/DTOs/ChallengeDTO.cs +++ b/Modules/Devices/src/Devices.Module/Features/Shared/ChallengeDTO.cs @@ -1,4 +1,4 @@ -namespace Backbone.Modules.Devices.Application.DTOs; +namespace Backbone.Modules.Devices.Module.Features.Shared; public class ChallengeDTO { diff --git a/Modules/Devices/src/Devices.Application/DTOs/IdentityDeletionProcessDetailsDTO.cs b/Modules/Devices/src/Devices.Module/Features/Shared/IdentityDeletionProcessDetailsDTO.cs similarity index 97% rename from Modules/Devices/src/Devices.Application/DTOs/IdentityDeletionProcessDetailsDTO.cs rename to Modules/Devices/src/Devices.Module/Features/Shared/IdentityDeletionProcessDetailsDTO.cs index f8d380b51c..00ca86ca3d 100644 --- a/Modules/Devices/src/Devices.Application/DTOs/IdentityDeletionProcessDetailsDTO.cs +++ b/Modules/Devices/src/Devices.Module/Features/Shared/IdentityDeletionProcessDetailsDTO.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Devices.Domain.Entities.Identities; -namespace Backbone.Modules.Devices.Application.DTOs; +namespace Backbone.Modules.Devices.Module.Features.Shared; public class IdentityDeletionProcessDetailsDTO { diff --git a/Modules/Devices/src/Devices.Application/DTOs/IdentityDeletionProcessOverviewDTO.cs b/Modules/Devices/src/Devices.Module/Features/Shared/IdentityDeletionProcessOverviewDTO.cs similarity index 96% rename from Modules/Devices/src/Devices.Application/DTOs/IdentityDeletionProcessOverviewDTO.cs rename to Modules/Devices/src/Devices.Module/Features/Shared/IdentityDeletionProcessOverviewDTO.cs index d96d424b76..9a329af175 100644 --- a/Modules/Devices/src/Devices.Application/DTOs/IdentityDeletionProcessOverviewDTO.cs +++ b/Modules/Devices/src/Devices.Module/Features/Shared/IdentityDeletionProcessOverviewDTO.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Devices.Domain.Entities.Identities; -namespace Backbone.Modules.Devices.Application.DTOs; +namespace Backbone.Modules.Devices.Module.Features.Shared; public class IdentityDeletionProcessOverviewDTO { diff --git a/Modules/Devices/src/Devices.Application/DTOs/IdentitySummaryDTO.cs b/Modules/Devices/src/Devices.Module/Features/Shared/IdentitySummaryDTO.cs similarity index 88% rename from Modules/Devices/src/Devices.Application/DTOs/IdentitySummaryDTO.cs rename to Modules/Devices/src/Devices.Module/Features/Shared/IdentitySummaryDTO.cs index e0f99c99a4..873efd5c24 100644 --- a/Modules/Devices/src/Devices.Application/DTOs/IdentitySummaryDTO.cs +++ b/Modules/Devices/src/Devices.Module/Features/Shared/IdentitySummaryDTO.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Devices.Application.Devices.DTOs; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Module.Features.Devices.Shared; -namespace Backbone.Modules.Devices.Application.DTOs; +namespace Backbone.Modules.Devices.Module.Features.Shared; public class IdentitySummaryDTO { diff --git a/Modules/Devices/src/Devices.Module/Features/Tiers/CreateQueuedForDeletionTier/Command.cs b/Modules/Devices/src/Devices.Module/Features/Tiers/CreateQueuedForDeletionTier/Command.cs new file mode 100644 index 0000000000..658cbcac25 --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/Tiers/CreateQueuedForDeletionTier/Command.cs @@ -0,0 +1,5 @@ +using MediatR; + +namespace Backbone.Modules.Devices.Module.Features.Tiers.CreateQueuedForDeletionTier; + +public class CreateQueuedForDeletionTierCommand : IRequest; diff --git a/Modules/Devices/src/Devices.Application/Tiers/Commands/CreateQueuedForDeletionTier/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Tiers/CreateQueuedForDeletionTier/Handler.cs similarity index 79% rename from Modules/Devices/src/Devices.Application/Tiers/Commands/CreateQueuedForDeletionTier/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Tiers/CreateQueuedForDeletionTier/Handler.cs index 4bc94e1d1d..f310460554 100644 --- a/Modules/Devices/src/Devices.Application/Tiers/Commands/CreateQueuedForDeletionTier/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Tiers/CreateQueuedForDeletionTier/Handler.cs @@ -1,8 +1,8 @@ -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Aggregates.Tier; using MediatR; -namespace Backbone.Modules.Devices.Application.Tiers.Commands.CreateQueuedForDeletionTier; +namespace Backbone.Modules.Devices.Module.Features.Tiers.CreateQueuedForDeletionTier; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/Tiers/Commands/CreateTier/CreateTierCommand.cs b/Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Command.cs similarity index 63% rename from Modules/Devices/src/Devices.Application/Tiers/Commands/CreateTier/CreateTierCommand.cs rename to Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Command.cs index d10f4a1ff9..3589d0dca8 100644 --- a/Modules/Devices/src/Devices.Application/Tiers/Commands/CreateTier/CreateTierCommand.cs +++ b/Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Devices.Application.Tiers.Commands.CreateTier; +namespace Backbone.Modules.Devices.Module.Features.Tiers.CreateTier; public class CreateTierCommand : IRequest { diff --git a/Modules/Devices/src/Devices.Application/Tiers/Commands/CreateTier/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Handler.cs similarity index 90% rename from Modules/Devices/src/Devices.Application/Tiers/Commands/CreateTier/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Handler.cs index b5fac276d9..772c24d59e 100644 --- a/Modules/Devices/src/Devices.Application/Tiers/Commands/CreateTier/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Handler.cs @@ -1,10 +1,10 @@ -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Aggregates.Tier; using MediatR; using Microsoft.Extensions.Logging; using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; -namespace Backbone.Modules.Devices.Application.Tiers.Commands.CreateTier; +namespace Backbone.Modules.Devices.Module.Features.Tiers.CreateTier; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/Tiers/Commands/CreateTier/CreateTierResponse.cs b/Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Response.cs similarity index 50% rename from Modules/Devices/src/Devices.Application/Tiers/Commands/CreateTier/CreateTierResponse.cs rename to Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Response.cs index 67a9941ce5..b02b2e1921 100644 --- a/Modules/Devices/src/Devices.Application/Tiers/Commands/CreateTier/CreateTierResponse.cs +++ b/Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Response.cs @@ -1,6 +1,6 @@ -using Backbone.Modules.Devices.Application.Tiers.DTOs; +using Backbone.Modules.Devices.Module.Features.Tiers.Shared; -namespace Backbone.Modules.Devices.Application.Tiers.Commands.CreateTier; +namespace Backbone.Modules.Devices.Module.Features.Tiers.CreateTier; public class CreateTierResponse : TierDTO { diff --git a/Modules/Devices/src/Devices.Application/Tiers/Commands/CreateTier/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Validator.cs similarity index 80% rename from Modules/Devices/src/Devices.Application/Tiers/Commands/CreateTier/Validator.cs rename to Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Validator.cs index 1eb23365a9..fb4f0bc4a4 100644 --- a/Modules/Devices/src/Devices.Application/Tiers/Commands/CreateTier/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Validator.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Devices.Domain.Aggregates.Tier; using FluentValidation; -namespace Backbone.Modules.Devices.Application.Tiers.Commands.CreateTier; +namespace Backbone.Modules.Devices.Module.Features.Tiers.CreateTier; public class Validator : AbstractValidator { diff --git a/Modules/Devices/src/Devices.Application/Tiers/Commands/DeleteTier/DeleteTierCommand.cs b/Modules/Devices/src/Devices.Module/Features/Tiers/DeleteTier/Command.cs similarity index 60% rename from Modules/Devices/src/Devices.Application/Tiers/Commands/DeleteTier/DeleteTierCommand.cs rename to Modules/Devices/src/Devices.Module/Features/Tiers/DeleteTier/Command.cs index d97faff104..1fcc9e734e 100644 --- a/Modules/Devices/src/Devices.Application/Tiers/Commands/DeleteTier/DeleteTierCommand.cs +++ b/Modules/Devices/src/Devices.Module/Features/Tiers/DeleteTier/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Devices.Application.Tiers.Commands.DeleteTier; +namespace Backbone.Modules.Devices.Module.Features.Tiers.DeleteTier; public class DeleteTierCommand : IRequest { diff --git a/Modules/Devices/src/Devices.Application/Tiers/Commands/DeleteTier/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Tiers/DeleteTier/Handler.cs similarity index 91% rename from Modules/Devices/src/Devices.Application/Tiers/Commands/DeleteTier/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Tiers/DeleteTier/Handler.cs index 7e1fd86e4d..4d4763c7f0 100644 --- a/Modules/Devices/src/Devices.Application/Tiers/Commands/DeleteTier/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Tiers/DeleteTier/Handler.cs @@ -1,13 +1,13 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Domain.Exceptions; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Contracts.DomainEvents; using Backbone.Modules.Devices.Domain.Aggregates.Tier; using Backbone.Modules.Devices.Domain.DomainEvents; using MediatR; -namespace Backbone.Modules.Devices.Application.Tiers.Commands.DeleteTier; +namespace Backbone.Modules.Devices.Module.Features.Tiers.DeleteTier; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/Tiers/Commands/DeleteTier/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Tiers/DeleteTier/Validator.cs similarity index 80% rename from Modules/Devices/src/Devices.Application/Tiers/Commands/DeleteTier/Validator.cs rename to Modules/Devices/src/Devices.Module/Features/Tiers/DeleteTier/Validator.cs index 727e8b68da..7d6a76bd1d 100644 --- a/Modules/Devices/src/Devices.Application/Tiers/Commands/DeleteTier/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Tiers/DeleteTier/Validator.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Devices.Domain.Aggregates.Tier; using FluentValidation; -namespace Backbone.Modules.Devices.Application.Tiers.Commands.DeleteTier; +namespace Backbone.Modules.Devices.Module.Features.Tiers.DeleteTier; public class Validator : AbstractValidator { diff --git a/Modules/Devices/src/Devices.Application/Tiers/Queries/ListTiers/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Tiers/ListTiers/Handler.cs similarity index 78% rename from Modules/Devices/src/Devices.Application/Tiers/Queries/ListTiers/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Tiers/ListTiers/Handler.cs index c52b0f655e..c2eb88a787 100644 --- a/Modules/Devices/src/Devices.Application/Tiers/Queries/ListTiers/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Tiers/ListTiers/Handler.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using MediatR; -namespace Backbone.Modules.Devices.Application.Tiers.Queries.ListTiers; +namespace Backbone.Modules.Devices.Module.Features.Tiers.ListTiers; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/Tiers/Queries/ListTiers/ListTiersQuery.cs b/Modules/Devices/src/Devices.Module/Features/Tiers/ListTiers/Query.cs similarity index 73% rename from Modules/Devices/src/Devices.Application/Tiers/Queries/ListTiers/ListTiersQuery.cs rename to Modules/Devices/src/Devices.Module/Features/Tiers/ListTiers/Query.cs index ff5c506127..b0ff553bf5 100644 --- a/Modules/Devices/src/Devices.Application/Tiers/Queries/ListTiers/ListTiersQuery.cs +++ b/Modules/Devices/src/Devices.Module/Features/Tiers/ListTiers/Query.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.Pagination; using MediatR; -namespace Backbone.Modules.Devices.Application.Tiers.Queries.ListTiers; +namespace Backbone.Modules.Devices.Module.Features.Tiers.ListTiers; public class ListTiersQuery : IRequest { diff --git a/Modules/Devices/src/Devices.Application/Tiers/Queries/ListTiers/ListTiersResponse.cs b/Modules/Devices/src/Devices.Module/Features/Tiers/ListTiers/Response.cs similarity index 80% rename from Modules/Devices/src/Devices.Application/Tiers/Queries/ListTiers/ListTiersResponse.cs rename to Modules/Devices/src/Devices.Module/Features/Tiers/ListTiers/Response.cs index 19a14a2f7d..1a657fb2c3 100644 --- a/Modules/Devices/src/Devices.Application/Tiers/Queries/ListTiers/ListTiersResponse.cs +++ b/Modules/Devices/src/Devices.Module/Features/Tiers/ListTiers/Response.cs @@ -1,9 +1,9 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.Persistence.Database; using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.Modules.Devices.Application.Tiers.DTOs; using Backbone.Modules.Devices.Domain.Aggregates.Tier; +using Backbone.Modules.Devices.Module.Features.Tiers.Shared; -namespace Backbone.Modules.Devices.Application.Tiers.Queries.ListTiers; +namespace Backbone.Modules.Devices.Module.Features.Tiers.ListTiers; public class ListTiersResponse : PagedResponse { diff --git a/Modules/Devices/src/Devices.Application/Tiers/DTOs/TierDTO.cs b/Modules/Devices/src/Devices.Module/Features/Tiers/Shared/TierDTO.cs similarity index 74% rename from Modules/Devices/src/Devices.Application/Tiers/DTOs/TierDTO.cs rename to Modules/Devices/src/Devices.Module/Features/Tiers/Shared/TierDTO.cs index b40b3d2292..b4c2300a84 100644 --- a/Modules/Devices/src/Devices.Application/Tiers/DTOs/TierDTO.cs +++ b/Modules/Devices/src/Devices.Module/Features/Tiers/Shared/TierDTO.cs @@ -1,4 +1,4 @@ -namespace Backbone.Modules.Devices.Application.Tiers.DTOs; +namespace Backbone.Modules.Devices.Module.Features.Tiers.Shared; public class TierDTO { diff --git a/Modules/Devices/src/Devices.Application/Extensions/TierQueryableExtensions.cs b/Modules/Devices/src/Devices.Module/Features/Tiers/Shared/TierQueryableExtensions.cs similarity index 76% rename from Modules/Devices/src/Devices.Application/Extensions/TierQueryableExtensions.cs rename to Modules/Devices/src/Devices.Module/Features/Tiers/Shared/TierQueryableExtensions.cs index 1b4802a110..21ebcd0ac8 100644 --- a/Modules/Devices/src/Devices.Application/Extensions/TierQueryableExtensions.cs +++ b/Modules/Devices/src/Devices.Module/Features/Tiers/Shared/TierQueryableExtensions.cs @@ -1,7 +1,8 @@ using Backbone.Modules.Devices.Domain.Aggregates.Tier; +using Backbone.Modules.Devices.Module.Features.Tiers.Shared; using Microsoft.EntityFrameworkCore; -namespace Backbone.Modules.Devices.Application.Extensions; +namespace Backbone.Modules.Devices.Module.Features.Tiers.Shared; public static class TierQueryableExtensions { diff --git a/Modules/Devices/src/Devices.Module/Features/Users/SeedTestUsers/Command.cs b/Modules/Devices/src/Devices.Module/Features/Users/SeedTestUsers/Command.cs new file mode 100644 index 0000000000..1c7b73b612 --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/Users/SeedTestUsers/Command.cs @@ -0,0 +1,5 @@ +using MediatR; + +namespace Backbone.Modules.Devices.Module.Features.Users.SeedTestUsers; + +public class SeedTestUsersCommand : IRequest; diff --git a/Modules/Devices/src/Devices.Application/Users/Commands/SeedTestUsers/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Users/SeedTestUsers/Handler.cs similarity index 91% rename from Modules/Devices/src/Devices.Application/Users/Commands/SeedTestUsers/Handler.cs rename to Modules/Devices/src/Devices.Module/Features/Users/SeedTestUsers/Handler.cs index 8127ab0e12..e71589fa34 100644 --- a/Modules/Devices/src/Devices.Application/Users/Commands/SeedTestUsers/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Users/SeedTestUsers/Handler.cs @@ -1,11 +1,12 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Aggregates.Tier; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Module.Features.Tiers.Shared; using MediatR; using Microsoft.Extensions.Options; -namespace Backbone.Modules.Devices.Application.Users.Commands.SeedTestUsers; +namespace Backbone.Modules.Devices.Module.Features.Users.SeedTestUsers; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Module/packages.lock.json b/Modules/Devices/src/Devices.Module/packages.lock.json index 732bbbeffd..7f350065ef 100644 --- a/Modules/Devices/src/Devices.Module/packages.lock.json +++ b/Modules/Devices/src/Devices.Module/packages.lock.json @@ -2,6 +2,63 @@ "version": 2, "dependencies": { "net10.0": { + "CSharpFunctionalExtensions": { + "type": "Direct", + "requested": "[3.7.0, 3.7.0]", + "resolved": "3.7.0", + "contentHash": "eMZp8tc88O96eEFutiIskF3LE8lFY3fjbNRGfNa1ca0CD9sB8A00r5ltyYDih/7UFdJdVbhVq7tGeHI8xj6DlQ==" + }, + "FluentValidation": { + "type": "Direct", + "requested": "[12.1.1, 12.1.1]", + "resolved": "12.1.1", + "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" + }, + "FluentValidation.DependencyInjectionExtensions": { + "type": "Direct", + "requested": "[12.1.1, 12.1.1]", + "resolved": "12.1.1", + "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", + "dependencies": { + "FluentValidation": "12.1.1", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" + } + }, + "OpenIddict.AspNetCore": { + "type": "Direct", + "requested": "[7.6.0, 7.6.0]", + "resolved": "7.6.0", + "contentHash": "FblhXU1SzSjL1nPsK5kqi+uMofNYLg1gwBU/qqc8diOafTv/6jLOhpCzzk+wISR8OnkS7H3oFMcTjy8aaTm8ww==", + "dependencies": { + "OpenIddict": "7.6.0", + "OpenIddict.Client.AspNetCore": "7.6.0", + "OpenIddict.Client.DataProtection": "7.6.0", + "OpenIddict.Server.AspNetCore": "7.6.0", + "OpenIddict.Server.DataProtection": "7.6.0", + "OpenIddict.Validation.AspNetCore": "7.6.0", + "OpenIddict.Validation.DataProtection": "7.6.0" + } + }, + "OpenIddict.EntityFrameworkCore": { + "type": "Direct", + "requested": "[7.6.0, 7.6.0]", + "resolved": "7.6.0", + "contentHash": "BWbgvgKbDcg3EuNJvmXtUzeLxg9c4bU+PfDnZetCjGwcnlCsWcASkjVexKKevtUgWxRWJTQFRchMA09OKmOF/w==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "10.0.10", + "OpenIddict.Core": "7.6.0", + "OpenIddict.EntityFrameworkCore.Models": "7.6.0" + } + }, + "Polly": { + "type": "Direct", + "requested": "[8.7.0, 8.7.0]", + "resolved": "8.7.0", + "contentHash": "0qR4f0OR8FeCAfLWcfwzAM7w6EmpUgwa22PgxKjcL25dEAto7sKpQQXbtxp38vVvK+V3RFkh/TeI7g/iUdoYIQ==", + "dependencies": { + "Polly.Core": "8.7.0" + } + }, "ReHackt.Extensions.Options.Validation": { "type": "Direct", "requested": "[10.0.1, 10.0.1]", @@ -1216,23 +1273,11 @@ "Backbone.BuildingBlocks.Domain": "[1.0.0, )" } }, - "Backbone.Modules.Devices.Application": { + "Backbone.Modules.Devices.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Crypto": "[1.0.0, )", - "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Domain": "[1.0.0, )", - "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "OpenIddict.Core": "[7.6.0, 7.6.0]", - "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Devices.Domain": "[1.0.0, )" } }, "Backbone.Modules.Devices.Contracts": { @@ -1256,8 +1301,9 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", "FirebaseAdmin": "[3.6.0, 3.6.0]", "JWT": "[11.1.0, 11.1.0]", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1365,12 +1411,6 @@ "resolved": "2.7.0", "contentHash": "U+12df8UEWHgBi04YVf/Lgi2dy3SItlIYvHjjEVa/BngCQIzDCDRBk50DDByCfDvSbe5pRNFr3b7UrVK2kMcLw==" }, - "CSharpFunctionalExtensions": { - "type": "CentralTransitive", - "requested": "[3.7.0, 3.7.0]", - "resolved": "3.7.0", - "contentHash": "eMZp8tc88O96eEFutiIskF3LE8lFY3fjbNRGfNa1ca0CD9sB8A00r5ltyYDih/7UFdJdVbhVq7tGeHI8xj6DlQ==" - }, "Dapper": { "type": "CentralTransitive", "requested": "[2.1.79, 2.1.79]", @@ -1440,22 +1480,6 @@ "Google.Apis.Auth": "1.73.0" } }, - "FluentValidation": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" - }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", @@ -1763,21 +1787,6 @@ "libsodium": "[1.0.22, 1.0.23)" } }, - "OpenIddict.AspNetCore": { - "type": "CentralTransitive", - "requested": "[7.6.0, 7.6.0]", - "resolved": "7.6.0", - "contentHash": "FblhXU1SzSjL1nPsK5kqi+uMofNYLg1gwBU/qqc8diOafTv/6jLOhpCzzk+wISR8OnkS7H3oFMcTjy8aaTm8ww==", - "dependencies": { - "OpenIddict": "7.6.0", - "OpenIddict.Client.AspNetCore": "7.6.0", - "OpenIddict.Client.DataProtection": "7.6.0", - "OpenIddict.Server.AspNetCore": "7.6.0", - "OpenIddict.Server.DataProtection": "7.6.0", - "OpenIddict.Validation.AspNetCore": "7.6.0", - "OpenIddict.Validation.DataProtection": "7.6.0" - } - }, "OpenIddict.Core": { "type": "CentralTransitive", "requested": "[7.6.0, 7.6.0]", @@ -1790,17 +1799,6 @@ "OpenIddict.Abstractions": "7.6.0" } }, - "OpenIddict.EntityFrameworkCore": { - "type": "CentralTransitive", - "requested": "[7.6.0, 7.6.0]", - "resolved": "7.6.0", - "contentHash": "BWbgvgKbDcg3EuNJvmXtUzeLxg9c4bU+PfDnZetCjGwcnlCsWcASkjVexKKevtUgWxRWJTQFRchMA09OKmOF/w==", - "dependencies": { - "Microsoft.EntityFrameworkCore.Relational": "10.0.10", - "OpenIddict.Core": "7.6.0", - "OpenIddict.EntityFrameworkCore.Models": "7.6.0" - } - }, "OpenTelemetry.Api": { "type": "CentralTransitive", "requested": "[1.18.0, )", @@ -1866,15 +1864,6 @@ "OpenTelemetry.Api": "[1.18.0, 2.0.0)" } }, - "Polly": { - "type": "CentralTransitive", - "requested": "[8.7.0, 8.7.0]", - "resolved": "8.7.0", - "contentHash": "0qR4f0OR8FeCAfLWcfwzAM7w6EmpUgwa22PgxKjcL25dEAto7sKpQQXbtxp38vVvK+V3RFkh/TeI7g/iUdoYIQ==", - "dependencies": { - "Polly.Core": "8.7.0" - } - }, "RabbitMQ.Client": { "type": "CentralTransitive", "requested": "[7.2.1, 7.2.1]", diff --git a/Modules/Devices/test/Devices.Infrastructure.Tests/Devices.Infrastructure.Tests.csproj b/Modules/Devices/test/Devices.Infrastructure.Tests/Devices.Infrastructure.Tests.csproj index 873cfe597d..374e5d9887 100644 --- a/Modules/Devices/test/Devices.Infrastructure.Tests/Devices.Infrastructure.Tests.csproj +++ b/Modules/Devices/test/Devices.Infrastructure.Tests/Devices.Infrastructure.Tests.csproj @@ -15,6 +15,7 @@ + diff --git a/Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/Connectors/Apns/ApplePushNotificationServiceConnectorTests.cs b/Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/Connectors/Apns/ApplePushNotificationServiceConnectorTests.cs index f7ac04cd9a..91cba84629 100644 --- a/Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/Connectors/Apns/ApplePushNotificationServiceConnectorTests.cs +++ b/Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/Connectors/Apns/ApplePushNotificationServiceConnectorTests.cs @@ -1,7 +1,7 @@ using System.Net; using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Application.Infrastructure.PushNotifications; +using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared; using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications; using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications.Handles; using Backbone.Modules.Devices.Infrastructure.PushNotifications.Connectors.Apns; diff --git a/Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/NotificationTexts/PushNotificationTextProviderTests.cs b/Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/NotificationTexts/PushNotificationTextProviderTests.cs index aa8be47c18..2558dcefbf 100644 --- a/Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/NotificationTexts/PushNotificationTextProviderTests.cs +++ b/Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/NotificationTexts/PushNotificationTextProviderTests.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.PushNotifications; -using Backbone.Modules.Devices.Application.Infrastructure.PushNotifications; -using Backbone.Modules.Devices.Application.Infrastructure.PushNotifications.Announcements; -using Backbone.Modules.Devices.Application.Infrastructure.PushNotifications.Datawallet; +using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared; +using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.Announcements; +using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.Datawallet; using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.Modules.Devices.Infrastructure.PushNotifications.NotificationTexts; diff --git a/Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/PushServiceTests.cs b/Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/PushServiceTests.cs index a6ff733549..18c87f94d0 100644 --- a/Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/PushServiceTests.cs +++ b/Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/PushServiceTests.cs @@ -1,4 +1,4 @@ -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications; using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications.Handles; using Backbone.Modules.Devices.Infrastructure.PushNotifications; diff --git a/Modules/Devices/test/Devices.Infrastructure.Tests/packages.lock.json b/Modules/Devices/test/Devices.Infrastructure.Tests/packages.lock.json index d925ad35ed..b24c945d32 100644 --- a/Modules/Devices/test/Devices.Infrastructure.Tests/packages.lock.json +++ b/Modules/Devices/test/Devices.Infrastructure.Tests/packages.lock.json @@ -38,6 +38,22 @@ "xunit.v3.core.mtp-v2": "[3.2.2]" } }, + "Asp.Versioning.Abstractions": { + "type": "Transitive", + "resolved": "10.1.0", + "contentHash": "RwdgC5O0baZ4pt30pAKKPQHq2CV4unBKA4HWoTeu7NY9ZwXM0dWYGf1Ipc5GK0eFBe9cMeqz4pGpPncMz4/ZNQ==", + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.0" + } + }, + "Asp.Versioning.Http": { + "type": "Transitive", + "resolved": "10.0.1", + "contentHash": "g0ayV/9ho3tGgooC6eF5p1063I1WzlxFJDYQrigcGnW+mLvui6eXrcW5hzTHhQREroUR3ZwXQrIN2SAIoi+KDw==", + "dependencies": { + "Asp.Versioning.Abstractions": "10.1.0" + } + }, "AWSSDK.Core": { "type": "Transitive", "resolved": "4.0.100.9", @@ -66,16 +82,6 @@ "System.Memory.Data": "1.0.2" } }, - "Azure.Identity": { - "type": "Transitive", - "resolved": "1.17.1", - "contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Microsoft.Identity.Client": "4.78.0", - "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" - } - }, "Azure.Storage.Common": { "type": "Transitive", "resolved": "12.28.0", @@ -296,22 +302,34 @@ }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, + "Microsoft.Data.SqlClient.Extensions.Abstractions": { + "type": "Transitive", + "resolved": "7.0.2", + "contentHash": "Zx7z61fG2Nc6LdDn4jA7b5Aj1ABrljkOPRE31RvVUdjF6IgbG60leDUhMCafsnWFgaheiK3iqpLe+kbf5Z5L8Q==", + "dependencies": { + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)" + } + }, + "Microsoft.Data.SqlClient.Internal.Logging": { + "type": "Transitive", + "resolved": "7.0.2", + "contentHash": "iqgYBbGSVy/DIYWjzmQOa964Kn4rs4wW5vg2IamqVK0fQqfTiILVR5hMK27XWqoyONtAZs+VxH354cPJBtSnbg==" + }, "Microsoft.Data.SqlClient.SNI.runtime": { "type": "Transitive", "resolved": "6.0.2", @@ -368,6 +386,11 @@ "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10" } }, + "Microsoft.Extensions.ApiDescription.Server": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "NCWCGiwRwje8773yzPQhvucYnnfeR+ZoB1VRIrIMp4uaeUNw7jvEPHij3HIbwCDuNCrNcphA00KSAR9yD9qmbg==" + }, "Microsoft.Extensions.Caching.Abstractions": { "type": "Transitive", "resolved": "10.0.10", @@ -726,11 +749,11 @@ }, "Microsoft.IdentityModel.Protocols.OpenIdConnect": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "yT2Hdj8LpPbcT9C9KlLVxXl09C8zjFaVSaApdOwuecMuoV4s6Sof/mnTDz/+F/lILPIBvrWugR9CC7iRVZgbfQ==", + "resolved": "8.16.0", + "contentHash": "h4yVXyJsEBBX5lg2G5ftMsi5JzcNEGAzrNphA6DQ6eOd8P0s+cDCOyPwVTYLePZvJL5unbPvYIvzrbTXzFjXnQ==", "dependencies": { - "Microsoft.IdentityModel.Protocols": "7.7.1", - "System.IdentityModel.Tokens.Jwt": "7.7.1" + "Microsoft.IdentityModel.Protocols": "8.16.0", + "System.IdentityModel.Tokens.Jwt": "8.16.0" } }, "Microsoft.IdentityModel.Tokens": { @@ -743,6 +766,11 @@ "Microsoft.IdentityModel.Logging": "8.19.2" } }, + "Microsoft.OpenApi": { + "type": "Transitive", + "resolved": "2.7.5", + "contentHash": "0FA67RSnRM4tcBKqiqVu/HPdZ9+QOKbmeRjxRUGTCjPU4C0bmUhd97Dso7Yild5P7nOV6GxJ2xrK0Kv/O9xp0w==" + }, "Microsoft.SqlServer.Server": { "type": "Transitive", "resolved": "1.0.0", @@ -995,6 +1023,26 @@ "OpenIddict.Validation": "7.6.0" } }, + "OpenTelemetry": { + "type": "Transitive", + "resolved": "1.18.0", + "contentHash": "13AKxycK+olOLe061MjliPTNBR/DUkjyRr0b9zwUhKyMjFS8lXS7G31R85rkbM55up2YFmdykWdAw2giBDJpiQ==", + "dependencies": { + "Microsoft.Extensions.Configuration.EnvironmentVariables": "10.0.0", + "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Configuration": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "1.18.0" + } + }, + "OpenTelemetry.Api.ProviderBuilderExtensions": { + "type": "Transitive", + "resolved": "1.18.0", + "contentHash": "io6A6PJFp3vIObRGf6oPjdHsdglkinXt/0SpTDJHrVnsLxUtOzwh/QwTsnhBJ43wJ6QcGMkyNzsSSY8XEB1Q5Q==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "OpenTelemetry.Api": "1.18.0" + } + }, "Polly.Core": { "type": "Transitive", "resolved": "8.7.0", @@ -1027,6 +1075,40 @@ "System.Threading.RateLimiting": "8.0.0" } }, + "runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "A8v6PGmk+UGbfWo5Ixup0lPM4swuSwOiayJExZwKIOjTlFFQIsu3QnDXECosBEyrWSPryxBVrdqtJyhK3BaupQ==", + "dependencies": { + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": "4.4.0" + } + }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, + "Serilog.Extensions.Logging": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "vx0kABKl2dWbBhhqAfTOk53/i8aV/5VaT3a6il9gn72Wqs2pM7EK2OB6No6xdqK2IaY6Zf9gdjLuK9BVa2rT+Q==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.0", + "Serilog": "4.2.0" + } + }, "SQLitePCLRaw.bundle_e_sqlite3": { "type": "Transitive", "resolved": "2.1.11", @@ -1049,6 +1131,27 @@ "SQLitePCLRaw.core": "2.1.11" } }, + "Swashbuckle.AspNetCore.Swagger": { + "type": "Transitive", + "resolved": "10.2.3", + "contentHash": "1jUUs3WQnrS0FUtaZPLSy1yYMEwS1zlvDmvQ2/eldPHUANX0LJSLVZecCMgSMdeGiRqeaRrIXLtSz++TCiTMww==", + "dependencies": { + "Microsoft.OpenApi": "2.7.5" + } + }, + "Swashbuckle.AspNetCore.SwaggerGen": { + "type": "Transitive", + "resolved": "10.2.3", + "contentHash": "y7t4coDRAeFYChmvlMRiH2OjbiRrm9AVIDgt17fQfs3x9PVAI5PiwWYOhg+4F13R4Q36WDc9lqfoOnNa3tNbGg==", + "dependencies": { + "Swashbuckle.AspNetCore.Swagger": "10.2.3" + } + }, + "Swashbuckle.AspNetCore.SwaggerUI": { + "type": "Transitive", + "resolved": "10.2.3", + "contentHash": "nthWONRs/FJ4yyG206g1cC52WEG8EqrjuMWjGdR+5XG7lbjFto6NqcI9EMICgVFom/UivIjUVwI76ZHbHwTPfQ==" + }, "System.ClientModel": { "type": "Transitive", "resolved": "1.14.0", @@ -1067,11 +1170,11 @@ }, "System.Configuration.ConfigurationManager": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "vPinosRgEk1CGjohbv0pDuz6gPprkWo5xvBTjOJjks5JOgOEWvPndq5NngGxiTcBcy1+k9GwzZ1c3Bp2fU5ezw==", + "resolved": "9.0.13", + "contentHash": "GbBrJq9S/gYpHzm7Pxx6Y5tDyfSfyxW6tlP5oiKJV38uf19Wp+GIIAnWfyL1zmNiz1+EjwVapw2WkBFvvqKQzg==", "dependencies": { - "System.Diagnostics.EventLog": "9.0.11", - "System.Security.Cryptography.ProtectedData": "9.0.11" + "System.Diagnostics.EventLog": "9.0.13", + "System.Security.Cryptography.ProtectedData": "9.0.13" } }, "System.Diagnostics.EventLog": { @@ -1081,11 +1184,11 @@ }, "System.IdentityModel.Tokens.Jwt": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "rQkO1YbAjLwnDJSMpRhRtrc6XwIcEOcUvoEcge+evurpzSZM3UNK+MZfD3sKyTlYsvknZ6eJjSBfnmXqwOsT9Q==", + "resolved": "8.16.0", + "contentHash": "rrs2u7DRMXQG2yh0oVyF/vLwosfRv20Ld2iEpYcKwQWXHjfV+gFXNQsQ9p008kR9Ou4pxBs68Q6/9zC8Gi1wjg==", "dependencies": { - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Tokens": "7.7.1" + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Tokens": "8.16.0" } }, "System.IO.Hashing": { @@ -1113,8 +1216,8 @@ }, "System.Security.Cryptography.ProtectedData": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "s8yUYuYYu+PAwvBdhLG1KyrGrk9gkYeuPxfAsXsTqqWyepwSyEw8hAaflW4nO98NG52YpYI1am2+9o+79h2RtQ==" + "resolved": "9.0.13", + "contentHash": "t8S9IDpjJKsLpLkeBdW8cWtcPyYqrGu93Dej1RO6WwuL/lkFSqWlan3rMJfortqz1mRIh+sys2AFsSA6jWJ3Jg==" }, "System.Security.Cryptography.Xml": { "type": "Transitive", @@ -1186,6 +1289,33 @@ "xunit.v3.runner.common": "[3.2.2]" } }, + "Backbone.BuildingBlocks.API": { + "type": "Project", + "dependencies": { + "Asp.Versioning.Mvc": "[10.0.1, 10.0.1]", + "Asp.Versioning.Mvc.ApiExplorer": "[10.0.1, 10.0.1]", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Module": "[1.0.0, )", + "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", + "Backbone.Tooling": "[1.0.0, )", + "DotNetDiag.HealthChecks.NpgSql": "[10.0.10, 10.0.10]", + "DotNetDiag.HealthChecks.SqlServer": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.Relational": "[10.0.10, 10.0.10]", + "OpenTelemetry.Exporter.OpenTelemetryProtocol": "[1.18.0, )", + "OpenTelemetry.Extensions.Hosting": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.AspNetCore": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.EntityFrameworkCore": "[1.18.0-beta.1, )", + "OpenTelemetry.Instrumentation.Http": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.Runtime": "[1.18.0, 1.18.0]", + "Polly": "[8.7.0, 8.7.0]", + "Serilog.Enrichers.Sensitive": "[2.1.0, 2.1.0]", + "Serilog.Extensions.Hosting": "[10.0.0, 10.0.0]", + "Swashbuckle.AspNetCore": "[10.2.3, 10.2.3]", + "System.Data.SqlClient": "[4.9.1, 4.9.1]" + } + }, "Backbone.BuildingBlocks.Application": { "type": "Project", "dependencies": { @@ -1243,6 +1373,15 @@ "Serilog": "[4.4.0, 4.4.0]" } }, + "Backbone.BuildingBlocks.Module": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Microsoft.Extensions.Configuration.Abstractions": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[10.0.10, 10.0.10]", + "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" + } + }, "Backbone.Common.Infrastructure": { "type": "Project", "dependencies": { @@ -1273,23 +1412,11 @@ "Backbone.BuildingBlocks.Domain": "[1.0.0, )" } }, - "Backbone.Modules.Devices.Application": { + "Backbone.Modules.Devices.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Crypto": "[1.0.0, )", - "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Domain": "[1.0.0, )", - "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "OpenIddict.Core": "[7.6.0, 7.6.0]", - "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Devices.Domain": "[1.0.0, )" } }, "Backbone.Modules.Devices.Contracts": { @@ -1313,8 +1440,9 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", "FirebaseAdmin": "[3.6.0, 3.6.0]", "JWT": "[11.1.0, 11.1.0]", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1331,6 +1459,41 @@ "Polly": "[8.7.0, 8.7.0]" } }, + "Backbone.Modules.Devices.Infrastructure.Database.Postgres": { + "type": "Project", + "dependencies": { + "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )" + } + }, + "Backbone.Modules.Devices.Infrastructure.Database.SqlServer": { + "type": "Project", + "dependencies": { + "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )" + } + }, + "Backbone.Modules.Devices.Module": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.API": "[1.0.0, )", + "Backbone.Crypto": "[1.0.0, )", + "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", + "Backbone.Modules.Devices.Infrastructure.Database.Postgres": "[1.0.0, )", + "Backbone.Modules.Devices.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", + "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", + "FluentValidation": "[12.1.1, 12.1.1]", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "OpenIddict.AspNetCore": "[7.6.0, 7.6.0]", + "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", + "Polly": "[8.7.0, 8.7.0]", + "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" + } + }, "Backbone.Modules.Synchronization.Contracts": { "type": "Project", "dependencies": { @@ -1364,6 +1527,24 @@ "Shouldly": "[4.3.0, 4.3.0]" } }, + "Asp.Versioning.Mvc": { + "type": "CentralTransitive", + "requested": "[10.0.1, 10.0.1]", + "resolved": "10.0.1", + "contentHash": "OqoFPKKxXkNmw62H3CgXkPrf1L4PPwwyYr9QMP6itt/khKTIayqaHhK6F2e3jt6KHc4s23cWAUbu+Z5GPEeMaw==", + "dependencies": { + "Asp.Versioning.Http": "10.0.1" + } + }, + "Asp.Versioning.Mvc.ApiExplorer": { + "type": "CentralTransitive", + "requested": "[10.0.1, 10.0.1]", + "resolved": "10.0.1", + "contentHash": "ylPZe+LheFp0pt2tSMq2pPeGAkMLqWVOn5+1/xOB/eUj889n9b35Sny08bSQ0ziAGIFjp3BBTXaYsWJjRoFV4A==", + "dependencies": { + "Asp.Versioning.Mvc": "10.0.1" + } + }, "Autofac": { "type": "CentralTransitive", "requested": "[9.3.2, 9.3.2]", @@ -1418,6 +1599,26 @@ "resolved": "2.1.79", "contentHash": "8YijbzgTfmqmQOnVNorYM6K++pxqnW3nJ4aC1sRHzxUA2CcuoJ9gsTem3kgBnPRMc38zZHl4Esb6hAezXIEEuw==" }, + "DotNetDiag.HealthChecks.NpgSql": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "lxb6wQ1YC/TpvZMVgbyeLP5dYOg/RJWLg1xlR+I0FeyfyMmukppKdwzBOrKRtZ8FHG3nV9xrVTaPdwRw0yL4Vw==", + "dependencies": { + "Microsoft.Extensions.Diagnostics.HealthChecks": "10.0.9", + "Npgsql": "10.0.3" + } + }, + "DotNetDiag.HealthChecks.SqlServer": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "6t2HP5VQR0GZDJiw8iZvzOTRC+84irUeaUuWvcqcnc4K5Mzrn/A9V0ucoyjySXOF1vGkdTHjlJMknJVYC9c2Hg==", + "dependencies": { + "Microsoft.Data.SqlClient": "7.0.2", + "Microsoft.Extensions.Diagnostics.HealthChecks": "10.0.9" + } + }, "EFCore.BulkExtensions.Core": { "type": "CentralTransitive", "requested": "[10.0.1, 10.0.1]", @@ -1852,6 +2053,65 @@ "resolved": "1.18.0", "contentHash": "Dhzm5oughIY9EWckt2J1yXcEbXpki5WCL2q7prJoYxzH6C7jdkfGtPMTkUVZZ4AhjJKzQnlC+kLSIlmIVwC4Vw==" }, + "OpenTelemetry.Exporter.OpenTelemetryProtocol": { + "type": "CentralTransitive", + "requested": "[1.18.0, )", + "resolved": "1.18.0", + "contentHash": "Et3WAviooKGObZjUZN8d6eTsdJs1YM3ZoN+KlWSAHksTmHG1nyGi9XGo2wb0fkFMWK0g80FOPdR1njg52Dm+aw==", + "dependencies": { + "OpenTelemetry": "1.18.0" + } + }, + "OpenTelemetry.Extensions.Hosting": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "u+JMA82H65MKwMvd2qUpL8C2qE4Jux2nvX9hmy036UK/Apv2YyIRYCttF/vlX6nMPcAKI8BXkscmL4QG3C69fw==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", + "OpenTelemetry": "1.18.0" + } + }, + "OpenTelemetry.Instrumentation.AspNetCore": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "hBiMXE/CGIAHUOpi0gScNkjHB0L9XbCin5lZObL+dMBl4OmpndnHgxP3JZDnnGtU6qOzdeh8TYUV9f6Jgmmhlw==", + "dependencies": { + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[1.18.0-beta.1, )", + "resolved": "1.18.0-beta.1", + "contentHash": "n15cNXxkSl9G6KD41wZYmujjERYOBiIgn2VeesTFhLtHZ+QQQE3baLrCk7UyzidEw/uGObRcW3SKhqpyMpGe1w==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Http": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "/X57peOOa4a+9V4DSVXbuIWdsAxmU5gsxw8lu+gJU0zuewsYhC9f6qdm8GEW0VvqG9e+gxn0HdVR5G3YHcWDTw==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Runtime": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "McuXGjBJDL/Cown2PxfUQysK98MZG7ZDjO/IKUtaAx8t1m0PB0d+QtJC79RFTVipMhRIwjJiULNOp0OGfZbvwg==", + "dependencies": { + "OpenTelemetry.Api": "[1.18.0, 2.0.0)" + } + }, "Polly": { "type": "CentralTransitive", "requested": "[8.7.0, 8.7.0]", @@ -1886,6 +2146,25 @@ "resolved": "4.4.0", "contentHash": "ZC6Le3rr4TVJJjS4KsQAesxeF1EhW9qcZmmG7eP5Y2G3+gTGkJEUXkq4+tZNPtyp05I0wWOxnIjwtxFweJsObw==" }, + "Serilog.Enrichers.Sensitive": { + "type": "CentralTransitive", + "requested": "[2.1.0, 2.1.0]", + "resolved": "2.1.0", + "contentHash": "nlaEYMoHjJqncjQgc0Nv4LOIkAwUt4Nvmx3EMNjY4MKC7QqZs9zB0v/NwFnaWzLF7qztc7mna1bjn20Auohu0g==" + }, + "Serilog.Extensions.Hosting": { + "type": "CentralTransitive", + "requested": "[10.0.0, 10.0.0]", + "resolved": "10.0.0", + "contentHash": "E7juuIc+gzoGxgzFooFgAV8g9BfiSXNKsUok9NmEpyAXg2odkcPsMa/Yo4axkJRlh0se7mkYQ1GXDaBemR+b6w==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Serilog": "4.3.0", + "Serilog.Extensions.Logging": "10.0.0" + } + }, "Shouldly": { "type": "CentralTransitive", "requested": "[4.3.0, 4.3.0]", @@ -1907,6 +2186,27 @@ "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "Swashbuckle.AspNetCore": { + "type": "CentralTransitive", + "requested": "[10.2.3, 10.2.3]", + "resolved": "10.2.3", + "contentHash": "8KNh1RWvofdU6DVLyBs4Z/OpUMnmf8oNvJQc0QxpwySRbi42bwLfdVMMrXZWANg5U5KQGQq1xW6r/hlcqw99tQ==", + "dependencies": { + "Microsoft.Extensions.ApiDescription.Server": "10.0.0", + "Swashbuckle.AspNetCore.Swagger": "10.2.3", + "Swashbuckle.AspNetCore.SwaggerGen": "10.2.3", + "Swashbuckle.AspNetCore.SwaggerUI": "10.2.3" + } + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/linux-arm64": { @@ -1917,20 +2217,19 @@ }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1951,6 +2250,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1974,6 +2288,15 @@ "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/linux-x64": { @@ -1984,20 +2307,19 @@ }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -2018,6 +2340,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -2041,6 +2378,15 @@ "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/osx-arm64": { @@ -2051,20 +2397,19 @@ }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -2085,6 +2430,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -2108,6 +2468,15 @@ "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/win-x64": { @@ -2118,20 +2487,19 @@ }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -2152,6 +2520,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -2175,6 +2558,15 @@ "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } } } diff --git a/Modules/Devices/test/Devices.Application.Tests/Devices.Application.Tests.csproj b/Modules/Devices/test/Devices.Module.Tests/Devices.Module.Tests.csproj similarity index 87% rename from Modules/Devices/test/Devices.Application.Tests/Devices.Application.Tests.csproj rename to Modules/Devices/test/Devices.Module.Tests/Devices.Module.Tests.csproj index c320565d7d..374e5d9887 100644 --- a/Modules/Devices/test/Devices.Application.Tests/Devices.Application.Tests.csproj +++ b/Modules/Devices/test/Devices.Module.Tests/Devices.Module.Tests.csproj @@ -15,7 +15,7 @@ - + diff --git a/Modules/Devices/test/Devices.Application.Tests/TestDataGenerator.cs b/Modules/Devices/test/Devices.Module.Tests/TestDataGenerator.cs similarity index 97% rename from Modules/Devices/test/Devices.Application.Tests/TestDataGenerator.cs rename to Modules/Devices/test/Devices.Module.Tests/TestDataGenerator.cs index 6314796c1a..bbd906191e 100644 --- a/Modules/Devices/test/Devices.Application.Tests/TestDataGenerator.cs +++ b/Modules/Devices/test/Devices.Module.Tests/TestDataGenerator.cs @@ -3,7 +3,7 @@ using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.Tooling; -namespace Backbone.Modules.Devices.Application.Tests; +namespace Backbone.Modules.Devices.Module.Tests; public static class TestDataGenerator { diff --git a/Modules/Devices/test/Devices.Application.Tests/Tests/Devices/Commands/DeleteDevice/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Devices/Commands/DeleteDevice/ValidatorTests.cs similarity index 79% rename from Modules/Devices/test/Devices.Application.Tests/Tests/Devices/Commands/DeleteDevice/ValidatorTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Tests/Devices/Commands/DeleteDevice/ValidatorTests.cs index e3f6a4adc4..7452e844d4 100644 --- a/Modules/Devices/test/Devices.Application.Tests/Tests/Devices/Commands/DeleteDevice/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Devices/Commands/DeleteDevice/ValidatorTests.cs @@ -1,9 +1,9 @@ -using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Application.Devices.Commands.DeleteDevice; +using Backbone.DevelopmentKit.Identity.ValueObjects; +using Backbone.Modules.Devices.Module.Features.Devices.DeleteDevice; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Devices.Application.Tests.Tests.Devices.Commands.DeleteDevice; +namespace Backbone.Modules.Devices.Module.Tests.Tests.Devices.Commands.DeleteDevice; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Application.Tests/Tests/Devices/Queries/ListDevices/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Devices/Queries/ListDevices/ValidatorTests.cs similarity index 82% rename from Modules/Devices/test/Devices.Application.Tests/Tests/Devices/Queries/ListDevices/ValidatorTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Tests/Devices/Queries/ListDevices/ValidatorTests.cs index 43a7ac99dd..4e42f89a4a 100644 --- a/Modules/Devices/test/Devices.Application.Tests/Tests/Devices/Queries/ListDevices/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Devices/Queries/ListDevices/ValidatorTests.cs @@ -1,10 +1,10 @@ -using Backbone.BuildingBlocks.Application.Pagination; +using Backbone.BuildingBlocks.Application.Pagination; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Application.Devices.Queries.ListDevices; +using Backbone.Modules.Devices.Module.Features.Devices.ListDevices; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Devices.Application.Tests.Tests.Devices.Queries.ListDevices; +namespace Backbone.Modules.Devices.Module.Tests.Tests.Devices.Queries.ListDevices; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Application.Tests/Tests/DomainEvents/Incoming/AnnouncementCreatedDomainEventHandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/DomainEvents/Incoming/AnnouncementCreatedDomainEventHandlerTests.cs similarity index 89% rename from Modules/Devices/test/Devices.Application.Tests/Tests/DomainEvents/Incoming/AnnouncementCreatedDomainEventHandlerTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Tests/DomainEvents/Incoming/AnnouncementCreatedDomainEventHandlerTests.cs index ee31cdac3d..e88fc2cf90 100644 --- a/Modules/Devices/test/Devices.Application.Tests/Tests/DomainEvents/Incoming/AnnouncementCreatedDomainEventHandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/DomainEvents/Incoming/AnnouncementCreatedDomainEventHandlerTests.cs @@ -1,9 +1,9 @@ -using Backbone.BuildingBlocks.Application.PushNotifications; +using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.Modules.Announcements.Contracts.DomainEvents; -using Backbone.Modules.Devices.Application.DomainEvents.Incoming.AnnouncementCreated; +using Backbone.Modules.Devices.Module.Features.DomainEvents.AnnouncementCreated; using FakeItEasy; -namespace Backbone.Modules.Devices.Application.Tests.Tests.DomainEvents.Incoming; +namespace Backbone.Modules.Devices.Module.Tests.Tests.DomainEvents.Incoming; public class AnnouncementCreatedDomainEventHandlerTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Application.Tests/Tests/DomainEvents/Incoming/ExternalEventCreatedDomainEventHandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/DomainEvents/Incoming/ExternalEventCreatedDomainEventHandlerTests.cs similarity index 89% rename from Modules/Devices/test/Devices.Application.Tests/Tests/DomainEvents/Incoming/ExternalEventCreatedDomainEventHandlerTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Tests/DomainEvents/Incoming/ExternalEventCreatedDomainEventHandlerTests.cs index a589a298bc..ded70cebc1 100644 --- a/Modules/Devices/test/Devices.Application.Tests/Tests/DomainEvents/Incoming/ExternalEventCreatedDomainEventHandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/DomainEvents/Incoming/ExternalEventCreatedDomainEventHandlerTests.cs @@ -1,11 +1,11 @@ -using Backbone.BuildingBlocks.Application.PushNotifications; -using Backbone.Modules.Devices.Application.DomainEvents.Incoming.ExternalEventCreated; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Devices.Application.Infrastructure.PushNotifications.ExternalEvents; +using Backbone.BuildingBlocks.Application.PushNotifications; +using Backbone.Modules.Devices.Module.Features.DomainEvents.ExternalEventCreated; +using Backbone.Modules.Devices.Abstractions; +using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.ExternalEvents; using Backbone.Modules.Synchronization.Contracts.DomainEvents; using FakeItEasy; -namespace Backbone.Modules.Devices.Application.Tests.Tests.DomainEvents.Incoming; +namespace Backbone.Modules.Devices.Module.Tests.Tests.DomainEvents.Incoming; public class ExternalEventCreatedDomainEventHandlerTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Application.Tests/Tests/DomainEvents/Incoming/TokenLockedDomainEventHandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/DomainEvents/Incoming/TokenLockedDomainEventHandlerTests.cs similarity index 73% rename from Modules/Devices/test/Devices.Application.Tests/Tests/DomainEvents/Incoming/TokenLockedDomainEventHandlerTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Tests/DomainEvents/Incoming/TokenLockedDomainEventHandlerTests.cs index 085fc3e90d..832f3dcd9b 100644 --- a/Modules/Devices/test/Devices.Application.Tests/Tests/DomainEvents/Incoming/TokenLockedDomainEventHandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/DomainEvents/Incoming/TokenLockedDomainEventHandlerTests.cs @@ -1,12 +1,12 @@ -using Backbone.BuildingBlocks.Application.PushNotifications; +using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Application.DomainEvents.Incoming.TokenLocked; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Devices.Application.Infrastructure.PushNotifications.Tokens; +using Backbone.Modules.Devices.Module.Features.DomainEvents.TokenLocked; +using Backbone.Modules.Devices.Abstractions; +using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.Tokens; using Backbone.Modules.Tokens.Contracts.DomainEvents; using FakeItEasy; -namespace Backbone.Modules.Devices.Application.Tests.Tests.DomainEvents.Incoming; +namespace Backbone.Modules.Devices.Module.Tests.Tests.DomainEvents.Incoming; public class TokenLockedDomainEventHandlerTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Commands/CancelDeletionProcess/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/CancelDeletionProcess/HandlerTests.cs similarity index 89% rename from Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Commands/CancelDeletionProcess/HandlerTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/CancelDeletionProcess/HandlerTests.cs index 05a8fc9d9a..48334d122e 100644 --- a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Commands/CancelDeletionProcess/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/CancelDeletionProcess/HandlerTests.cs @@ -1,13 +1,13 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; +using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.BuildingBlocks.Application.PushNotifications; -using Backbone.Modules.Devices.Application.Identities.Commands.CancelDeletionProcess; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Devices.Application.Infrastructure.PushNotifications.DeletionProcess; +using Backbone.Modules.Devices.Module.Features.Identities.CancelDeletionProcess; +using Backbone.Modules.Devices.Abstractions; +using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.DeletionProcess; using Backbone.Modules.Devices.Domain.Entities.Identities; using FakeItEasy; -namespace Backbone.Modules.Devices.Application.Tests.Tests.Identities.Commands.CancelDeletionProcess; +namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities.Commands.CancelDeletionProcess; public class HandlerTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Commands/CancelDeletionProcess/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/CancelDeletionProcess/ValidatorTests.cs similarity index 83% rename from Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Commands/CancelDeletionProcess/ValidatorTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/CancelDeletionProcess/ValidatorTests.cs index 4f84f48780..05f97eef12 100644 --- a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Commands/CancelDeletionProcess/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/CancelDeletionProcess/ValidatorTests.cs @@ -1,9 +1,9 @@ -using Backbone.Modules.Devices.Application.Identities.Commands.CancelDeletionProcess; +using Backbone.Modules.Devices.Module.Features.Identities.CancelDeletionProcess; using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Devices.Application.Tests.Tests.Identities.Commands.CancelDeletionProcess; +namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities.Commands.CancelDeletionProcess; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Commands/DeleteIdentity/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/DeleteIdentity/ValidatorTests.cs similarity index 83% rename from Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Commands/DeleteIdentity/ValidatorTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/DeleteIdentity/ValidatorTests.cs index 8341862fdc..64a246715f 100644 --- a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Commands/DeleteIdentity/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/DeleteIdentity/ValidatorTests.cs @@ -1,8 +1,8 @@ -using Backbone.Modules.Devices.Application.Identities.Commands.DeleteIdentity; +using Backbone.Modules.Devices.Module.Features.Identities.DeleteIdentity; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Devices.Application.Tests.Tests.Identities.Commands.DeleteIdentity; +namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities.Commands.DeleteIdentity; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Commands/LogDeletionProcess/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/LogDeletionProcess/ValidatorTests.cs similarity index 84% rename from Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Commands/LogDeletionProcess/ValidatorTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/LogDeletionProcess/ValidatorTests.cs index 8a8e6eaca4..a9a63aeecc 100644 --- a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Commands/LogDeletionProcess/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/LogDeletionProcess/ValidatorTests.cs @@ -1,8 +1,8 @@ -using Backbone.Modules.Devices.Application.Identities.Commands.LogDeletionProcess; +using Backbone.Modules.Devices.Module.Features.Identities.LogDeletionProcess; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Devices.Application.Tests.Tests.Identities.Commands.LogDeletionProcess; +namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities.Commands.LogDeletionProcess; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Commands/SendDeletionProcessGracePeriodReminders/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/SendDeletionProcessGracePeriodReminders/HandlerTests.cs similarity index 96% rename from Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Commands/SendDeletionProcessGracePeriodReminders/HandlerTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/SendDeletionProcessGracePeriodReminders/HandlerTests.cs index 4bf614c29f..33632ebd44 100644 --- a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Commands/SendDeletionProcessGracePeriodReminders/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/SendDeletionProcessGracePeriodReminders/HandlerTests.cs @@ -1,13 +1,13 @@ using Backbone.BuildingBlocks.Application.PushNotifications; -using Backbone.Modules.Devices.Application.Identities.Commands.SendDeletionProcessGracePeriodReminders; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Devices.Application.Infrastructure.PushNotifications.DeletionProcess; +using Backbone.Modules.Devices.Module.Features.Identities.SendDeletionProcessGracePeriodReminders; +using Backbone.Modules.Devices.Abstractions; +using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.DeletionProcess; using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.Tooling; using FakeItEasy; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Devices.Application.Tests.Tests.Identities.Commands.SendDeletionProcessGracePeriodReminders; +namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities.Commands.SendDeletionProcessGracePeriodReminders; public class HandlerTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Commands/StartDeletionProcess/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/StartDeletionProcess/HandlerTests.cs similarity index 90% rename from Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Commands/StartDeletionProcess/HandlerTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/StartDeletionProcess/HandlerTests.cs index c6b75f01c4..e743d28303 100644 --- a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Commands/StartDeletionProcess/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/StartDeletionProcess/HandlerTests.cs @@ -2,13 +2,13 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Application.Identities.Commands.StartDeletionProcess; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Devices.Application.Infrastructure.PushNotifications.DeletionProcess; +using Backbone.Modules.Devices.Module.Features.Identities.StartDeletionProcess; +using Backbone.Modules.Devices.Abstractions; +using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.DeletionProcess; using Backbone.Modules.Devices.Domain.Entities.Identities; using FakeItEasy; -namespace Backbone.Modules.Devices.Application.Tests.Tests.Identities.Commands.StartDeletionProcess; +namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities.Commands.StartDeletionProcess; public class HandlerTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Commands/UpdateDeletionProcesses/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/UpdateDeletionProcesses/HandlerTests.cs similarity index 89% rename from Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Commands/UpdateDeletionProcesses/HandlerTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/UpdateDeletionProcesses/HandlerTests.cs index dd3a0b94fb..6ae13735b3 100644 --- a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Commands/UpdateDeletionProcesses/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/UpdateDeletionProcesses/HandlerTests.cs @@ -1,12 +1,12 @@ -using System.Linq.Expressions; -using Backbone.Modules.Devices.Application.Identities.Commands.TriggerRipeDeletionProcesses; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using System.Linq.Expressions; +using Backbone.Modules.Devices.Module.Features.Identities.TriggerRipeDeletionProcesses; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.Tooling; using Backbone.UnitTestTools.Shouldly.Extensions; using FakeItEasy; -namespace Backbone.Modules.Devices.Application.Tests.Tests.Identities.Commands.UpdateDeletionProcesses; +namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities.Commands.UpdateDeletionProcesses; public class HandlerTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Commands/UpdateIdentity/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/UpdateIdentity/HandlerTests.cs similarity index 95% rename from Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Commands/UpdateIdentity/HandlerTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/UpdateIdentity/HandlerTests.cs index 7e91d5c218..ee602f5a5b 100644 --- a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Commands/UpdateIdentity/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/UpdateIdentity/HandlerTests.cs @@ -1,13 +1,13 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Domain.Exceptions; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Application.Identities.Commands.UpdateIdentity; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Module.Features.Identities.UpdateIdentity; +using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Aggregates.Tier; using Backbone.Modules.Devices.Domain.Entities.Identities; using FakeItEasy; -namespace Backbone.Modules.Devices.Application.Tests.Tests.Identities.Commands.UpdateIdentity; +namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities.Commands.UpdateIdentity; public class HandlerTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Commands/UpdateIdentity/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/UpdateIdentity/ValidatorTests.cs similarity index 88% rename from Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Commands/UpdateIdentity/ValidatorTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/UpdateIdentity/ValidatorTests.cs index 6852565640..0bcdf66170 100644 --- a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Commands/UpdateIdentity/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/UpdateIdentity/ValidatorTests.cs @@ -1,9 +1,9 @@ -using Backbone.Modules.Devices.Application.Identities.Commands.UpdateIdentity; +using Backbone.Modules.Devices.Module.Features.Identities.UpdateIdentity; using Backbone.Modules.Devices.Domain.Aggregates.Tier; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Devices.Application.Tests.Tests.Identities.Commands.UpdateIdentity; +namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities.Commands.UpdateIdentity; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/IdentityDeleterTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/IdentityDeleterTests.cs similarity index 81% rename from Modules/Devices/test/Devices.Application.Tests/Tests/Identities/IdentityDeleterTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Tests/Identities/IdentityDeleterTests.cs index 4745219817..c869c7f9fb 100644 --- a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/IdentityDeleterTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/IdentityDeleterTests.cs @@ -1,11 +1,10 @@ -using Backbone.BuildingBlocks.Application.Identities; -using Backbone.Modules.Devices.Application.Identities; -using Backbone.Modules.Devices.Application.Identities.Commands.DeleteIdentity; -using Backbone.Modules.Devices.Application.PushNotifications.Commands.DeletePnsRegistrationsOfIdentity; +using Backbone.BuildingBlocks.Application.Identities; +using Backbone.Modules.Devices.Module.Features.Identities.DeleteIdentity; +using Backbone.Modules.Devices.Module.Features.PushNotifications.DeletePnsRegistrationsOfIdentity; using FakeItEasy; using MediatR; -namespace Backbone.Modules.Devices.Application.Tests.Tests.Identities; +namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities; public class IdentityDeleterTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Queries/GetDeletionProcessAsOwner/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessAsOwner/ValidatorTests.cs similarity index 82% rename from Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Queries/GetDeletionProcessAsOwner/ValidatorTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessAsOwner/ValidatorTests.cs index ca128c73e0..c8bf437103 100644 --- a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Queries/GetDeletionProcessAsOwner/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessAsOwner/ValidatorTests.cs @@ -1,9 +1,9 @@ -using Backbone.Modules.Devices.Application.Identities.Queries.GetDeletionProcessAsOwner; +using Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsOwner; using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Devices.Application.Tests.Tests.Identities.Queries.GetDeletionProcessAsOwner; +namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities.Queries.GetDeletionProcessAsOwner; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Queries/GetDeletionProcessAsSupport/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessAsSupport/ValidatorTests.cs similarity index 88% rename from Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Queries/GetDeletionProcessAsSupport/ValidatorTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessAsSupport/ValidatorTests.cs index d1720ed99d..4706076612 100644 --- a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Queries/GetDeletionProcessAsSupport/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessAsSupport/ValidatorTests.cs @@ -1,9 +1,9 @@ -using Backbone.Modules.Devices.Application.Identities.Queries.GetDeletionProcessAsSupport; +using Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsSupport; using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Devices.Application.Tests.Tests.Identities.Queries.GetDeletionProcessAsSupport; +namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities.Queries.GetDeletionProcessAsSupport; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Queries/GetDeletionProcessesAsSupport/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessesAsSupport/ValidatorTests.cs similarity index 81% rename from Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Queries/GetDeletionProcessesAsSupport/ValidatorTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessesAsSupport/ValidatorTests.cs index 63504de6ca..8526b21c90 100644 --- a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Queries/GetDeletionProcessesAsSupport/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessesAsSupport/ValidatorTests.cs @@ -1,8 +1,8 @@ -using Backbone.Modules.Devices.Application.Identities.Queries.ListDeletionProcessesAsSupport; +using Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsSupport; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Devices.Application.Tests.Tests.Identities.Queries.GetDeletionProcessesAsSupport; +namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities.Queries.GetDeletionProcessesAsSupport; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Queries/GetDeletionProcessesAuditLogs/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessesAuditLogs/HandlerTests.cs similarity index 96% rename from Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Queries/GetDeletionProcessesAuditLogs/HandlerTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessesAuditLogs/HandlerTests.cs index d9bb4795a2..a36d09c226 100644 --- a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Queries/GetDeletionProcessesAuditLogs/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessesAuditLogs/HandlerTests.cs @@ -1,4 +1,4 @@ -using Backbone.Modules.Devices.Application.Identities.Queries.ListDeletionProcessesAuditLogs; +using Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.Modules.Devices.Infrastructure.Persistence.Database; using Backbone.Modules.Devices.Infrastructure.Persistence.Repository; @@ -10,7 +10,7 @@ using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; -namespace Backbone.Modules.Devices.Application.Tests.Tests.Identities.Queries.GetDeletionProcessesAuditLogs; +namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities.Queries.GetDeletionProcessesAuditLogs; public class HandlerTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Queries/GetDeletionProcessesAuditLogs/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessesAuditLogs/ValidatorTests.cs similarity index 81% rename from Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Queries/GetDeletionProcessesAuditLogs/ValidatorTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessesAuditLogs/ValidatorTests.cs index 9a863aa073..fc7cf90931 100644 --- a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Queries/GetDeletionProcessesAuditLogs/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessesAuditLogs/ValidatorTests.cs @@ -1,8 +1,8 @@ -using Backbone.Modules.Devices.Application.Identities.Queries.ListDeletionProcessesAuditLogs; +using Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Devices.Application.Tests.Tests.Identities.Queries.GetDeletionProcessesAuditLogs; +namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities.Queries.GetDeletionProcessesAuditLogs; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Queries/GetIdentity/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetIdentity/ValidatorTests.cs similarity index 83% rename from Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Queries/GetIdentity/ValidatorTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetIdentity/ValidatorTests.cs index bbcb3801c7..d4fa1ce176 100644 --- a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Queries/GetIdentity/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetIdentity/ValidatorTests.cs @@ -1,8 +1,8 @@ -using Backbone.Modules.Devices.Application.Identities.Queries.GetIdentity; +using Backbone.Modules.Devices.Module.Features.Identities.GetIdentity; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Devices.Application.Tests.Tests.Identities.Queries.GetIdentity; +namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities.Queries.GetIdentity; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Queries/ListIdentities/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/ListIdentities/ValidatorTests.cs similarity index 85% rename from Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Queries/ListIdentities/ValidatorTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/ListIdentities/ValidatorTests.cs index a74b762aa1..e8beab873c 100644 --- a/Modules/Devices/test/Devices.Application.Tests/Tests/Identities/Queries/ListIdentities/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/ListIdentities/ValidatorTests.cs @@ -1,9 +1,9 @@ -using Backbone.Modules.Devices.Application.Identities.Queries.ListIdentities; +using Backbone.Modules.Devices.Module.Features.Identities.ListIdentities; using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Devices.Application.Tests.Tests.Identities.Queries.ListIdentities; +namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities.Queries.ListIdentities; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Application.Tests/Tests/PushNotifications/DatawalletModified/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/PushNotifications/DatawalletModified/HandlerTests.cs similarity index 75% rename from Modules/Devices/test/Devices.Application.Tests/Tests/PushNotifications/DatawalletModified/HandlerTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Tests/PushNotifications/DatawalletModified/HandlerTests.cs index f4ecc5d80d..db396c9447 100644 --- a/Modules/Devices/test/Devices.Application.Tests/Tests/PushNotifications/DatawalletModified/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/PushNotifications/DatawalletModified/HandlerTests.cs @@ -1,10 +1,10 @@ -using Backbone.BuildingBlocks.Application.PushNotifications; -using Backbone.Modules.Devices.Application.DomainEvents.Incoming.DatawalletModificationCreated; -using Backbone.Modules.Devices.Application.Infrastructure.PushNotifications.Datawallet; +using Backbone.BuildingBlocks.Application.PushNotifications; +using Backbone.Modules.Devices.Module.Features.DomainEvents.DatawalletModificationCreated; +using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.Datawallet; using Backbone.Modules.Synchronization.Contracts.DomainEvents; using FakeItEasy; -namespace Backbone.Modules.Devices.Application.Tests.Tests.PushNotifications.DatawalletModified; +namespace Backbone.Modules.Devices.Module.Tests.Tests.PushNotifications.DatawalletModified; public class HandlerTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Application.Tests/Tests/PushNotifications/DeletePnsRegistrationsOfIdentity/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/PushNotifications/DeletePnsRegistrationsOfIdentity/ValidatorTests.cs similarity index 81% rename from Modules/Devices/test/Devices.Application.Tests/Tests/PushNotifications/DeletePnsRegistrationsOfIdentity/ValidatorTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Tests/PushNotifications/DeletePnsRegistrationsOfIdentity/ValidatorTests.cs index 17941adda7..201b5431bb 100644 --- a/Modules/Devices/test/Devices.Application.Tests/Tests/PushNotifications/DeletePnsRegistrationsOfIdentity/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/PushNotifications/DeletePnsRegistrationsOfIdentity/ValidatorTests.cs @@ -1,8 +1,8 @@ -using Backbone.Modules.Devices.Application.PushNotifications.Commands.DeletePnsRegistrationsOfIdentity; +using Backbone.Modules.Devices.Module.Features.PushNotifications.DeletePnsRegistrationsOfIdentity; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Devices.Application.Tests.Tests.PushNotifications.DeletePnsRegistrationsOfIdentity; +namespace Backbone.Modules.Devices.Module.Tests.Tests.PushNotifications.DeletePnsRegistrationsOfIdentity; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Application.Tests/Tests/PushNotifications/UpdateDeviceRegistration/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/PushNotifications/UpdateDeviceRegistration/HandlerTests.cs similarity index 85% rename from Modules/Devices/test/Devices.Application.Tests/Tests/PushNotifications/UpdateDeviceRegistration/HandlerTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Tests/PushNotifications/UpdateDeviceRegistration/HandlerTests.cs index e14221bfa2..7d480a1f2d 100644 --- a/Modules/Devices/test/Devices.Application.Tests/Tests/PushNotifications/UpdateDeviceRegistration/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/PushNotifications/UpdateDeviceRegistration/HandlerTests.cs @@ -1,12 +1,13 @@ +using Backbone.Modules.Devices.Abstractions.PushNotifications; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Application.Infrastructure.PushNotifications; -using Backbone.Modules.Devices.Application.PushNotifications.Commands.UpdateDeviceRegistration; +using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared; +using Backbone.Modules.Devices.Module.Features.PushNotifications.UpdateDeviceRegistration; using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications; using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications.Handles; using FakeItEasy; -namespace Backbone.Modules.Devices.Application.Tests.Tests.PushNotifications.UpdateDeviceRegistration; +namespace Backbone.Modules.Devices.Module.Tests.Tests.PushNotifications.UpdateDeviceRegistration; public class HandlerTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Application.Tests/Tests/Tiers/Commands/CreateTier/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Tiers/Commands/CreateTier/ValidatorTests.cs similarity index 77% rename from Modules/Devices/test/Devices.Application.Tests/Tests/Tiers/Commands/CreateTier/ValidatorTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Tests/Tiers/Commands/CreateTier/ValidatorTests.cs index 885ff32614..18ad1d83df 100644 --- a/Modules/Devices/test/Devices.Application.Tests/Tests/Tiers/Commands/CreateTier/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Tiers/Commands/CreateTier/ValidatorTests.cs @@ -1,10 +1,10 @@ -using Backbone.Modules.Devices.Application.Tiers.Commands.CreateTier; +using Backbone.Modules.Devices.Module.Features.Tiers.CreateTier; using Backbone.Modules.Devices.Domain.Aggregates.Tier; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -using Validator = Backbone.Modules.Devices.Application.Tiers.Commands.CreateTier.Validator; +using Validator = Backbone.Modules.Devices.Module.Features.Tiers.CreateTier.Validator; -namespace Backbone.Modules.Devices.Application.Tests.Tests.Tiers.Commands.CreateTier; +namespace Backbone.Modules.Devices.Module.Tests.Tests.Tiers.Commands.CreateTier; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Application.Tests/Tests/Tiers/Commands/DeleteTier/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Tiers/Commands/DeleteTier/HandlerTests.cs similarity index 91% rename from Modules/Devices/test/Devices.Application.Tests/Tests/Tiers/Commands/DeleteTier/HandlerTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Tests/Tiers/Commands/DeleteTier/HandlerTests.cs index c3f548d576..05508c756d 100644 --- a/Modules/Devices/test/Devices.Application.Tests/Tests/Tiers/Commands/DeleteTier/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Tiers/Commands/DeleteTier/HandlerTests.cs @@ -1,12 +1,12 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Domain.Exceptions; -using Backbone.Modules.Devices.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Devices.Application.Tiers.Commands.DeleteTier; +using Backbone.Modules.Devices.Abstractions; +using Backbone.Modules.Devices.Module.Features.Tiers.DeleteTier; using Backbone.Modules.Devices.Contracts.DomainEvents; using Backbone.Modules.Devices.Domain.Aggregates.Tier; using FakeItEasy; -namespace Backbone.Modules.Devices.Application.Tests.Tests.Tiers.Commands.DeleteTier; +namespace Backbone.Modules.Devices.Module.Tests.Tests.Tiers.Commands.DeleteTier; public class HandlerTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Application.Tests/Tests/Tiers/Commands/DeleteTier/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Tiers/Commands/DeleteTier/ValidatorTests.cs similarity index 84% rename from Modules/Devices/test/Devices.Application.Tests/Tests/Tiers/Commands/DeleteTier/ValidatorTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Tests/Tiers/Commands/DeleteTier/ValidatorTests.cs index bce764fad7..6997c5632b 100644 --- a/Modules/Devices/test/Devices.Application.Tests/Tests/Tiers/Commands/DeleteTier/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Tiers/Commands/DeleteTier/ValidatorTests.cs @@ -1,9 +1,9 @@ -using Backbone.Modules.Devices.Application.Tiers.Commands.DeleteTier; +using Backbone.Modules.Devices.Module.Features.Tiers.DeleteTier; using Backbone.Modules.Devices.Domain.Aggregates.Tier; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Devices.Application.Tests.Tests.Tiers.Commands.DeleteTier; +namespace Backbone.Modules.Devices.Module.Tests.Tests.Tiers.Commands.DeleteTier; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Application.Tests/packages.lock.json b/Modules/Devices/test/Devices.Module.Tests/packages.lock.json similarity index 79% rename from Modules/Devices/test/Devices.Application.Tests/packages.lock.json rename to Modules/Devices/test/Devices.Module.Tests/packages.lock.json index d925ad35ed..b24c945d32 100644 --- a/Modules/Devices/test/Devices.Application.Tests/packages.lock.json +++ b/Modules/Devices/test/Devices.Module.Tests/packages.lock.json @@ -38,6 +38,22 @@ "xunit.v3.core.mtp-v2": "[3.2.2]" } }, + "Asp.Versioning.Abstractions": { + "type": "Transitive", + "resolved": "10.1.0", + "contentHash": "RwdgC5O0baZ4pt30pAKKPQHq2CV4unBKA4HWoTeu7NY9ZwXM0dWYGf1Ipc5GK0eFBe9cMeqz4pGpPncMz4/ZNQ==", + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.0" + } + }, + "Asp.Versioning.Http": { + "type": "Transitive", + "resolved": "10.0.1", + "contentHash": "g0ayV/9ho3tGgooC6eF5p1063I1WzlxFJDYQrigcGnW+mLvui6eXrcW5hzTHhQREroUR3ZwXQrIN2SAIoi+KDw==", + "dependencies": { + "Asp.Versioning.Abstractions": "10.1.0" + } + }, "AWSSDK.Core": { "type": "Transitive", "resolved": "4.0.100.9", @@ -66,16 +82,6 @@ "System.Memory.Data": "1.0.2" } }, - "Azure.Identity": { - "type": "Transitive", - "resolved": "1.17.1", - "contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Microsoft.Identity.Client": "4.78.0", - "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" - } - }, "Azure.Storage.Common": { "type": "Transitive", "resolved": "12.28.0", @@ -296,22 +302,34 @@ }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, + "Microsoft.Data.SqlClient.Extensions.Abstractions": { + "type": "Transitive", + "resolved": "7.0.2", + "contentHash": "Zx7z61fG2Nc6LdDn4jA7b5Aj1ABrljkOPRE31RvVUdjF6IgbG60leDUhMCafsnWFgaheiK3iqpLe+kbf5Z5L8Q==", + "dependencies": { + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)" + } + }, + "Microsoft.Data.SqlClient.Internal.Logging": { + "type": "Transitive", + "resolved": "7.0.2", + "contentHash": "iqgYBbGSVy/DIYWjzmQOa964Kn4rs4wW5vg2IamqVK0fQqfTiILVR5hMK27XWqoyONtAZs+VxH354cPJBtSnbg==" + }, "Microsoft.Data.SqlClient.SNI.runtime": { "type": "Transitive", "resolved": "6.0.2", @@ -368,6 +386,11 @@ "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10" } }, + "Microsoft.Extensions.ApiDescription.Server": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "NCWCGiwRwje8773yzPQhvucYnnfeR+ZoB1VRIrIMp4uaeUNw7jvEPHij3HIbwCDuNCrNcphA00KSAR9yD9qmbg==" + }, "Microsoft.Extensions.Caching.Abstractions": { "type": "Transitive", "resolved": "10.0.10", @@ -726,11 +749,11 @@ }, "Microsoft.IdentityModel.Protocols.OpenIdConnect": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "yT2Hdj8LpPbcT9C9KlLVxXl09C8zjFaVSaApdOwuecMuoV4s6Sof/mnTDz/+F/lILPIBvrWugR9CC7iRVZgbfQ==", + "resolved": "8.16.0", + "contentHash": "h4yVXyJsEBBX5lg2G5ftMsi5JzcNEGAzrNphA6DQ6eOd8P0s+cDCOyPwVTYLePZvJL5unbPvYIvzrbTXzFjXnQ==", "dependencies": { - "Microsoft.IdentityModel.Protocols": "7.7.1", - "System.IdentityModel.Tokens.Jwt": "7.7.1" + "Microsoft.IdentityModel.Protocols": "8.16.0", + "System.IdentityModel.Tokens.Jwt": "8.16.0" } }, "Microsoft.IdentityModel.Tokens": { @@ -743,6 +766,11 @@ "Microsoft.IdentityModel.Logging": "8.19.2" } }, + "Microsoft.OpenApi": { + "type": "Transitive", + "resolved": "2.7.5", + "contentHash": "0FA67RSnRM4tcBKqiqVu/HPdZ9+QOKbmeRjxRUGTCjPU4C0bmUhd97Dso7Yild5P7nOV6GxJ2xrK0Kv/O9xp0w==" + }, "Microsoft.SqlServer.Server": { "type": "Transitive", "resolved": "1.0.0", @@ -995,6 +1023,26 @@ "OpenIddict.Validation": "7.6.0" } }, + "OpenTelemetry": { + "type": "Transitive", + "resolved": "1.18.0", + "contentHash": "13AKxycK+olOLe061MjliPTNBR/DUkjyRr0b9zwUhKyMjFS8lXS7G31R85rkbM55up2YFmdykWdAw2giBDJpiQ==", + "dependencies": { + "Microsoft.Extensions.Configuration.EnvironmentVariables": "10.0.0", + "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Configuration": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "1.18.0" + } + }, + "OpenTelemetry.Api.ProviderBuilderExtensions": { + "type": "Transitive", + "resolved": "1.18.0", + "contentHash": "io6A6PJFp3vIObRGf6oPjdHsdglkinXt/0SpTDJHrVnsLxUtOzwh/QwTsnhBJ43wJ6QcGMkyNzsSSY8XEB1Q5Q==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "OpenTelemetry.Api": "1.18.0" + } + }, "Polly.Core": { "type": "Transitive", "resolved": "8.7.0", @@ -1027,6 +1075,40 @@ "System.Threading.RateLimiting": "8.0.0" } }, + "runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "A8v6PGmk+UGbfWo5Ixup0lPM4swuSwOiayJExZwKIOjTlFFQIsu3QnDXECosBEyrWSPryxBVrdqtJyhK3BaupQ==", + "dependencies": { + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": "4.4.0" + } + }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, + "Serilog.Extensions.Logging": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "vx0kABKl2dWbBhhqAfTOk53/i8aV/5VaT3a6il9gn72Wqs2pM7EK2OB6No6xdqK2IaY6Zf9gdjLuK9BVa2rT+Q==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.0", + "Serilog": "4.2.0" + } + }, "SQLitePCLRaw.bundle_e_sqlite3": { "type": "Transitive", "resolved": "2.1.11", @@ -1049,6 +1131,27 @@ "SQLitePCLRaw.core": "2.1.11" } }, + "Swashbuckle.AspNetCore.Swagger": { + "type": "Transitive", + "resolved": "10.2.3", + "contentHash": "1jUUs3WQnrS0FUtaZPLSy1yYMEwS1zlvDmvQ2/eldPHUANX0LJSLVZecCMgSMdeGiRqeaRrIXLtSz++TCiTMww==", + "dependencies": { + "Microsoft.OpenApi": "2.7.5" + } + }, + "Swashbuckle.AspNetCore.SwaggerGen": { + "type": "Transitive", + "resolved": "10.2.3", + "contentHash": "y7t4coDRAeFYChmvlMRiH2OjbiRrm9AVIDgt17fQfs3x9PVAI5PiwWYOhg+4F13R4Q36WDc9lqfoOnNa3tNbGg==", + "dependencies": { + "Swashbuckle.AspNetCore.Swagger": "10.2.3" + } + }, + "Swashbuckle.AspNetCore.SwaggerUI": { + "type": "Transitive", + "resolved": "10.2.3", + "contentHash": "nthWONRs/FJ4yyG206g1cC52WEG8EqrjuMWjGdR+5XG7lbjFto6NqcI9EMICgVFom/UivIjUVwI76ZHbHwTPfQ==" + }, "System.ClientModel": { "type": "Transitive", "resolved": "1.14.0", @@ -1067,11 +1170,11 @@ }, "System.Configuration.ConfigurationManager": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "vPinosRgEk1CGjohbv0pDuz6gPprkWo5xvBTjOJjks5JOgOEWvPndq5NngGxiTcBcy1+k9GwzZ1c3Bp2fU5ezw==", + "resolved": "9.0.13", + "contentHash": "GbBrJq9S/gYpHzm7Pxx6Y5tDyfSfyxW6tlP5oiKJV38uf19Wp+GIIAnWfyL1zmNiz1+EjwVapw2WkBFvvqKQzg==", "dependencies": { - "System.Diagnostics.EventLog": "9.0.11", - "System.Security.Cryptography.ProtectedData": "9.0.11" + "System.Diagnostics.EventLog": "9.0.13", + "System.Security.Cryptography.ProtectedData": "9.0.13" } }, "System.Diagnostics.EventLog": { @@ -1081,11 +1184,11 @@ }, "System.IdentityModel.Tokens.Jwt": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "rQkO1YbAjLwnDJSMpRhRtrc6XwIcEOcUvoEcge+evurpzSZM3UNK+MZfD3sKyTlYsvknZ6eJjSBfnmXqwOsT9Q==", + "resolved": "8.16.0", + "contentHash": "rrs2u7DRMXQG2yh0oVyF/vLwosfRv20Ld2iEpYcKwQWXHjfV+gFXNQsQ9p008kR9Ou4pxBs68Q6/9zC8Gi1wjg==", "dependencies": { - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Tokens": "7.7.1" + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Tokens": "8.16.0" } }, "System.IO.Hashing": { @@ -1113,8 +1216,8 @@ }, "System.Security.Cryptography.ProtectedData": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "s8yUYuYYu+PAwvBdhLG1KyrGrk9gkYeuPxfAsXsTqqWyepwSyEw8hAaflW4nO98NG52YpYI1am2+9o+79h2RtQ==" + "resolved": "9.0.13", + "contentHash": "t8S9IDpjJKsLpLkeBdW8cWtcPyYqrGu93Dej1RO6WwuL/lkFSqWlan3rMJfortqz1mRIh+sys2AFsSA6jWJ3Jg==" }, "System.Security.Cryptography.Xml": { "type": "Transitive", @@ -1186,6 +1289,33 @@ "xunit.v3.runner.common": "[3.2.2]" } }, + "Backbone.BuildingBlocks.API": { + "type": "Project", + "dependencies": { + "Asp.Versioning.Mvc": "[10.0.1, 10.0.1]", + "Asp.Versioning.Mvc.ApiExplorer": "[10.0.1, 10.0.1]", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Module": "[1.0.0, )", + "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", + "Backbone.Tooling": "[1.0.0, )", + "DotNetDiag.HealthChecks.NpgSql": "[10.0.10, 10.0.10]", + "DotNetDiag.HealthChecks.SqlServer": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.Relational": "[10.0.10, 10.0.10]", + "OpenTelemetry.Exporter.OpenTelemetryProtocol": "[1.18.0, )", + "OpenTelemetry.Extensions.Hosting": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.AspNetCore": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.EntityFrameworkCore": "[1.18.0-beta.1, )", + "OpenTelemetry.Instrumentation.Http": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.Runtime": "[1.18.0, 1.18.0]", + "Polly": "[8.7.0, 8.7.0]", + "Serilog.Enrichers.Sensitive": "[2.1.0, 2.1.0]", + "Serilog.Extensions.Hosting": "[10.0.0, 10.0.0]", + "Swashbuckle.AspNetCore": "[10.2.3, 10.2.3]", + "System.Data.SqlClient": "[4.9.1, 4.9.1]" + } + }, "Backbone.BuildingBlocks.Application": { "type": "Project", "dependencies": { @@ -1243,6 +1373,15 @@ "Serilog": "[4.4.0, 4.4.0]" } }, + "Backbone.BuildingBlocks.Module": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Microsoft.Extensions.Configuration.Abstractions": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[10.0.10, 10.0.10]", + "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" + } + }, "Backbone.Common.Infrastructure": { "type": "Project", "dependencies": { @@ -1273,23 +1412,11 @@ "Backbone.BuildingBlocks.Domain": "[1.0.0, )" } }, - "Backbone.Modules.Devices.Application": { + "Backbone.Modules.Devices.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Crypto": "[1.0.0, )", - "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Domain": "[1.0.0, )", - "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "OpenIddict.Core": "[7.6.0, 7.6.0]", - "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Devices.Domain": "[1.0.0, )" } }, "Backbone.Modules.Devices.Contracts": { @@ -1313,8 +1440,9 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", "FirebaseAdmin": "[3.6.0, 3.6.0]", "JWT": "[11.1.0, 11.1.0]", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1331,6 +1459,41 @@ "Polly": "[8.7.0, 8.7.0]" } }, + "Backbone.Modules.Devices.Infrastructure.Database.Postgres": { + "type": "Project", + "dependencies": { + "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )" + } + }, + "Backbone.Modules.Devices.Infrastructure.Database.SqlServer": { + "type": "Project", + "dependencies": { + "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )" + } + }, + "Backbone.Modules.Devices.Module": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.API": "[1.0.0, )", + "Backbone.Crypto": "[1.0.0, )", + "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", + "Backbone.Modules.Devices.Infrastructure.Database.Postgres": "[1.0.0, )", + "Backbone.Modules.Devices.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", + "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", + "FluentValidation": "[12.1.1, 12.1.1]", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "OpenIddict.AspNetCore": "[7.6.0, 7.6.0]", + "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", + "Polly": "[8.7.0, 8.7.0]", + "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" + } + }, "Backbone.Modules.Synchronization.Contracts": { "type": "Project", "dependencies": { @@ -1364,6 +1527,24 @@ "Shouldly": "[4.3.0, 4.3.0]" } }, + "Asp.Versioning.Mvc": { + "type": "CentralTransitive", + "requested": "[10.0.1, 10.0.1]", + "resolved": "10.0.1", + "contentHash": "OqoFPKKxXkNmw62H3CgXkPrf1L4PPwwyYr9QMP6itt/khKTIayqaHhK6F2e3jt6KHc4s23cWAUbu+Z5GPEeMaw==", + "dependencies": { + "Asp.Versioning.Http": "10.0.1" + } + }, + "Asp.Versioning.Mvc.ApiExplorer": { + "type": "CentralTransitive", + "requested": "[10.0.1, 10.0.1]", + "resolved": "10.0.1", + "contentHash": "ylPZe+LheFp0pt2tSMq2pPeGAkMLqWVOn5+1/xOB/eUj889n9b35Sny08bSQ0ziAGIFjp3BBTXaYsWJjRoFV4A==", + "dependencies": { + "Asp.Versioning.Mvc": "10.0.1" + } + }, "Autofac": { "type": "CentralTransitive", "requested": "[9.3.2, 9.3.2]", @@ -1418,6 +1599,26 @@ "resolved": "2.1.79", "contentHash": "8YijbzgTfmqmQOnVNorYM6K++pxqnW3nJ4aC1sRHzxUA2CcuoJ9gsTem3kgBnPRMc38zZHl4Esb6hAezXIEEuw==" }, + "DotNetDiag.HealthChecks.NpgSql": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "lxb6wQ1YC/TpvZMVgbyeLP5dYOg/RJWLg1xlR+I0FeyfyMmukppKdwzBOrKRtZ8FHG3nV9xrVTaPdwRw0yL4Vw==", + "dependencies": { + "Microsoft.Extensions.Diagnostics.HealthChecks": "10.0.9", + "Npgsql": "10.0.3" + } + }, + "DotNetDiag.HealthChecks.SqlServer": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "6t2HP5VQR0GZDJiw8iZvzOTRC+84irUeaUuWvcqcnc4K5Mzrn/A9V0ucoyjySXOF1vGkdTHjlJMknJVYC9c2Hg==", + "dependencies": { + "Microsoft.Data.SqlClient": "7.0.2", + "Microsoft.Extensions.Diagnostics.HealthChecks": "10.0.9" + } + }, "EFCore.BulkExtensions.Core": { "type": "CentralTransitive", "requested": "[10.0.1, 10.0.1]", @@ -1852,6 +2053,65 @@ "resolved": "1.18.0", "contentHash": "Dhzm5oughIY9EWckt2J1yXcEbXpki5WCL2q7prJoYxzH6C7jdkfGtPMTkUVZZ4AhjJKzQnlC+kLSIlmIVwC4Vw==" }, + "OpenTelemetry.Exporter.OpenTelemetryProtocol": { + "type": "CentralTransitive", + "requested": "[1.18.0, )", + "resolved": "1.18.0", + "contentHash": "Et3WAviooKGObZjUZN8d6eTsdJs1YM3ZoN+KlWSAHksTmHG1nyGi9XGo2wb0fkFMWK0g80FOPdR1njg52Dm+aw==", + "dependencies": { + "OpenTelemetry": "1.18.0" + } + }, + "OpenTelemetry.Extensions.Hosting": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "u+JMA82H65MKwMvd2qUpL8C2qE4Jux2nvX9hmy036UK/Apv2YyIRYCttF/vlX6nMPcAKI8BXkscmL4QG3C69fw==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", + "OpenTelemetry": "1.18.0" + } + }, + "OpenTelemetry.Instrumentation.AspNetCore": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "hBiMXE/CGIAHUOpi0gScNkjHB0L9XbCin5lZObL+dMBl4OmpndnHgxP3JZDnnGtU6qOzdeh8TYUV9f6Jgmmhlw==", + "dependencies": { + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[1.18.0-beta.1, )", + "resolved": "1.18.0-beta.1", + "contentHash": "n15cNXxkSl9G6KD41wZYmujjERYOBiIgn2VeesTFhLtHZ+QQQE3baLrCk7UyzidEw/uGObRcW3SKhqpyMpGe1w==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Http": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "/X57peOOa4a+9V4DSVXbuIWdsAxmU5gsxw8lu+gJU0zuewsYhC9f6qdm8GEW0VvqG9e+gxn0HdVR5G3YHcWDTw==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Runtime": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "McuXGjBJDL/Cown2PxfUQysK98MZG7ZDjO/IKUtaAx8t1m0PB0d+QtJC79RFTVipMhRIwjJiULNOp0OGfZbvwg==", + "dependencies": { + "OpenTelemetry.Api": "[1.18.0, 2.0.0)" + } + }, "Polly": { "type": "CentralTransitive", "requested": "[8.7.0, 8.7.0]", @@ -1886,6 +2146,25 @@ "resolved": "4.4.0", "contentHash": "ZC6Le3rr4TVJJjS4KsQAesxeF1EhW9qcZmmG7eP5Y2G3+gTGkJEUXkq4+tZNPtyp05I0wWOxnIjwtxFweJsObw==" }, + "Serilog.Enrichers.Sensitive": { + "type": "CentralTransitive", + "requested": "[2.1.0, 2.1.0]", + "resolved": "2.1.0", + "contentHash": "nlaEYMoHjJqncjQgc0Nv4LOIkAwUt4Nvmx3EMNjY4MKC7QqZs9zB0v/NwFnaWzLF7qztc7mna1bjn20Auohu0g==" + }, + "Serilog.Extensions.Hosting": { + "type": "CentralTransitive", + "requested": "[10.0.0, 10.0.0]", + "resolved": "10.0.0", + "contentHash": "E7juuIc+gzoGxgzFooFgAV8g9BfiSXNKsUok9NmEpyAXg2odkcPsMa/Yo4axkJRlh0se7mkYQ1GXDaBemR+b6w==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Serilog": "4.3.0", + "Serilog.Extensions.Logging": "10.0.0" + } + }, "Shouldly": { "type": "CentralTransitive", "requested": "[4.3.0, 4.3.0]", @@ -1907,6 +2186,27 @@ "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "Swashbuckle.AspNetCore": { + "type": "CentralTransitive", + "requested": "[10.2.3, 10.2.3]", + "resolved": "10.2.3", + "contentHash": "8KNh1RWvofdU6DVLyBs4Z/OpUMnmf8oNvJQc0QxpwySRbi42bwLfdVMMrXZWANg5U5KQGQq1xW6r/hlcqw99tQ==", + "dependencies": { + "Microsoft.Extensions.ApiDescription.Server": "10.0.0", + "Swashbuckle.AspNetCore.Swagger": "10.2.3", + "Swashbuckle.AspNetCore.SwaggerGen": "10.2.3", + "Swashbuckle.AspNetCore.SwaggerUI": "10.2.3" + } + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/linux-arm64": { @@ -1917,20 +2217,19 @@ }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1951,6 +2250,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1974,6 +2288,15 @@ "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/linux-x64": { @@ -1984,20 +2307,19 @@ }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -2018,6 +2340,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -2041,6 +2378,15 @@ "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/osx-arm64": { @@ -2051,20 +2397,19 @@ }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -2085,6 +2430,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -2108,6 +2468,15 @@ "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/win-x64": { @@ -2118,20 +2487,19 @@ }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -2152,6 +2520,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -2175,6 +2558,15 @@ "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } } } diff --git a/Modules/Files/src/Files.Module/packages.lock.json b/Modules/Files/src/Files.Module/packages.lock.json index 5b373c2823..2b2b08d087 100644 --- a/Modules/Files/src/Files.Module/packages.lock.json +++ b/Modules/Files/src/Files.Module/packages.lock.json @@ -203,11 +203,6 @@ "Grpc.Core.Api": "2.71.0" } }, - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "MedallionTopologicalSort": { "type": "Transitive", "resolved": "1.0.0", @@ -1206,13 +1201,6 @@ "Polly": "[8.7.0, 8.7.0]" } }, - "Backbone.Crypto": { - "type": "Project", - "dependencies": { - "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", - "NSec.Cryptography": "[26.4.0, 26.4.0]" - } - }, "Backbone.DevelopmentKit.Identity": { "type": "Project", "dependencies": { @@ -1220,29 +1208,11 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Announcements.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Devices.Application": { + "Backbone.Modules.Devices.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Crypto": "[1.0.0, )", - "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Domain": "[1.0.0, )", - "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "OpenIddict.Core": "[7.6.0, 7.6.0]", - "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Devices.Domain": "[1.0.0, )" } }, "Backbone.Modules.Devices.Contracts": { @@ -1266,8 +1236,9 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", "FirebaseAdmin": "[3.6.0, 3.6.0]", "JWT": "[11.1.0, 11.1.0]", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1329,18 +1300,6 @@ "Backbone.Modules.Files.Infrastructure": "[1.0.0, )" } }, - "Backbone.Modules.Synchronization.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Tokens.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Tooling": { "type": "Project", "dependencies": { @@ -1787,15 +1746,6 @@ "Npgsql": "10.0.3" } }, - "NSec.Cryptography": { - "type": "CentralTransitive", - "requested": "[26.4.0, 26.4.0]", - "resolved": "26.4.0", - "contentHash": "0vsCtY5f+YgQROiWNqzgWp+l2pddfk9FkWoGV/bEo0MuEYPKlJWuoA8aOfO6qp3f+EnObKE3zSJhn1PspJeJVg==", - "dependencies": { - "libsodium": "[1.0.22, 1.0.23)" - } - }, "OpenIddict.AspNetCore": { "type": "CentralTransitive", "requested": "[7.6.0, 7.6.0]", @@ -1971,11 +1921,6 @@ } }, "net10.0/linux-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2050,11 +1995,6 @@ } }, "net10.0/linux-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2129,11 +2069,6 @@ } }, "net10.0/osx-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2208,11 +2143,6 @@ } }, "net10.0/win-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", diff --git a/Modules/Files/test/Files.Module.Tests/packages.lock.json b/Modules/Files/test/Files.Module.Tests/packages.lock.json index aba3fe8991..ea259b4f3e 100644 --- a/Modules/Files/test/Files.Module.Tests/packages.lock.json +++ b/Modules/Files/test/Files.Module.Tests/packages.lock.json @@ -233,11 +233,6 @@ "Grpc.Core.Api": "2.71.0" } }, - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "MedallionTopologicalSort": { "type": "Transitive", "resolved": "1.0.0", @@ -1392,13 +1387,6 @@ "Polly": "[8.7.0, 8.7.0]" } }, - "Backbone.Crypto": { - "type": "Project", - "dependencies": { - "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", - "NSec.Cryptography": "[26.4.0, 26.4.0]" - } - }, "Backbone.DevelopmentKit.Identity": { "type": "Project", "dependencies": { @@ -1406,29 +1394,11 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Announcements.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Devices.Application": { + "Backbone.Modules.Devices.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Crypto": "[1.0.0, )", - "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Domain": "[1.0.0, )", - "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "OpenIddict.Core": "[7.6.0, 7.6.0]", - "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Devices.Domain": "[1.0.0, )" } }, "Backbone.Modules.Devices.Contracts": { @@ -1452,8 +1422,9 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", "FirebaseAdmin": "[3.6.0, 3.6.0]", "JWT": "[11.1.0, 11.1.0]", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1530,18 +1501,6 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Synchronization.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Tokens.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Tooling": { "type": "Project", "dependencies": { @@ -2036,15 +1995,6 @@ "Npgsql": "10.0.3" } }, - "NSec.Cryptography": { - "type": "CentralTransitive", - "requested": "[26.4.0, 26.4.0]", - "resolved": "26.4.0", - "contentHash": "0vsCtY5f+YgQROiWNqzgWp+l2pddfk9FkWoGV/bEo0MuEYPKlJWuoA8aOfO6qp3f+EnObKE3zSJhn1PspJeJVg==", - "dependencies": { - "libsodium": "[1.0.22, 1.0.23)" - } - }, "OpenIddict.AspNetCore": { "type": "CentralTransitive", "requested": "[7.6.0, 7.6.0]", @@ -2246,11 +2196,6 @@ } }, "net10.0/linux-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2336,11 +2281,6 @@ } }, "net10.0/linux-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2426,11 +2366,6 @@ } }, "net10.0/osx-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2516,11 +2451,6 @@ } }, "net10.0/win-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", diff --git a/Modules/Messages/src/Messages.Module/packages.lock.json b/Modules/Messages/src/Messages.Module/packages.lock.json index 6ad06a17a3..eb6283e128 100644 --- a/Modules/Messages/src/Messages.Module/packages.lock.json +++ b/Modules/Messages/src/Messages.Module/packages.lock.json @@ -203,11 +203,6 @@ "Grpc.Core.Api": "2.71.0" } }, - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "MedallionTopologicalSort": { "type": "Transitive", "resolved": "1.0.0", @@ -1206,13 +1201,6 @@ "Polly": "[8.7.0, 8.7.0]" } }, - "Backbone.Crypto": { - "type": "Project", - "dependencies": { - "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", - "NSec.Cryptography": "[26.4.0, 26.4.0]" - } - }, "Backbone.DevelopmentKit.Identity": { "type": "Project", "dependencies": { @@ -1220,29 +1208,11 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Announcements.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Devices.Application": { + "Backbone.Modules.Devices.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Crypto": "[1.0.0, )", - "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Domain": "[1.0.0, )", - "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "OpenIddict.Core": "[7.6.0, 7.6.0]", - "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Devices.Domain": "[1.0.0, )" } }, "Backbone.Modules.Devices.Contracts": { @@ -1266,8 +1236,9 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", "FirebaseAdmin": "[3.6.0, 3.6.0]", "JWT": "[11.1.0, 11.1.0]", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1337,18 +1308,6 @@ "Backbone.BuildingBlocks.Domain": "[1.0.0, )" } }, - "Backbone.Modules.Synchronization.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Tokens.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Tooling": { "type": "Project", "dependencies": { @@ -1795,15 +1754,6 @@ "Npgsql": "10.0.3" } }, - "NSec.Cryptography": { - "type": "CentralTransitive", - "requested": "[26.4.0, 26.4.0]", - "resolved": "26.4.0", - "contentHash": "0vsCtY5f+YgQROiWNqzgWp+l2pddfk9FkWoGV/bEo0MuEYPKlJWuoA8aOfO6qp3f+EnObKE3zSJhn1PspJeJVg==", - "dependencies": { - "libsodium": "[1.0.22, 1.0.23)" - } - }, "OpenIddict.AspNetCore": { "type": "CentralTransitive", "requested": "[7.6.0, 7.6.0]", @@ -1979,11 +1929,6 @@ } }, "net10.0/linux-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2058,11 +2003,6 @@ } }, "net10.0/linux-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2137,11 +2077,6 @@ } }, "net10.0/osx-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2216,11 +2151,6 @@ } }, "net10.0/win-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", diff --git a/Modules/Messages/test/Messages.Module.Tests/packages.lock.json b/Modules/Messages/test/Messages.Module.Tests/packages.lock.json index 315a75a0d9..c133a0d42d 100644 --- a/Modules/Messages/test/Messages.Module.Tests/packages.lock.json +++ b/Modules/Messages/test/Messages.Module.Tests/packages.lock.json @@ -233,11 +233,6 @@ "Grpc.Core.Api": "2.71.0" } }, - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "MedallionTopologicalSort": { "type": "Transitive", "resolved": "1.0.0", @@ -1392,13 +1387,6 @@ "Polly": "[8.7.0, 8.7.0]" } }, - "Backbone.Crypto": { - "type": "Project", - "dependencies": { - "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", - "NSec.Cryptography": "[26.4.0, 26.4.0]" - } - }, "Backbone.DevelopmentKit.Identity": { "type": "Project", "dependencies": { @@ -1406,29 +1394,11 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Announcements.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Devices.Application": { + "Backbone.Modules.Devices.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Crypto": "[1.0.0, )", - "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Domain": "[1.0.0, )", - "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "OpenIddict.Core": "[7.6.0, 7.6.0]", - "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Devices.Domain": "[1.0.0, )" } }, "Backbone.Modules.Devices.Contracts": { @@ -1452,8 +1422,9 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", "FirebaseAdmin": "[3.6.0, 3.6.0]", "JWT": "[11.1.0, 11.1.0]", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1538,18 +1509,6 @@ "Backbone.BuildingBlocks.Domain": "[1.0.0, )" } }, - "Backbone.Modules.Synchronization.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Tokens.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Tooling": { "type": "Project", "dependencies": { @@ -2044,15 +2003,6 @@ "Npgsql": "10.0.3" } }, - "NSec.Cryptography": { - "type": "CentralTransitive", - "requested": "[26.4.0, 26.4.0]", - "resolved": "26.4.0", - "contentHash": "0vsCtY5f+YgQROiWNqzgWp+l2pddfk9FkWoGV/bEo0MuEYPKlJWuoA8aOfO6qp3f+EnObKE3zSJhn1PspJeJVg==", - "dependencies": { - "libsodium": "[1.0.22, 1.0.23)" - } - }, "OpenIddict.AspNetCore": { "type": "CentralTransitive", "requested": "[7.6.0, 7.6.0]", @@ -2254,11 +2204,6 @@ } }, "net10.0/linux-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2344,11 +2289,6 @@ } }, "net10.0/linux-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2434,11 +2374,6 @@ } }, "net10.0/osx-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2524,11 +2459,6 @@ } }, "net10.0/win-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", diff --git a/Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/IChallengesRepository.cs b/Modules/Quotas/src/Quotas.Abstractions/IChallengesRepository.cs similarity index 73% rename from Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/IChallengesRepository.cs rename to Modules/Quotas/src/Quotas.Abstractions/IChallengesRepository.cs index ea6326d932..62db5f308f 100644 --- a/Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/IChallengesRepository.cs +++ b/Modules/Quotas/src/Quotas.Abstractions/IChallengesRepository.cs @@ -1,7 +1,7 @@ using System.Linq.Expressions; using Backbone.Modules.Quotas.Domain.Aggregates.Challenges; -namespace Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +namespace Backbone.Modules.Quotas.Abstractions; public interface IChallengesRepository { diff --git a/Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/IDatawalletModificationsRepository.cs b/Modules/Quotas/src/Quotas.Abstractions/IDatawalletModificationsRepository.cs similarity index 65% rename from Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/IDatawalletModificationsRepository.cs rename to Modules/Quotas/src/Quotas.Abstractions/IDatawalletModificationsRepository.cs index a4a8d0ee7c..2abadffd81 100644 --- a/Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/IDatawalletModificationsRepository.cs +++ b/Modules/Quotas/src/Quotas.Abstractions/IDatawalletModificationsRepository.cs @@ -1,4 +1,4 @@ -namespace Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +namespace Backbone.Modules.Quotas.Abstractions; public interface IDatawalletModificationsRepository { diff --git a/Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/IDevicesRepository.cs b/Modules/Quotas/src/Quotas.Abstractions/IDevicesRepository.cs similarity index 63% rename from Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/IDevicesRepository.cs rename to Modules/Quotas/src/Quotas.Abstractions/IDevicesRepository.cs index ea2aec967d..ece05ec2d3 100644 --- a/Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/IDevicesRepository.cs +++ b/Modules/Quotas/src/Quotas.Abstractions/IDevicesRepository.cs @@ -1,4 +1,4 @@ -namespace Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +namespace Backbone.Modules.Quotas.Abstractions; public interface IDevicesRepository { diff --git a/Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/IFilesRepository.cs b/Modules/Quotas/src/Quotas.Abstractions/IFilesRepository.cs similarity index 76% rename from Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/IFilesRepository.cs rename to Modules/Quotas/src/Quotas.Abstractions/IFilesRepository.cs index 73358f1cfc..982f36ef4f 100644 --- a/Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/IFilesRepository.cs +++ b/Modules/Quotas/src/Quotas.Abstractions/IFilesRepository.cs @@ -1,4 +1,4 @@ -namespace Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +namespace Backbone.Modules.Quotas.Abstractions; public interface IFilesRepository { diff --git a/Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/IIdentitiesRepository.cs b/Modules/Quotas/src/Quotas.Abstractions/IIdentitiesRepository.cs similarity index 91% rename from Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/IIdentitiesRepository.cs rename to Modules/Quotas/src/Quotas.Abstractions/IIdentitiesRepository.cs index 01da79b0ed..a5c5c6dae9 100644 --- a/Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/IIdentitiesRepository.cs +++ b/Modules/Quotas/src/Quotas.Abstractions/IIdentitiesRepository.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; -namespace Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +namespace Backbone.Modules.Quotas.Abstractions; public interface IIdentitiesRepository { diff --git a/Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/IIdentityDeletionProcessesRepository.cs b/Modules/Quotas/src/Quotas.Abstractions/IIdentityDeletionProcessesRepository.cs similarity index 68% rename from Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/IIdentityDeletionProcessesRepository.cs rename to Modules/Quotas/src/Quotas.Abstractions/IIdentityDeletionProcessesRepository.cs index 540bdc7648..7ca1582edf 100644 --- a/Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/IIdentityDeletionProcessesRepository.cs +++ b/Modules/Quotas/src/Quotas.Abstractions/IIdentityDeletionProcessesRepository.cs @@ -1,4 +1,4 @@ -namespace Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +namespace Backbone.Modules.Quotas.Abstractions; public interface IIdentityDeletionProcessesRepository { diff --git a/Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/IMessagesRepository.cs b/Modules/Quotas/src/Quotas.Abstractions/IMessagesRepository.cs similarity index 72% rename from Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/IMessagesRepository.cs rename to Modules/Quotas/src/Quotas.Abstractions/IMessagesRepository.cs index 841e5478a6..abc883654c 100644 --- a/Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/IMessagesRepository.cs +++ b/Modules/Quotas/src/Quotas.Abstractions/IMessagesRepository.cs @@ -1,6 +1,6 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; -namespace Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +namespace Backbone.Modules.Quotas.Abstractions; public interface IMessagesRepository { diff --git a/Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/IMetricsRepository.cs b/Modules/Quotas/src/Quotas.Abstractions/IMetricsRepository.cs similarity index 82% rename from Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/IMetricsRepository.cs rename to Modules/Quotas/src/Quotas.Abstractions/IMetricsRepository.cs index 51f24a14cc..18fe2207ae 100644 --- a/Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/IMetricsRepository.cs +++ b/Modules/Quotas/src/Quotas.Abstractions/IMetricsRepository.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Quotas.Domain.Aggregates.Metrics; -namespace Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +namespace Backbone.Modules.Quotas.Abstractions; public interface IMetricsRepository { diff --git a/Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/IRelationshipTemplatesRepository.cs b/Modules/Quotas/src/Quotas.Abstractions/IRelationshipTemplatesRepository.cs similarity index 73% rename from Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/IRelationshipTemplatesRepository.cs rename to Modules/Quotas/src/Quotas.Abstractions/IRelationshipTemplatesRepository.cs index 0def82d056..53c0a7a78c 100644 --- a/Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/IRelationshipTemplatesRepository.cs +++ b/Modules/Quotas/src/Quotas.Abstractions/IRelationshipTemplatesRepository.cs @@ -1,6 +1,6 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; -namespace Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +namespace Backbone.Modules.Quotas.Abstractions; public interface IRelationshipTemplatesRepository { diff --git a/Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/IRelationshipsRepository.cs b/Modules/Quotas/src/Quotas.Abstractions/IRelationshipsRepository.cs similarity index 66% rename from Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/IRelationshipsRepository.cs rename to Modules/Quotas/src/Quotas.Abstractions/IRelationshipsRepository.cs index cefcd72148..efa6247c28 100644 --- a/Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/IRelationshipsRepository.cs +++ b/Modules/Quotas/src/Quotas.Abstractions/IRelationshipsRepository.cs @@ -1,4 +1,4 @@ -namespace Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +namespace Backbone.Modules.Quotas.Abstractions; public interface IRelationshipsRepository { diff --git a/Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/ITiersRepository.cs b/Modules/Quotas/src/Quotas.Abstractions/ITiersRepository.cs similarity index 84% rename from Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/ITiersRepository.cs rename to Modules/Quotas/src/Quotas.Abstractions/ITiersRepository.cs index 01d7dc2067..3cceac3885 100644 --- a/Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/ITiersRepository.cs +++ b/Modules/Quotas/src/Quotas.Abstractions/ITiersRepository.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; -namespace Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +namespace Backbone.Modules.Quotas.Abstractions; public interface ITiersRepository { diff --git a/Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/ITokensRepository.cs b/Modules/Quotas/src/Quotas.Abstractions/ITokensRepository.cs similarity index 72% rename from Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/ITokensRepository.cs rename to Modules/Quotas/src/Quotas.Abstractions/ITokensRepository.cs index 6b91c8b761..d543e18108 100644 --- a/Modules/Quotas/src/Quotas.Application/Infrastructure/Persistence/Repository/ITokensRepository.cs +++ b/Modules/Quotas/src/Quotas.Abstractions/ITokensRepository.cs @@ -1,6 +1,6 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; -namespace Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +namespace Backbone.Modules.Quotas.Abstractions; public interface ITokensRepository { diff --git a/Modules/Quotas/src/Quotas.Abstractions/Quotas.Abstractions.csproj b/Modules/Quotas/src/Quotas.Abstractions/Quotas.Abstractions.csproj new file mode 100644 index 0000000000..9439ebed8e --- /dev/null +++ b/Modules/Quotas/src/Quotas.Abstractions/Quotas.Abstractions.csproj @@ -0,0 +1,5 @@ + + + + + diff --git a/Modules/Quotas/src/Quotas.Abstractions/packages.lock.json b/Modules/Quotas/src/Quotas.Abstractions/packages.lock.json new file mode 100644 index 0000000000..e1144cd5be --- /dev/null +++ b/Modules/Quotas/src/Quotas.Abstractions/packages.lock.json @@ -0,0 +1,89 @@ +{ + "version": 2, + "dependencies": { + "net10.0": { + "Microsoft.Extensions.Primitives": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "5wu/GrYVd8mG2DVUw3vFJzF+O336TyTGg/Kmcgw9bfwYhCoFiV5lR5QeEmKecJyrW4W54nMfD3p3589E8a7czQ==" + }, + "Backbone.BuildingBlocks.Domain": { + "type": "Project", + "dependencies": { + "Backbone.Tooling": "[1.0.0, )" + } + }, + "Backbone.DevelopmentKit.Identity": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )", + "SimpleBase": "[5.6.3, 5.6.3]" + } + }, + "Backbone.Modules.Quotas.Contracts": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )" + } + }, + "Backbone.Modules.Quotas.Domain": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )", + "Backbone.DevelopmentKit.Identity": "[1.0.0, )", + "Backbone.Modules.Quotas.Contracts": "[1.0.0, )", + "Backbone.Tooling": "[1.0.0, )", + "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]" + } + }, + "Backbone.Tooling": { + "type": "Project", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Options": "[10.0.10, 10.0.10]" + } + }, + "CSharpFunctionalExtensions": { + "type": "CentralTransitive", + "requested": "[3.7.0, 3.7.0]", + "resolved": "3.7.0", + "contentHash": "eMZp8tc88O96eEFutiIskF3LE8lFY3fjbNRGfNa1ca0CD9sB8A00r5ltyYDih/7UFdJdVbhVq7tGeHI8xj6DlQ==" + }, + "Microsoft.Extensions.DependencyInjection.Abstractions": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "z/2xXlFw2aLGjHyEm6E0tQ+In6VfzQzTrtArbQ2c0TQE16ZbyDCMGPvaUT9I0s8rgy9sRWlU2P9waW37qV04qA==" + }, + "Microsoft.Extensions.Logging.Abstractions": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "zkFxGYUvdxAvIKTyXHrmW+Sux53D4SezD9dMyZ6hrwwzPQJNuwCRy1f5W7AvYTqacEGhWF2XderRQG1OvbV8og==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10" + } + }, + "Microsoft.Extensions.Options": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "srnhnk7nE8krBiIXp71LvBmKBtraBONWSRzdjJgRv1Ko9Mp8IVNqv4vIS9hGeVteBig8aQkva9ZG+sC+o5sVcA==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", + "Microsoft.Extensions.Primitives": "10.0.10" + } + }, + "SimpleBase": { + "type": "CentralTransitive", + "requested": "[5.6.3, 5.6.3]", + "resolved": "5.6.3", + "contentHash": "ayL730f1gdQVYmFFLKSX83QcoltyKSMBsV94qfCBpZHMaJz/e3ALuXKZDD8SkseWbNHxBe0HxLRBe5OOpQ9HpA==" + } + }, + "net10.0/linux-arm64": {}, + "net10.0/linux-x64": {}, + "net10.0/osx-arm64": {}, + "net10.0/win-x64": {} + } +} \ No newline at end of file diff --git a/Modules/Quotas/src/Quotas.Application/Quotas.Application.csproj b/Modules/Quotas/src/Quotas.Application/Quotas.Application.csproj deleted file mode 100644 index 8d19ecae6b..0000000000 --- a/Modules/Quotas/src/Quotas.Application/Quotas.Application.csproj +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/Modules/Quotas/src/Quotas.Application/Tiers/Commands/SeedQueuedForDeletionTier/SeedQueuedForDeletionTierCommand.cs b/Modules/Quotas/src/Quotas.Application/Tiers/Commands/SeedQueuedForDeletionTier/SeedQueuedForDeletionTierCommand.cs deleted file mode 100644 index 25eb75b12d..0000000000 --- a/Modules/Quotas/src/Quotas.Application/Tiers/Commands/SeedQueuedForDeletionTier/SeedQueuedForDeletionTierCommand.cs +++ /dev/null @@ -1,5 +0,0 @@ -using MediatR; - -namespace Backbone.Modules.Quotas.Application.Tiers.Commands.SeedQueuedForDeletionTier; - -public class SeedQueuedForDeletionTierCommand : IRequest; diff --git a/Modules/Quotas/src/Quotas.Domain/AssemblyInfo.cs b/Modules/Quotas/src/Quotas.Domain/AssemblyInfo.cs index 47d4e06333..81932790a5 100644 --- a/Modules/Quotas/src/Quotas.Domain/AssemblyInfo.cs +++ b/Modules/Quotas/src/Quotas.Domain/AssemblyInfo.cs @@ -1,5 +1,5 @@ using System.Runtime.CompilerServices; [assembly: InternalsVisibleTo("Backbone.Modules.Quotas.Domain.Tests")] -[assembly: InternalsVisibleTo("Backbone.Modules.Quotas.Application.Tests")] +[assembly: InternalsVisibleTo("Backbone.Modules.Quotas.Module.Tests")] [assembly: InternalsVisibleTo("Backbone.Modules.Quotas.Infrastructure")] diff --git a/Modules/Quotas/src/Quotas.Infrastructure.Database.Postgres/packages.lock.json b/Modules/Quotas/src/Quotas.Infrastructure.Database.Postgres/packages.lock.json index 97d38f6793..3e7fc0ae6b 100644 --- a/Modules/Quotas/src/Quotas.Infrastructure.Database.Postgres/packages.lock.json +++ b/Modules/Quotas/src/Quotas.Infrastructure.Database.Postgres/packages.lock.json @@ -730,36 +730,10 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Devices.Contracts": { + "Backbone.Modules.Quotas.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Files.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Messages.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Quotas.Application": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Files.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Quotas.Contracts": "[1.0.0, )", - "Backbone.Modules.Quotas.Domain": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )" + "Backbone.Modules.Quotas.Domain": "[1.0.0, )" } }, "Backbone.Modules.Quotas.Contracts": { @@ -781,9 +755,9 @@ "Backbone.Modules.Quotas.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Quotas.Application": "[1.0.0, )", + "Backbone.Modules.Quotas.Abstractions": "[1.0.0, )", "Backbone.Modules.Quotas.Domain": "[1.0.0, )", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -791,18 +765,6 @@ "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, 10.0.3]" } }, - "Backbone.Modules.Relationships.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Tokens.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Tooling": { "type": "Project", "dependencies": { diff --git a/Modules/Quotas/src/Quotas.Infrastructure.Database.SqlServer/packages.lock.json b/Modules/Quotas/src/Quotas.Infrastructure.Database.SqlServer/packages.lock.json index 97d38f6793..3e7fc0ae6b 100644 --- a/Modules/Quotas/src/Quotas.Infrastructure.Database.SqlServer/packages.lock.json +++ b/Modules/Quotas/src/Quotas.Infrastructure.Database.SqlServer/packages.lock.json @@ -730,36 +730,10 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Devices.Contracts": { + "Backbone.Modules.Quotas.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Files.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Messages.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Quotas.Application": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Files.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Quotas.Contracts": "[1.0.0, )", - "Backbone.Modules.Quotas.Domain": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )" + "Backbone.Modules.Quotas.Domain": "[1.0.0, )" } }, "Backbone.Modules.Quotas.Contracts": { @@ -781,9 +755,9 @@ "Backbone.Modules.Quotas.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Quotas.Application": "[1.0.0, )", + "Backbone.Modules.Quotas.Abstractions": "[1.0.0, )", "Backbone.Modules.Quotas.Domain": "[1.0.0, )", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -791,18 +765,6 @@ "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, 10.0.3]" } }, - "Backbone.Modules.Relationships.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Tokens.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Tooling": { "type": "Project", "dependencies": { diff --git a/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Database/IServiceCollectionExtensions.cs b/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Database/IServiceCollectionExtensions.cs index 51f7f76634..9ea0a93a35 100644 --- a/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Database/IServiceCollectionExtensions.cs +++ b/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Database/IServiceCollectionExtensions.cs @@ -1,7 +1,5 @@ using Backbone.BuildingBlocks.Infrastructure.Persistence.Database; -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Quotas.Application.Metrics; -using Backbone.Modules.Quotas.Domain.Metrics; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Infrastructure.Persistence.Repository; using Microsoft.Extensions.DependencyInjection; @@ -21,7 +19,6 @@ public static void AddDatabase(this IServiceCollection services, DatabaseConfigu services.AddTransient(); services.AddTransient(); services.AddTransient(); - services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); diff --git a/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/ChallengesRepository.cs b/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/ChallengesRepository.cs index 0262719300..c3aab125d7 100644 --- a/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/ChallengesRepository.cs +++ b/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/ChallengesRepository.cs @@ -1,5 +1,5 @@ using System.Linq.Expressions; -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Challenges; using Backbone.Modules.Quotas.Infrastructure.Persistence.Database; using Microsoft.EntityFrameworkCore; diff --git a/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/DatawalletModificationsRepository.cs b/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/DatawalletModificationsRepository.cs index 68974e7685..afb3cafd39 100644 --- a/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/DatawalletModificationsRepository.cs +++ b/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/DatawalletModificationsRepository.cs @@ -1,4 +1,4 @@ -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.DatawalletModifications; using Backbone.Modules.Quotas.Infrastructure.Persistence.Database; using Backbone.Modules.Quotas.Infrastructure.Persistence.Database.QueryableExtensions; diff --git a/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/DevicesRepository.cs b/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/DevicesRepository.cs index a880f7d576..b6ba7f7bd3 100644 --- a/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/DevicesRepository.cs +++ b/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/DevicesRepository.cs @@ -1,4 +1,4 @@ -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.Modules.Quotas.Infrastructure.Persistence.Database; using Backbone.Modules.Quotas.Infrastructure.Persistence.Database.QueryableExtensions; diff --git a/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/FilesRepository.cs b/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/FilesRepository.cs index c3843335da..520650467a 100644 --- a/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/FilesRepository.cs +++ b/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/FilesRepository.cs @@ -1,4 +1,4 @@ -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.FileMetadata; using Backbone.Modules.Quotas.Infrastructure.Persistence.Database; using Backbone.Modules.Quotas.Infrastructure.Persistence.Database.QueryableExtensions; diff --git a/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/IdentitiesRepository.cs b/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/IdentitiesRepository.cs index 1531a1c4d5..6632da7cc2 100644 --- a/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/IdentitiesRepository.cs +++ b/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/IdentitiesRepository.cs @@ -1,6 +1,6 @@ using System.Linq.Expressions; using Backbone.BuildingBlocks.Application.Extensions; -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; using Backbone.Modules.Quotas.Infrastructure.Persistence.Database; diff --git a/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/IdentityDeletionProcessesRepository.cs b/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/IdentityDeletionProcessesRepository.cs index 0d98ffb96c..8293dbff1c 100644 --- a/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/IdentityDeletionProcessesRepository.cs +++ b/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/IdentityDeletionProcessesRepository.cs @@ -1,4 +1,4 @@ -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.Modules.Quotas.Infrastructure.Persistence.Database; using Backbone.Modules.Quotas.Infrastructure.Persistence.Database.QueryableExtensions; diff --git a/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/MessagesRepository.cs b/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/MessagesRepository.cs index bcccc533c9..9837143165 100644 --- a/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/MessagesRepository.cs +++ b/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/MessagesRepository.cs @@ -1,5 +1,5 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Messages; using Backbone.Modules.Quotas.Infrastructure.Persistence.Database; using Backbone.Modules.Quotas.Infrastructure.Persistence.Database.QueryableExtensions; diff --git a/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/MetricsRepository.cs b/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/MetricsRepository.cs index bb63048133..37f124c539 100644 --- a/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/MetricsRepository.cs +++ b/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/MetricsRepository.cs @@ -1,5 +1,5 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Metrics; namespace Backbone.Modules.Quotas.Infrastructure.Persistence.Repository; diff --git a/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/RelationshipTemplatesRepository.cs b/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/RelationshipTemplatesRepository.cs index d7aee1336e..0a99fffdf6 100644 --- a/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/RelationshipTemplatesRepository.cs +++ b/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/RelationshipTemplatesRepository.cs @@ -1,5 +1,5 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Relationships; using Backbone.Modules.Quotas.Infrastructure.Persistence.Database; using Backbone.Modules.Quotas.Infrastructure.Persistence.Database.QueryableExtensions; diff --git a/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/RelationshipsRepository.cs b/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/RelationshipsRepository.cs index 4ee0a67a68..b597389e30 100644 --- a/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/RelationshipsRepository.cs +++ b/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/RelationshipsRepository.cs @@ -1,4 +1,4 @@ -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Relationships; using Backbone.Modules.Quotas.Infrastructure.Persistence.Database; using Backbone.Modules.Quotas.Infrastructure.Persistence.Database.QueryableExtensions; diff --git a/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/TiersRepository.cs b/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/TiersRepository.cs index 240115089c..25c39bea5b 100644 --- a/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/TiersRepository.cs +++ b/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/TiersRepository.cs @@ -1,5 +1,5 @@ using Backbone.BuildingBlocks.Application.Extensions; -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; using Backbone.Modules.Quotas.Infrastructure.Persistence.Database; using Backbone.Modules.Quotas.Infrastructure.Persistence.Database.QueryableExtensions; diff --git a/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/TokensRepository.cs b/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/TokensRepository.cs index 62365d4cdb..39abad1a5e 100644 --- a/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/TokensRepository.cs +++ b/Modules/Quotas/src/Quotas.Infrastructure/Persistence/Repository/TokensRepository.cs @@ -1,5 +1,5 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Tokens; using Backbone.Modules.Quotas.Infrastructure.Persistence.Database; using Backbone.Modules.Quotas.Infrastructure.Persistence.Database.QueryableExtensions; diff --git a/Modules/Quotas/src/Quotas.Infrastructure/Quotas.Infrastructure.csproj b/Modules/Quotas/src/Quotas.Infrastructure/Quotas.Infrastructure.csproj index 1b700590b5..3f23d3e55f 100644 --- a/Modules/Quotas/src/Quotas.Infrastructure/Quotas.Infrastructure.csproj +++ b/Modules/Quotas/src/Quotas.Infrastructure/Quotas.Infrastructure.csproj @@ -8,9 +8,9 @@ - + - + diff --git a/Modules/Quotas/src/Quotas.Infrastructure/packages.lock.json b/Modules/Quotas/src/Quotas.Infrastructure/packages.lock.json index 229db36c4d..e13f4662e1 100644 --- a/Modules/Quotas/src/Quotas.Infrastructure/packages.lock.json +++ b/Modules/Quotas/src/Quotas.Infrastructure/packages.lock.json @@ -776,36 +776,10 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Devices.Contracts": { + "Backbone.Modules.Quotas.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Files.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Messages.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Quotas.Application": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Files.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Quotas.Contracts": "[1.0.0, )", - "Backbone.Modules.Quotas.Domain": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )" + "Backbone.Modules.Quotas.Domain": "[1.0.0, )" } }, "Backbone.Modules.Quotas.Contracts": { @@ -824,18 +798,6 @@ "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]" } }, - "Backbone.Modules.Relationships.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Tokens.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Tooling": { "type": "Project", "dependencies": { diff --git a/Modules/Quotas/src/Quotas.Application/ApplicationConfiguration.cs b/Modules/Quotas/src/Quotas.Module/ApplicationConfiguration.cs similarity index 82% rename from Modules/Quotas/src/Quotas.Application/ApplicationConfiguration.cs rename to Modules/Quotas/src/Quotas.Module/ApplicationConfiguration.cs index f1f0afa0ce..1b563808e0 100644 --- a/Modules/Quotas/src/Quotas.Application/ApplicationConfiguration.cs +++ b/Modules/Quotas/src/Quotas.Module/ApplicationConfiguration.cs @@ -1,7 +1,7 @@ using System.ComponentModel.DataAnnotations; using Backbone.BuildingBlocks.Application; -namespace Backbone.Modules.Quotas.Application; +namespace Backbone.Modules.Quotas.Module; public class ApplicationConfiguration { diff --git a/Modules/Quotas/src/Quotas.Application/Extensions/IServiceCollectionExtensions.cs b/Modules/Quotas/src/Quotas.Module/ApplicationServiceCollectionExtensions.cs similarity index 82% rename from Modules/Quotas/src/Quotas.Application/Extensions/IServiceCollectionExtensions.cs rename to Modules/Quotas/src/Quotas.Module/ApplicationServiceCollectionExtensions.cs index 7ef7c2a4af..61f930dd15 100644 --- a/Modules/Quotas/src/Quotas.Application/Extensions/IServiceCollectionExtensions.cs +++ b/Modules/Quotas/src/Quotas.Module/ApplicationServiceCollectionExtensions.cs @@ -1,14 +1,15 @@ using System.Reflection; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Application.MediatR; -using Backbone.Modules.Quotas.Application.Metrics; -using Backbone.Modules.Quotas.Application.Tiers.Commands.CreateQuotaForTier; +using Backbone.Modules.Quotas.Module.Features.Metrics.Shared; +using Backbone.Modules.Quotas.Module.Features.Tiers.CreateQuotaForTier; using Backbone.Modules.Quotas.Domain; +using Backbone.Modules.Quotas.Domain.Metrics; using Microsoft.Extensions.DependencyInjection; -namespace Backbone.Modules.Quotas.Application.Extensions; +namespace Backbone.Modules.Quotas.Module; -public static class IServiceCollectionExtensions +internal static class ApplicationServiceCollectionExtensions { extension(IServiceCollection services) { @@ -22,6 +23,7 @@ public void AddApplication() ); services.AddScoped(); + services.AddTransient(); services.AddEventHandlers(); services.AddMetricCalculators(); } diff --git a/Modules/Quotas/src/Quotas.Application/DomainEvents/Incoming/FileUploaded/FileUploadedDomainEventHandler.cs b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/FileUploaded/Handler.cs similarity index 87% rename from Modules/Quotas/src/Quotas.Application/DomainEvents/Incoming/FileUploaded/FileUploadedDomainEventHandler.cs rename to Modules/Quotas/src/Quotas.Module/Features/DomainEvents/FileUploaded/Handler.cs index a3c3f45483..994c4a23ab 100644 --- a/Modules/Quotas/src/Quotas.Application/DomainEvents/Incoming/FileUploaded/FileUploadedDomainEventHandler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/FileUploaded/Handler.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.Modules.Files.Contracts.DomainEvents; -using Backbone.Modules.Quotas.Application.Metrics; +using Backbone.Modules.Quotas.Module.Features.Metrics.Shared; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.Modules.Quotas.Domain.Aggregates.Metrics; -namespace Backbone.Modules.Quotas.Application.DomainEvents.Incoming.FileUploaded; +namespace Backbone.Modules.Quotas.Module.Features.DomainEvents.FileUploaded; public class FileUploadedDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Quotas/src/Quotas.Application/DomainEvents/Incoming/IdentityCreated/IdentityCreatedDomainEventHandler.cs b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/IdentityCreated/Handler.cs similarity index 93% rename from Modules/Quotas/src/Quotas.Application/DomainEvents/Incoming/IdentityCreated/IdentityCreatedDomainEventHandler.cs rename to Modules/Quotas/src/Quotas.Module/Features/DomainEvents/IdentityCreated/Handler.cs index e8cc8a989b..0debaae327 100644 --- a/Modules/Quotas/src/Quotas.Application/DomainEvents/Incoming/IdentityCreated/IdentityCreatedDomainEventHandler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/IdentityCreated/Handler.cs @@ -1,13 +1,13 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.Modules.Devices.Contracts.DomainEvents; -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; using Backbone.Modules.Quotas.Domain.Metrics; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Quotas.Application.DomainEvents.Incoming.IdentityCreated; +namespace Backbone.Modules.Quotas.Module.Features.DomainEvents.IdentityCreated; public class IdentityCreatedDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Quotas/src/Quotas.Application/DomainEvents/Incoming/MessageCreated/MessageCreatedDomainEventHandler.cs b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/MessageCreated/Handler.cs similarity index 87% rename from Modules/Quotas/src/Quotas.Application/DomainEvents/Incoming/MessageCreated/MessageCreatedDomainEventHandler.cs rename to Modules/Quotas/src/Quotas.Module/Features/DomainEvents/MessageCreated/Handler.cs index 1332acd009..c69f9171c0 100644 --- a/Modules/Quotas/src/Quotas.Application/DomainEvents/Incoming/MessageCreated/MessageCreatedDomainEventHandler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/MessageCreated/Handler.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.Modules.Messages.Contracts.DomainEvents; -using Backbone.Modules.Quotas.Application.Metrics; +using Backbone.Modules.Quotas.Module.Features.Metrics.Shared; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.Modules.Quotas.Domain.Aggregates.Metrics; -namespace Backbone.Modules.Quotas.Application.DomainEvents.Incoming.MessageCreated; +namespace Backbone.Modules.Quotas.Module.Features.DomainEvents.MessageCreated; public class MessageCreatedDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Quotas/src/Quotas.Application/DomainEvents/Incoming/RelationshipStatusChanged/RelationshipStatusChangedDomainEventHandler.cs b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/RelationshipStatusChanged/Handler.cs similarity index 86% rename from Modules/Quotas/src/Quotas.Application/DomainEvents/Incoming/RelationshipStatusChanged/RelationshipStatusChangedDomainEventHandler.cs rename to Modules/Quotas/src/Quotas.Module/Features/DomainEvents/RelationshipStatusChanged/Handler.cs index 0c0261ca70..8115d72f12 100644 --- a/Modules/Quotas/src/Quotas.Application/DomainEvents/Incoming/RelationshipStatusChanged/RelationshipStatusChangedDomainEventHandler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/RelationshipStatusChanged/Handler.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; -using Backbone.Modules.Quotas.Application.Metrics; +using Backbone.Modules.Quotas.Module.Features.Metrics.Shared; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.Modules.Quotas.Domain.Aggregates.Metrics; using Backbone.Modules.Relationships.Contracts.DomainEvents; -namespace Backbone.Modules.Quotas.Application.DomainEvents.Incoming.RelationshipStatusChanged; +namespace Backbone.Modules.Quotas.Module.Features.DomainEvents.RelationshipStatusChanged; public class RelationshipStatusChangedDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Quotas/src/Quotas.Application/DomainEvents/Incoming/RelationshipTemplateCreated/RelationshipTemplateCreatedDomainEventHandler.cs b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/RelationshipTemplateCreated/Handler.cs similarity index 86% rename from Modules/Quotas/src/Quotas.Application/DomainEvents/Incoming/RelationshipTemplateCreated/RelationshipTemplateCreatedDomainEventHandler.cs rename to Modules/Quotas/src/Quotas.Module/Features/DomainEvents/RelationshipTemplateCreated/Handler.cs index aef28f1fb6..9d73606c36 100644 --- a/Modules/Quotas/src/Quotas.Application/DomainEvents/Incoming/RelationshipTemplateCreated/RelationshipTemplateCreatedDomainEventHandler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/RelationshipTemplateCreated/Handler.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; -using Backbone.Modules.Quotas.Application.Metrics; +using Backbone.Modules.Quotas.Module.Features.Metrics.Shared; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.Modules.Quotas.Domain.Aggregates.Metrics; using Backbone.Modules.Relationships.Contracts.DomainEvents; -namespace Backbone.Modules.Quotas.Application.DomainEvents.Incoming.RelationshipTemplateCreated; +namespace Backbone.Modules.Quotas.Module.Features.DomainEvents.RelationshipTemplateCreated; public class RelationshipTemplateCreatedDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Quotas/src/Quotas.Application/DomainEvents/Incoming/TierCreated/TierCreatedDomainEventHandler.cs b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierCreated/Handler.cs similarity index 89% rename from Modules/Quotas/src/Quotas.Application/DomainEvents/Incoming/TierCreated/TierCreatedDomainEventHandler.cs rename to Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierCreated/Handler.cs index 2f69ff8c21..e3a6d60bcd 100644 --- a/Modules/Quotas/src/Quotas.Application/DomainEvents/Incoming/TierCreated/TierCreatedDomainEventHandler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierCreated/Handler.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.Modules.Devices.Contracts.DomainEvents; -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Quotas.Application.DomainEvents.Incoming.TierCreated; +namespace Backbone.Modules.Quotas.Module.Features.DomainEvents.TierCreated; public class TierCreatedDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Quotas/src/Quotas.Application/DomainEvents/Incoming/TierDeleted/TierDeletedDomainEventHandler.cs b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierDeleted/Handler.cs similarity index 89% rename from Modules/Quotas/src/Quotas.Application/DomainEvents/Incoming/TierDeleted/TierDeletedDomainEventHandler.cs rename to Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierDeleted/Handler.cs index 2956891f67..a1a795983f 100644 --- a/Modules/Quotas/src/Quotas.Application/DomainEvents/Incoming/TierDeleted/TierDeletedDomainEventHandler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierDeleted/Handler.cs @@ -1,11 +1,11 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.Modules.Devices.Contracts.DomainEvents; -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Quotas.Application.DomainEvents.Incoming.TierDeleted; +namespace Backbone.Modules.Quotas.Module.Features.DomainEvents.TierDeleted; public class TierDeletedDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Quotas/src/Quotas.Application/DomainEvents/Incoming/TierOfIdentityChanged/TierOfIdentityChangedDomainEventHandler.cs b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierOfIdentityChanged/Handler.cs similarity index 90% rename from Modules/Quotas/src/Quotas.Application/DomainEvents/Incoming/TierOfIdentityChanged/TierOfIdentityChangedDomainEventHandler.cs rename to Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierOfIdentityChanged/Handler.cs index 51ee77485f..8a5ee40cf2 100644 --- a/Modules/Quotas/src/Quotas.Application/DomainEvents/Incoming/TierOfIdentityChanged/TierOfIdentityChangedDomainEventHandler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierOfIdentityChanged/Handler.cs @@ -1,12 +1,12 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.Modules.Devices.Contracts.DomainEvents; -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; using Backbone.Modules.Quotas.Domain.Metrics; -namespace Backbone.Modules.Quotas.Application.DomainEvents.Incoming.TierOfIdentityChanged; +namespace Backbone.Modules.Quotas.Module.Features.DomainEvents.TierOfIdentityChanged; public class TierOfIdentityChangedDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Quotas/src/Quotas.Application/DomainEvents/Incoming/TierQuotaDefinitionCreated/TierQuotaDefinitionCreatedDomainEventHandler.cs b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierQuotaDefinitionCreated/Handler.cs similarity index 93% rename from Modules/Quotas/src/Quotas.Application/DomainEvents/Incoming/TierQuotaDefinitionCreated/TierQuotaDefinitionCreatedDomainEventHandler.cs rename to Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierQuotaDefinitionCreated/Handler.cs index d058f608f3..305f23ad64 100644 --- a/Modules/Quotas/src/Quotas.Application/DomainEvents/Incoming/TierQuotaDefinitionCreated/TierQuotaDefinitionCreatedDomainEventHandler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierQuotaDefinitionCreated/Handler.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Contracts.DomainEvents; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Quotas.Application.DomainEvents.Incoming.TierQuotaDefinitionCreated; +namespace Backbone.Modules.Quotas.Module.Features.DomainEvents.TierQuotaDefinitionCreated; public class TierQuotaDefinitionCreatedDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Quotas/src/Quotas.Application/DomainEvents/Incoming/TierQuotaDefinitionDeleted/TierQuotaDefinitionDeletedDomainEventHandler.cs b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierQuotaDefinitionDeleted/Handler.cs similarity index 88% rename from Modules/Quotas/src/Quotas.Application/DomainEvents/Incoming/TierQuotaDefinitionDeleted/TierQuotaDefinitionDeletedDomainEventHandler.cs rename to Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierQuotaDefinitionDeleted/Handler.cs index a49a40d2c9..4a30e0d899 100644 --- a/Modules/Quotas/src/Quotas.Application/DomainEvents/Incoming/TierQuotaDefinitionDeleted/TierQuotaDefinitionDeletedDomainEventHandler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierQuotaDefinitionDeleted/Handler.cs @@ -1,13 +1,13 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Quotas.Application.Metrics; +using Backbone.Modules.Quotas.Abstractions; +using Backbone.Modules.Quotas.Module.Features.Metrics.Shared; using Backbone.Modules.Quotas.Contracts.DomainEvents; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.Modules.Quotas.Domain.Aggregates.Metrics; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Quotas.Application.DomainEvents.Incoming.TierQuotaDefinitionDeleted; +namespace Backbone.Modules.Quotas.Module.Features.DomainEvents.TierQuotaDefinitionDeleted; public class TierQuotaDefinitionDeletedDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Quotas/src/Quotas.Application/DomainEvents/Incoming/TokenCreated/TokenCreatedDomainEventHandler.cs b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TokenCreated/Handler.cs similarity index 87% rename from Modules/Quotas/src/Quotas.Application/DomainEvents/Incoming/TokenCreated/TokenCreatedDomainEventHandler.cs rename to Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TokenCreated/Handler.cs index 56c36c919d..8c2fc3a1f6 100644 --- a/Modules/Quotas/src/Quotas.Application/DomainEvents/Incoming/TokenCreated/TokenCreatedDomainEventHandler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TokenCreated/Handler.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; -using Backbone.Modules.Quotas.Application.Metrics; +using Backbone.Modules.Quotas.Module.Features.Metrics.Shared; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.Modules.Quotas.Domain.Aggregates.Metrics; using Backbone.Modules.Tokens.Contracts.DomainEvents; -namespace Backbone.Modules.Quotas.Application.DomainEvents.Incoming.TokenCreated; +namespace Backbone.Modules.Quotas.Module.Features.DomainEvents.TokenCreated; public class TokenCreatedDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Quotas/src/Quotas.Application/Identities/Commands/CreateQuotaForIdentity/CreateQuotaForIdentityCommand.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/CreateQuotaForIdentity/Command.cs similarity index 72% rename from Modules/Quotas/src/Quotas.Application/Identities/Commands/CreateQuotaForIdentity/CreateQuotaForIdentityCommand.cs rename to Modules/Quotas/src/Quotas.Module/Features/Identities/CreateQuotaForIdentity/Command.cs index b117254577..b2bf124aa5 100644 --- a/Modules/Quotas/src/Quotas.Application/Identities/Commands/CreateQuotaForIdentity/CreateQuotaForIdentityCommand.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/CreateQuotaForIdentity/Command.cs @@ -1,8 +1,8 @@ -using Backbone.Modules.Quotas.Application.DTOs; +using Backbone.Modules.Quotas.Module.Features.Shared; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using MediatR; -namespace Backbone.Modules.Quotas.Application.Identities.Commands.CreateQuotaForIdentity; +namespace Backbone.Modules.Quotas.Module.Features.Identities.CreateQuotaForIdentity; public class CreateQuotaForIdentityCommand : IRequest { diff --git a/Modules/Quotas/src/Quotas.Application/Identities/Commands/CreateQuotaForIdentity/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/CreateQuotaForIdentity/Handler.cs similarity index 90% rename from Modules/Quotas/src/Quotas.Application/Identities/Commands/CreateQuotaForIdentity/Handler.cs rename to Modules/Quotas/src/Quotas.Module/Features/Identities/CreateQuotaForIdentity/Handler.cs index 726d667404..08d662ea68 100644 --- a/Modules/Quotas/src/Quotas.Application/Identities/Commands/CreateQuotaForIdentity/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/CreateQuotaForIdentity/Handler.cs @@ -1,14 +1,14 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Domain.Exceptions; -using Backbone.Modules.Quotas.Application.DTOs; -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Quotas.Application.Metrics; +using Backbone.Modules.Quotas.Module.Features.Shared; +using Backbone.Modules.Quotas.Abstractions; +using Backbone.Modules.Quotas.Module.Features.Metrics.Shared; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using MediatR; using Microsoft.Extensions.Logging; using MetricKey = Backbone.Modules.Quotas.Domain.Aggregates.Metrics.MetricKey; -namespace Backbone.Modules.Quotas.Application.Identities.Commands.CreateQuotaForIdentity; +namespace Backbone.Modules.Quotas.Module.Features.Identities.CreateQuotaForIdentity; public class Handler : IRequestHandler { diff --git a/Modules/Quotas/src/Quotas.Application/Identities/Commands/CreateQuotaForIdentity/Validator.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/CreateQuotaForIdentity/Validator.cs similarity index 89% rename from Modules/Quotas/src/Quotas.Application/Identities/Commands/CreateQuotaForIdentity/Validator.cs rename to Modules/Quotas/src/Quotas.Module/Features/Identities/CreateQuotaForIdentity/Validator.cs index 22ee83ca82..11b56f8e13 100644 --- a/Modules/Quotas/src/Quotas.Application/Identities/Commands/CreateQuotaForIdentity/Validator.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/CreateQuotaForIdentity/Validator.cs @@ -4,7 +4,7 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; using FluentValidation; -namespace Backbone.Modules.Quotas.Application.Identities.Commands.CreateQuotaForIdentity; +namespace Backbone.Modules.Quotas.Module.Features.Identities.CreateQuotaForIdentity; public class Validator : AbstractValidator { diff --git a/Modules/Quotas/src/Quotas.Application/Identities/Commands/DeleteIdentity/DeleteIdentityCommand.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteIdentity/Command.cs similarity index 60% rename from Modules/Quotas/src/Quotas.Application/Identities/Commands/DeleteIdentity/DeleteIdentityCommand.cs rename to Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteIdentity/Command.cs index 46620267c4..ae94899f53 100644 --- a/Modules/Quotas/src/Quotas.Application/Identities/Commands/DeleteIdentity/DeleteIdentityCommand.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteIdentity/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Quotas.Application.Identities.Commands.DeleteIdentity; +namespace Backbone.Modules.Quotas.Module.Features.Identities.DeleteIdentity; public class DeleteIdentityCommand : IRequest { diff --git a/Modules/Quotas/src/Quotas.Application/Identities/Commands/DeleteIdentity/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteIdentity/Handler.cs similarity index 77% rename from Modules/Quotas/src/Quotas.Application/Identities/Commands/DeleteIdentity/Handler.cs rename to Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteIdentity/Handler.cs index 6ddb40e4e9..4daed984fa 100644 --- a/Modules/Quotas/src/Quotas.Application/Identities/Commands/DeleteIdentity/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteIdentity/Handler.cs @@ -1,8 +1,8 @@ -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using MediatR; -namespace Backbone.Modules.Quotas.Application.Identities.Commands.DeleteIdentity; +namespace Backbone.Modules.Quotas.Module.Features.Identities.DeleteIdentity; public class Handler : IRequestHandler { diff --git a/Modules/Quotas/src/Quotas.Application/Identities/IdentityDeleter.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs similarity index 83% rename from Modules/Quotas/src/Quotas.Application/Identities/IdentityDeleter.cs rename to Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs index 340147a45c..4fc98beda6 100644 --- a/Modules/Quotas/src/Quotas.Application/Identities/IdentityDeleter.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs @@ -1,9 +1,9 @@ using Backbone.BuildingBlocks.Application.Identities; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Quotas.Application.Identities.Commands.DeleteIdentity; +using Backbone.Modules.Quotas.Module.Features.Identities.DeleteIdentity; using MediatR; -namespace Backbone.Modules.Quotas.Application.Identities; +namespace Backbone.Modules.Quotas.Module.Features.Identities.DeleteIdentity; public class IdentityDeleter : IIdentityDeleter { diff --git a/Modules/Quotas/src/Quotas.Application/Identities/Commands/DeleteIdentity/Validator.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteIdentity/Validator.cs similarity index 80% rename from Modules/Quotas/src/Quotas.Application/Identities/Commands/DeleteIdentity/Validator.cs rename to Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteIdentity/Validator.cs index 76c33eb37e..5109b4cfa3 100644 --- a/Modules/Quotas/src/Quotas.Application/Identities/Commands/DeleteIdentity/Validator.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteIdentity/Validator.cs @@ -2,7 +2,7 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; using FluentValidation; -namespace Backbone.Modules.Quotas.Application.Identities.Commands.DeleteIdentity; +namespace Backbone.Modules.Quotas.Module.Features.Identities.DeleteIdentity; public class Validator : AbstractValidator { diff --git a/Modules/Quotas/src/Quotas.Application/Identities/Commands/DeleteQuotaForIdentity/DeleteQuotaForIdentityCommand.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteQuotaForIdentity/Command.cs similarity index 68% rename from Modules/Quotas/src/Quotas.Application/Identities/Commands/DeleteQuotaForIdentity/DeleteQuotaForIdentityCommand.cs rename to Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteQuotaForIdentity/Command.cs index d5cf2bfb62..5043e1f19f 100644 --- a/Modules/Quotas/src/Quotas.Application/Identities/Commands/DeleteQuotaForIdentity/DeleteQuotaForIdentityCommand.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteQuotaForIdentity/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Quotas.Application.Identities.Commands.DeleteQuotaForIdentity; +namespace Backbone.Modules.Quotas.Module.Features.Identities.DeleteQuotaForIdentity; public class DeleteQuotaForIdentityCommand : IRequest { diff --git a/Modules/Quotas/src/Quotas.Application/Identities/Commands/DeleteQuotaForIdentity/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteQuotaForIdentity/Handler.cs similarity index 91% rename from Modules/Quotas/src/Quotas.Application/Identities/Commands/DeleteQuotaForIdentity/Handler.cs rename to Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteQuotaForIdentity/Handler.cs index 450d1df78b..e177495150 100644 --- a/Modules/Quotas/src/Quotas.Application/Identities/Commands/DeleteQuotaForIdentity/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteQuotaForIdentity/Handler.cs @@ -1,11 +1,11 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Domain.Exceptions; -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using MediatR; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Quotas.Application.Identities.Commands.DeleteQuotaForIdentity; +namespace Backbone.Modules.Quotas.Module.Features.Identities.DeleteQuotaForIdentity; public class Handler : IRequestHandler { diff --git a/Modules/Quotas/src/Quotas.Application/Identities/Commands/DeleteQuotaForIdentity/Validator.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteQuotaForIdentity/Validator.cs similarity index 84% rename from Modules/Quotas/src/Quotas.Application/Identities/Commands/DeleteQuotaForIdentity/Validator.cs rename to Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteQuotaForIdentity/Validator.cs index 5f5b734d91..c3958a9e39 100644 --- a/Modules/Quotas/src/Quotas.Application/Identities/Commands/DeleteQuotaForIdentity/Validator.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteQuotaForIdentity/Validator.cs @@ -3,7 +3,7 @@ using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using FluentValidation; -namespace Backbone.Modules.Quotas.Application.Identities.Commands.DeleteQuotaForIdentity; +namespace Backbone.Modules.Quotas.Module.Features.Identities.DeleteQuotaForIdentity; public class Validator : AbstractValidator { diff --git a/Modules/Quotas/src/Quotas.Application/Identities/Queries/GetIdentity/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Handler.cs similarity index 90% rename from Modules/Quotas/src/Quotas.Application/Identities/Queries/GetIdentity/Handler.cs rename to Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Handler.cs index c7953caeef..b5f3a1d388 100644 --- a/Modules/Quotas/src/Quotas.Application/Identities/Queries/GetIdentity/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Handler.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.Modules.Quotas.Domain.Metrics; using MediatR; -namespace Backbone.Modules.Quotas.Application.Identities.Queries.GetIdentity; +namespace Backbone.Modules.Quotas.Module.Features.Identities.GetIdentity; public class Handler : IRequestHandler { diff --git a/Modules/Devices/src/Devices.Application/Identities/Queries/GetIdentity/GetIdentityQuery.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Query.cs similarity index 62% rename from Modules/Devices/src/Devices.Application/Identities/Queries/GetIdentity/GetIdentityQuery.cs rename to Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Query.cs index 95b1c4e789..3394b7771a 100644 --- a/Modules/Devices/src/Devices.Application/Identities/Queries/GetIdentity/GetIdentityQuery.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Query.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Devices.Application.Identities.Queries.GetIdentity; +namespace Backbone.Modules.Quotas.Module.Features.Identities.GetIdentity; public class GetIdentityQuery : IRequest { diff --git a/Modules/Quotas/src/Quotas.Application/Identities/Queries/GetIdentity/GetIdentityResponse.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Response.cs similarity index 93% rename from Modules/Quotas/src/Quotas.Application/Identities/Queries/GetIdentity/GetIdentityResponse.cs rename to Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Response.cs index 6749f93c3b..19094e62a7 100644 --- a/Modules/Quotas/src/Quotas.Application/Identities/Queries/GetIdentity/GetIdentityResponse.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Response.cs @@ -1,10 +1,10 @@ -using Backbone.Modules.Quotas.Application.DTOs; +using Backbone.Modules.Quotas.Module.Features.Shared; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.Modules.Quotas.Domain.Aggregates.Metrics; using Backbone.Modules.Quotas.Domain.Metrics; using Backbone.Tooling; -namespace Backbone.Modules.Quotas.Application.Identities.Queries.GetIdentity; +namespace Backbone.Modules.Quotas.Module.Features.Identities.GetIdentity; public class GetIdentityResponse { diff --git a/Modules/Quotas/src/Quotas.Application/Identities/Queries/GetIdentity/Validator.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Validator.cs similarity index 80% rename from Modules/Quotas/src/Quotas.Application/Identities/Queries/GetIdentity/Validator.cs rename to Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Validator.cs index 8d1cba4810..2a08515f53 100644 --- a/Modules/Quotas/src/Quotas.Application/Identities/Queries/GetIdentity/Validator.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Validator.cs @@ -2,7 +2,7 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; using FluentValidation; -namespace Backbone.Modules.Quotas.Application.Identities.Queries.GetIdentity; +namespace Backbone.Modules.Quotas.Module.Features.Identities.GetIdentity; public class Validator : AbstractValidator { diff --git a/Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Endpoint.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Endpoint.cs new file mode 100644 index 0000000000..39021afd61 --- /dev/null +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Endpoint.cs @@ -0,0 +1,25 @@ +using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Quotas.Module.Features.Identities.ListQuotasForIdentity; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapListQuotasForIdentityEndpoint(this RouteGroupBuilder group) + { + group.MapGet("", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest); + return group; + } + + private static async Task Handle(IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new ListQuotasForIdentityQuery(), cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Quotas/src/Quotas.Application/Identities/Queries/ListQuotasForIdentity/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Handler.cs similarity index 94% rename from Modules/Quotas/src/Quotas.Application/Identities/Queries/ListQuotasForIdentity/Handler.cs rename to Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Handler.cs index 6662c4c58e..188d7316c0 100644 --- a/Modules/Quotas/src/Quotas.Application/Identities/Queries/ListQuotasForIdentity/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Handler.cs @@ -1,6 +1,6 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.Modules.Quotas.Domain.Metrics; using Backbone.Tooling; @@ -8,7 +8,7 @@ // ReSharper disable InconsistentNaming -namespace Backbone.Modules.Quotas.Application.Identities.Queries.ListQuotasForIdentity; +namespace Backbone.Modules.Quotas.Module.Features.Identities.ListQuotasForIdentity; public class Handler : IRequestHandler { diff --git a/Modules/Quotas/src/Quotas.Application/Identities/Queries/ListQuotasForIdentity/ListQuotasForIdentityQuery.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Query.cs similarity index 53% rename from Modules/Quotas/src/Quotas.Application/Identities/Queries/ListQuotasForIdentity/ListQuotasForIdentityQuery.cs rename to Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Query.cs index 85efd5564e..623f14c7e7 100644 --- a/Modules/Quotas/src/Quotas.Application/Identities/Queries/ListQuotasForIdentity/ListQuotasForIdentityQuery.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Query.cs @@ -1,5 +1,5 @@ using MediatR; -namespace Backbone.Modules.Quotas.Application.Identities.Queries.ListQuotasForIdentity; +namespace Backbone.Modules.Quotas.Module.Features.Identities.ListQuotasForIdentity; public class ListQuotasForIdentityQuery : IRequest; diff --git a/Modules/Quotas/src/Quotas.Application/Identities/Queries/ListQuotasForIdentity/ListQuotasForIdentityResponse.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Response.cs similarity index 89% rename from Modules/Quotas/src/Quotas.Application/Identities/Queries/ListQuotasForIdentity/ListQuotasForIdentityResponse.cs rename to Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Response.cs index b400b43a47..d20fc8851e 100644 --- a/Modules/Quotas/src/Quotas.Application/Identities/Queries/ListQuotasForIdentity/ListQuotasForIdentityResponse.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Response.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.CQRS.BaseClasses; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; -namespace Backbone.Modules.Quotas.Application.Identities.Queries.ListQuotasForIdentity; +namespace Backbone.Modules.Quotas.Module.Features.Identities.ListQuotasForIdentity; public class ListQuotasForIdentityResponse : CollectionResponseBase { diff --git a/Modules/Quotas/src/Quotas.Application/Metrics/Queries/ListMetrics/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/Metrics/ListMetrics/Handler.cs similarity index 77% rename from Modules/Quotas/src/Quotas.Application/Metrics/Queries/ListMetrics/Handler.cs rename to Modules/Quotas/src/Quotas.Module/Features/Metrics/ListMetrics/Handler.cs index 4923b6d6d9..f7052f00a7 100644 --- a/Modules/Quotas/src/Quotas.Application/Metrics/Queries/ListMetrics/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Metrics/ListMetrics/Handler.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using MediatR; -namespace Backbone.Modules.Quotas.Application.Metrics.Queries.ListMetrics; +namespace Backbone.Modules.Quotas.Module.Features.Metrics.ListMetrics; public class Handler : IRequestHandler { diff --git a/Modules/Quotas/src/Quotas.Application/Metrics/Queries/ListMetrics/ListMetricsQuery.cs b/Modules/Quotas/src/Quotas.Module/Features/Metrics/ListMetrics/Query.cs similarity index 51% rename from Modules/Quotas/src/Quotas.Application/Metrics/Queries/ListMetrics/ListMetricsQuery.cs rename to Modules/Quotas/src/Quotas.Module/Features/Metrics/ListMetrics/Query.cs index c7cd2f5d8e..0031e51cb7 100644 --- a/Modules/Quotas/src/Quotas.Application/Metrics/Queries/ListMetrics/ListMetricsQuery.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Metrics/ListMetrics/Query.cs @@ -1,5 +1,5 @@ using MediatR; -namespace Backbone.Modules.Quotas.Application.Metrics.Queries.ListMetrics; +namespace Backbone.Modules.Quotas.Module.Features.Metrics.ListMetrics; public class ListMetricsQuery : IRequest; diff --git a/Modules/Quotas/src/Quotas.Application/Metrics/Queries/ListMetrics/ListMetricsResponse.cs b/Modules/Quotas/src/Quotas.Module/Features/Metrics/ListMetrics/Response.cs similarity index 70% rename from Modules/Quotas/src/Quotas.Application/Metrics/Queries/ListMetrics/ListMetricsResponse.cs rename to Modules/Quotas/src/Quotas.Module/Features/Metrics/ListMetrics/Response.cs index db769040f2..c1e79a63cb 100644 --- a/Modules/Quotas/src/Quotas.Application/Metrics/Queries/ListMetrics/ListMetricsResponse.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Metrics/ListMetrics/Response.cs @@ -1,8 +1,8 @@ using Backbone.BuildingBlocks.Application.CQRS.BaseClasses; -using Backbone.Modules.Quotas.Application.DTOs; +using Backbone.Modules.Quotas.Module.Features.Shared; using Backbone.Modules.Quotas.Domain.Aggregates.Metrics; -namespace Backbone.Modules.Quotas.Application.Metrics.Queries.ListMetrics; +namespace Backbone.Modules.Quotas.Module.Features.Metrics.ListMetrics; public class ListMetricsResponse : CollectionResponseBase { diff --git a/Modules/Quotas/src/Quotas.Application/Metrics/MetricStatusesService.cs b/Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/MetricStatusesService.cs similarity index 91% rename from Modules/Quotas/src/Quotas.Application/Metrics/MetricStatusesService.cs rename to Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/MetricStatusesService.cs index 661488dea2..1406c94f22 100644 --- a/Modules/Quotas/src/Quotas.Application/Metrics/MetricStatusesService.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/MetricStatusesService.cs @@ -1,10 +1,10 @@ using System.Diagnostics; -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.Modules.Quotas.Domain.Metrics; using MetricKey = Backbone.Modules.Quotas.Domain.Aggregates.Metrics.MetricKey; -namespace Backbone.Modules.Quotas.Application.Metrics; +namespace Backbone.Modules.Quotas.Module.Features.Metrics.Shared; public class MetricStatusesService : IMetricStatusesService { diff --git a/Modules/Quotas/src/Quotas.Application/Metrics/NumberOfCreatedChallengesMetricCalculator.cs b/Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/NumberOfCreatedChallengesMetricCalculator.cs similarity index 84% rename from Modules/Quotas/src/Quotas.Application/Metrics/NumberOfCreatedChallengesMetricCalculator.cs rename to Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/NumberOfCreatedChallengesMetricCalculator.cs index 181a557903..769d277c3d 100644 --- a/Modules/Quotas/src/Quotas.Application/Metrics/NumberOfCreatedChallengesMetricCalculator.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/NumberOfCreatedChallengesMetricCalculator.cs @@ -1,8 +1,8 @@ -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain; using Backbone.Modules.Quotas.Domain.Aggregates.Challenges; -namespace Backbone.Modules.Quotas.Application.Metrics; +namespace Backbone.Modules.Quotas.Module.Features.Metrics.Shared; public class NumberOfCreatedChallengesMetricCalculator : IMetricCalculator { diff --git a/Modules/Quotas/src/Quotas.Application/Metrics/NumberOfCreatedDatawalletModificationsMetricCalculator.cs b/Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/NumberOfCreatedDatawalletModificationsMetricCalculator.cs similarity index 85% rename from Modules/Quotas/src/Quotas.Application/Metrics/NumberOfCreatedDatawalletModificationsMetricCalculator.cs rename to Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/NumberOfCreatedDatawalletModificationsMetricCalculator.cs index 7818b80936..98429cd105 100644 --- a/Modules/Quotas/src/Quotas.Application/Metrics/NumberOfCreatedDatawalletModificationsMetricCalculator.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/NumberOfCreatedDatawalletModificationsMetricCalculator.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain; -namespace Backbone.Modules.Quotas.Application.Metrics; +namespace Backbone.Modules.Quotas.Module.Features.Metrics.Shared; public class NumberOfCreatedDatawalletModificationsMetricCalculator : IMetricCalculator { diff --git a/Modules/Quotas/src/Quotas.Application/Metrics/NumberOfCreatedDevicesMetricCalculator.cs b/Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/NumberOfCreatedDevicesMetricCalculator.cs similarity index 81% rename from Modules/Quotas/src/Quotas.Application/Metrics/NumberOfCreatedDevicesMetricCalculator.cs rename to Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/NumberOfCreatedDevicesMetricCalculator.cs index e33fdb71e7..2b88b27d10 100644 --- a/Modules/Quotas/src/Quotas.Application/Metrics/NumberOfCreatedDevicesMetricCalculator.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/NumberOfCreatedDevicesMetricCalculator.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain; -namespace Backbone.Modules.Quotas.Application.Metrics; +namespace Backbone.Modules.Quotas.Module.Features.Metrics.Shared; public class NumberOfCreatedDevicesMetricCalculator : IMetricCalculator { diff --git a/Modules/Quotas/src/Quotas.Application/Metrics/NumberOfFilesMetricCalculator.cs b/Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/NumberOfFilesMetricCalculator.cs similarity index 80% rename from Modules/Quotas/src/Quotas.Application/Metrics/NumberOfFilesMetricCalculator.cs rename to Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/NumberOfFilesMetricCalculator.cs index 6f2eb75a57..63f10c0c1e 100644 --- a/Modules/Quotas/src/Quotas.Application/Metrics/NumberOfFilesMetricCalculator.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/NumberOfFilesMetricCalculator.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain; -namespace Backbone.Modules.Quotas.Application.Metrics; +namespace Backbone.Modules.Quotas.Module.Features.Metrics.Shared; public class NumberOfFilesMetricCalculator : IMetricCalculator { diff --git a/Modules/Quotas/src/Quotas.Application/Metrics/NumberOfRelationshipTemplatesMetricCalculator.cs b/Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/NumberOfRelationshipTemplatesMetricCalculator.cs similarity index 84% rename from Modules/Quotas/src/Quotas.Application/Metrics/NumberOfRelationshipTemplatesMetricCalculator.cs rename to Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/NumberOfRelationshipTemplatesMetricCalculator.cs index 07ef5d6d48..ad5ba9b935 100644 --- a/Modules/Quotas/src/Quotas.Application/Metrics/NumberOfRelationshipTemplatesMetricCalculator.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/NumberOfRelationshipTemplatesMetricCalculator.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain; -namespace Backbone.Modules.Quotas.Application.Metrics; +namespace Backbone.Modules.Quotas.Module.Features.Metrics.Shared; public class NumberOfRelationshipTemplatesMetricCalculator : IMetricCalculator { diff --git a/Modules/Quotas/src/Quotas.Application/Metrics/NumberOfRelationshipsMetricCalculator.cs b/Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/NumberOfRelationshipsMetricCalculator.cs similarity index 82% rename from Modules/Quotas/src/Quotas.Application/Metrics/NumberOfRelationshipsMetricCalculator.cs rename to Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/NumberOfRelationshipsMetricCalculator.cs index 73ad1440d1..074669917c 100644 --- a/Modules/Quotas/src/Quotas.Application/Metrics/NumberOfRelationshipsMetricCalculator.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/NumberOfRelationshipsMetricCalculator.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain; -namespace Backbone.Modules.Quotas.Application.Metrics; +namespace Backbone.Modules.Quotas.Module.Features.Metrics.Shared; public class NumberOfRelationshipsMetricCalculator : IMetricCalculator { diff --git a/Modules/Quotas/src/Quotas.Application/Metrics/NumberOfSentMessagesMetricCalculator.cs b/Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/NumberOfSentMessagesMetricCalculator.cs similarity index 81% rename from Modules/Quotas/src/Quotas.Application/Metrics/NumberOfSentMessagesMetricCalculator.cs rename to Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/NumberOfSentMessagesMetricCalculator.cs index 5532171e55..affa0166f8 100644 --- a/Modules/Quotas/src/Quotas.Application/Metrics/NumberOfSentMessagesMetricCalculator.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/NumberOfSentMessagesMetricCalculator.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain; -namespace Backbone.Modules.Quotas.Application.Metrics; +namespace Backbone.Modules.Quotas.Module.Features.Metrics.Shared; public class NumberOfSentMessagesMetricCalculator : IMetricCalculator { diff --git a/Modules/Quotas/src/Quotas.Application/Metrics/NumberOfStartedDeletionProcessesMetricCalculator.cs b/Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/NumberOfStartedDeletionProcessesMetricCalculator.cs similarity index 85% rename from Modules/Quotas/src/Quotas.Application/Metrics/NumberOfStartedDeletionProcessesMetricCalculator.cs rename to Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/NumberOfStartedDeletionProcessesMetricCalculator.cs index a396e975bd..bc30788959 100644 --- a/Modules/Quotas/src/Quotas.Application/Metrics/NumberOfStartedDeletionProcessesMetricCalculator.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/NumberOfStartedDeletionProcessesMetricCalculator.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain; -namespace Backbone.Modules.Quotas.Application.Metrics; +namespace Backbone.Modules.Quotas.Module.Features.Metrics.Shared; public class NumberOfStartedDeletionProcessesMetricCalculator : IMetricCalculator { diff --git a/Modules/Quotas/src/Quotas.Application/Metrics/NumberOfTokensMetricCalculator.cs b/Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/NumberOfTokensMetricCalculator.cs similarity index 80% rename from Modules/Quotas/src/Quotas.Application/Metrics/NumberOfTokensMetricCalculator.cs rename to Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/NumberOfTokensMetricCalculator.cs index 2f402b0b6b..56a2d3862d 100644 --- a/Modules/Quotas/src/Quotas.Application/Metrics/NumberOfTokensMetricCalculator.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/NumberOfTokensMetricCalculator.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain; -namespace Backbone.Modules.Quotas.Application.Metrics; +namespace Backbone.Modules.Quotas.Module.Features.Metrics.Shared; public class NumberOfTokensMetricCalculator : IMetricCalculator { diff --git a/Modules/Quotas/src/Quotas.Application/Metrics/ServiceProviderMetricCalculatorFactory.cs b/Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/ServiceProviderMetricCalculatorFactory.cs similarity index 97% rename from Modules/Quotas/src/Quotas.Application/Metrics/ServiceProviderMetricCalculatorFactory.cs rename to Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/ServiceProviderMetricCalculatorFactory.cs index 1368ad28e3..4fb92c7e0e 100644 --- a/Modules/Quotas/src/Quotas.Application/Metrics/ServiceProviderMetricCalculatorFactory.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/ServiceProviderMetricCalculatorFactory.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Quotas.Domain.Metrics; using Microsoft.Extensions.DependencyInjection; -namespace Backbone.Modules.Quotas.Application.Metrics; +namespace Backbone.Modules.Quotas.Module.Features.Metrics.Shared; public class ServiceProviderMetricCalculatorFactory : MetricCalculatorFactory { diff --git a/Modules/Quotas/src/Quotas.Application/Metrics/UsedFileStorageSpaceMetricCalculator.cs b/Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/UsedFileStorageSpaceMetricCalculator.cs similarity index 81% rename from Modules/Quotas/src/Quotas.Application/Metrics/UsedFileStorageSpaceMetricCalculator.cs rename to Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/UsedFileStorageSpaceMetricCalculator.cs index 7ad04b83e1..e9d75a50b7 100644 --- a/Modules/Quotas/src/Quotas.Application/Metrics/UsedFileStorageSpaceMetricCalculator.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Metrics/Shared/UsedFileStorageSpaceMetricCalculator.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain; -namespace Backbone.Modules.Quotas.Application.Metrics; +namespace Backbone.Modules.Quotas.Module.Features.Metrics.Shared; public class UsedFileStorageSpaceMetricCalculator : IMetricCalculator { diff --git a/Modules/Quotas/src/Quotas.Application/DTOs/IndividualQuotaDTO.cs b/Modules/Quotas/src/Quotas.Module/Features/Shared/IndividualQuotaDTO.cs similarity index 88% rename from Modules/Quotas/src/Quotas.Application/DTOs/IndividualQuotaDTO.cs rename to Modules/Quotas/src/Quotas.Module/Features/Shared/IndividualQuotaDTO.cs index b7dcb22e56..62e3207995 100644 --- a/Modules/Quotas/src/Quotas.Application/DTOs/IndividualQuotaDTO.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Shared/IndividualQuotaDTO.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Quotas.Domain.Aggregates.Identities; -namespace Backbone.Modules.Quotas.Application.DTOs; +namespace Backbone.Modules.Quotas.Module.Features.Shared; public class IndividualQuotaDTO { diff --git a/Modules/Quotas/src/Quotas.Application/DTOs/MetricDTO.cs b/Modules/Quotas/src/Quotas.Module/Features/Shared/MetricDTO.cs similarity index 83% rename from Modules/Quotas/src/Quotas.Application/DTOs/MetricDTO.cs rename to Modules/Quotas/src/Quotas.Module/Features/Shared/MetricDTO.cs index 9439ddcc44..3978c24e00 100644 --- a/Modules/Quotas/src/Quotas.Application/DTOs/MetricDTO.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Shared/MetricDTO.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Quotas.Domain.Aggregates.Metrics; -namespace Backbone.Modules.Quotas.Application.DTOs; +namespace Backbone.Modules.Quotas.Module.Features.Shared; public class MetricDTO { diff --git a/Modules/Quotas/src/Quotas.Application/DTOs/QuotaDTO.cs b/Modules/Quotas/src/Quotas.Module/Features/Shared/QuotaDTO.cs similarity index 91% rename from Modules/Quotas/src/Quotas.Application/DTOs/QuotaDTO.cs rename to Modules/Quotas/src/Quotas.Module/Features/Shared/QuotaDTO.cs index 94fa5da446..20a6850953 100644 --- a/Modules/Quotas/src/Quotas.Application/DTOs/QuotaDTO.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Shared/QuotaDTO.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Quotas.Domain.Aggregates.Identities; -namespace Backbone.Modules.Quotas.Application.DTOs; +namespace Backbone.Modules.Quotas.Module.Features.Shared; public class QuotaDTO { diff --git a/Modules/Quotas/src/Quotas.Application/DTOs/TierDetailsDTO.cs b/Modules/Quotas/src/Quotas.Module/Features/Shared/TierDetailsDTO.cs similarity index 91% rename from Modules/Quotas/src/Quotas.Application/DTOs/TierDetailsDTO.cs rename to Modules/Quotas/src/Quotas.Module/Features/Shared/TierDetailsDTO.cs index 7240de565d..adea2d7faf 100644 --- a/Modules/Quotas/src/Quotas.Application/DTOs/TierDetailsDTO.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Shared/TierDetailsDTO.cs @@ -1,7 +1,7 @@ using Backbone.Modules.Quotas.Domain.Aggregates.Metrics; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; -namespace Backbone.Modules.Quotas.Application.DTOs; +namespace Backbone.Modules.Quotas.Module.Features.Shared; public class TierDetailsDTO { diff --git a/Modules/Quotas/src/Quotas.Application/DTOs/TierQuotaDefinitionDTO.cs b/Modules/Quotas/src/Quotas.Module/Features/Shared/TierQuotaDefinitionDTO.cs similarity index 88% rename from Modules/Quotas/src/Quotas.Application/DTOs/TierQuotaDefinitionDTO.cs rename to Modules/Quotas/src/Quotas.Module/Features/Shared/TierQuotaDefinitionDTO.cs index 9016d560bc..e4a4d9099b 100644 --- a/Modules/Quotas/src/Quotas.Application/DTOs/TierQuotaDefinitionDTO.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Shared/TierQuotaDefinitionDTO.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Quotas.Domain.Aggregates.Identities; -namespace Backbone.Modules.Quotas.Application.DTOs; +namespace Backbone.Modules.Quotas.Module.Features.Shared; public class TierQuotaDefinitionDTO { diff --git a/Modules/Quotas/src/Quotas.Application/Tiers/Commands/CreateQuotaForTier/CreateQuotaForTierCommand.cs b/Modules/Quotas/src/Quotas.Module/Features/Tiers/CreateQuotaForTier/Command.cs similarity index 73% rename from Modules/Quotas/src/Quotas.Application/Tiers/Commands/CreateQuotaForTier/CreateQuotaForTierCommand.cs rename to Modules/Quotas/src/Quotas.Module/Features/Tiers/CreateQuotaForTier/Command.cs index ac030bf096..66114b587f 100644 --- a/Modules/Quotas/src/Quotas.Application/Tiers/Commands/CreateQuotaForTier/CreateQuotaForTierCommand.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Tiers/CreateQuotaForTier/Command.cs @@ -1,8 +1,8 @@ -using Backbone.Modules.Quotas.Application.DTOs; +using Backbone.Modules.Quotas.Module.Features.Shared; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using MediatR; -namespace Backbone.Modules.Quotas.Application.Tiers.Commands.CreateQuotaForTier; +namespace Backbone.Modules.Quotas.Module.Features.Tiers.CreateQuotaForTier; public class CreateQuotaForTierCommand : IRequest { diff --git a/Modules/Quotas/src/Quotas.Application/Tiers/Commands/CreateQuotaForTier/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/Tiers/CreateQuotaForTier/Handler.cs similarity index 91% rename from Modules/Quotas/src/Quotas.Application/Tiers/Commands/CreateQuotaForTier/Handler.cs rename to Modules/Quotas/src/Quotas.Module/Features/Tiers/CreateQuotaForTier/Handler.cs index e1008a70ae..5e06494d7d 100644 --- a/Modules/Quotas/src/Quotas.Application/Tiers/Commands/CreateQuotaForTier/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Tiers/CreateQuotaForTier/Handler.cs @@ -1,13 +1,13 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Domain.Exceptions; -using Backbone.Modules.Quotas.Application.DTOs; -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Module.Features.Shared; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; using MediatR; using Microsoft.Extensions.Logging; using MetricKey = Backbone.Modules.Quotas.Domain.Aggregates.Metrics.MetricKey; -namespace Backbone.Modules.Quotas.Application.Tiers.Commands.CreateQuotaForTier; +namespace Backbone.Modules.Quotas.Module.Features.Tiers.CreateQuotaForTier; public class Handler : IRequestHandler { diff --git a/Modules/Quotas/src/Quotas.Application/Tiers/Commands/CreateQuotaForTier/Validator.cs b/Modules/Quotas/src/Quotas.Module/Features/Tiers/CreateQuotaForTier/Validator.cs similarity index 89% rename from Modules/Quotas/src/Quotas.Application/Tiers/Commands/CreateQuotaForTier/Validator.cs rename to Modules/Quotas/src/Quotas.Module/Features/Tiers/CreateQuotaForTier/Validator.cs index 321117b49f..b97c1b480f 100644 --- a/Modules/Quotas/src/Quotas.Application/Tiers/Commands/CreateQuotaForTier/Validator.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Tiers/CreateQuotaForTier/Validator.cs @@ -4,7 +4,7 @@ using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; using FluentValidation; -namespace Backbone.Modules.Quotas.Application.Tiers.Commands.CreateQuotaForTier; +namespace Backbone.Modules.Quotas.Module.Features.Tiers.CreateQuotaForTier; public class Validator : AbstractValidator { diff --git a/Modules/Quotas/src/Quotas.Application/Tiers/Commands/DeleteTierQuotaDefinition/DeleteTierQuotaDefinitionCommand.cs b/Modules/Quotas/src/Quotas.Module/Features/Tiers/DeleteTierQuotaDefinition/Command.cs similarity index 68% rename from Modules/Quotas/src/Quotas.Application/Tiers/Commands/DeleteTierQuotaDefinition/DeleteTierQuotaDefinitionCommand.cs rename to Modules/Quotas/src/Quotas.Module/Features/Tiers/DeleteTierQuotaDefinition/Command.cs index 62c50a8241..4f850eab98 100644 --- a/Modules/Quotas/src/Quotas.Application/Tiers/Commands/DeleteTierQuotaDefinition/DeleteTierQuotaDefinitionCommand.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Tiers/DeleteTierQuotaDefinition/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Quotas.Application.Tiers.Commands.DeleteTierQuotaDefinition; +namespace Backbone.Modules.Quotas.Module.Features.Tiers.DeleteTierQuotaDefinition; public class DeleteTierQuotaDefinitionCommand : IRequest { diff --git a/Modules/Quotas/src/Quotas.Application/Tiers/Commands/DeleteTierQuotaDefinition/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/Tiers/DeleteTierQuotaDefinition/Handler.cs similarity index 90% rename from Modules/Quotas/src/Quotas.Application/Tiers/Commands/DeleteTierQuotaDefinition/Handler.cs rename to Modules/Quotas/src/Quotas.Module/Features/Tiers/DeleteTierQuotaDefinition/Handler.cs index 6cac49f404..dba543d23f 100644 --- a/Modules/Quotas/src/Quotas.Application/Tiers/Commands/DeleteTierQuotaDefinition/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Tiers/DeleteTierQuotaDefinition/Handler.cs @@ -1,11 +1,11 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Domain.Exceptions; -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; using MediatR; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Quotas.Application.Tiers.Commands.DeleteTierQuotaDefinition; +namespace Backbone.Modules.Quotas.Module.Features.Tiers.DeleteTierQuotaDefinition; public class Handler : IRequestHandler { diff --git a/Modules/Quotas/src/Quotas.Application/Tiers/Commands/DeleteTierQuotaDefinition/Validator.cs b/Modules/Quotas/src/Quotas.Module/Features/Tiers/DeleteTierQuotaDefinition/Validator.cs similarity index 83% rename from Modules/Quotas/src/Quotas.Application/Tiers/Commands/DeleteTierQuotaDefinition/Validator.cs rename to Modules/Quotas/src/Quotas.Module/Features/Tiers/DeleteTierQuotaDefinition/Validator.cs index 5e5d3a98b6..b8cd9fca35 100644 --- a/Modules/Quotas/src/Quotas.Application/Tiers/Commands/DeleteTierQuotaDefinition/Validator.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Tiers/DeleteTierQuotaDefinition/Validator.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; using FluentValidation; -namespace Backbone.Modules.Quotas.Application.Tiers.Commands.DeleteTierQuotaDefinition; +namespace Backbone.Modules.Quotas.Module.Features.Tiers.DeleteTierQuotaDefinition; public class Validator : AbstractValidator { diff --git a/Modules/Quotas/src/Quotas.Application/Tiers/Queries/GetTier/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/Tiers/GetTier/Handler.cs similarity index 83% rename from Modules/Quotas/src/Quotas.Application/Tiers/Queries/GetTier/Handler.cs rename to Modules/Quotas/src/Quotas.Module/Features/Tiers/GetTier/Handler.cs index 9d8dad786e..2ddea4d957 100644 --- a/Modules/Quotas/src/Quotas.Application/Tiers/Queries/GetTier/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Tiers/GetTier/Handler.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.Modules.Quotas.Application.DTOs; -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Module.Features.Shared; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; using MediatR; -namespace Backbone.Modules.Quotas.Application.Tiers.Queries.GetTier; +namespace Backbone.Modules.Quotas.Module.Features.Tiers.GetTier; public class Handler : IRequestHandler { diff --git a/Modules/Quotas/src/Quotas.Application/Tiers/Queries/GetTier/GetTierQuery.cs b/Modules/Quotas/src/Quotas.Module/Features/Tiers/GetTier/Query.cs similarity index 50% rename from Modules/Quotas/src/Quotas.Application/Tiers/Queries/GetTier/GetTierQuery.cs rename to Modules/Quotas/src/Quotas.Module/Features/Tiers/GetTier/Query.cs index 1b66c9ea44..b658f647b6 100644 --- a/Modules/Quotas/src/Quotas.Application/Tiers/Queries/GetTier/GetTierQuery.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Tiers/GetTier/Query.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Quotas.Application.DTOs; +using Backbone.Modules.Quotas.Module.Features.Shared; using MediatR; -namespace Backbone.Modules.Quotas.Application.Tiers.Queries.GetTier; +namespace Backbone.Modules.Quotas.Module.Features.Tiers.GetTier; public class GetTierQuery : IRequest { diff --git a/Modules/Quotas/src/Quotas.Application/Tiers/Queries/GetTier/Validator.cs b/Modules/Quotas/src/Quotas.Module/Features/Tiers/GetTier/Validator.cs similarity index 80% rename from Modules/Quotas/src/Quotas.Application/Tiers/Queries/GetTier/Validator.cs rename to Modules/Quotas/src/Quotas.Module/Features/Tiers/GetTier/Validator.cs index 55c8630d67..85e1803e3a 100644 --- a/Modules/Quotas/src/Quotas.Application/Tiers/Queries/GetTier/Validator.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Tiers/GetTier/Validator.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; using FluentValidation; -namespace Backbone.Modules.Quotas.Application.Tiers.Queries.GetTier; +namespace Backbone.Modules.Quotas.Module.Features.Tiers.GetTier; public class Validator : AbstractValidator { diff --git a/Modules/Quotas/src/Quotas.Module/Features/Tiers/SeedQueuedForDeletionTier/Command.cs b/Modules/Quotas/src/Quotas.Module/Features/Tiers/SeedQueuedForDeletionTier/Command.cs new file mode 100644 index 0000000000..e9822f1e34 --- /dev/null +++ b/Modules/Quotas/src/Quotas.Module/Features/Tiers/SeedQueuedForDeletionTier/Command.cs @@ -0,0 +1,5 @@ +using MediatR; + +namespace Backbone.Modules.Quotas.Module.Features.Tiers.SeedQueuedForDeletionTier; + +public class SeedQueuedForDeletionTierCommand : IRequest; diff --git a/Modules/Quotas/src/Quotas.Application/Tiers/Commands/SeedQueuedForDeletionTier/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/Tiers/SeedQueuedForDeletionTier/Handler.cs similarity index 92% rename from Modules/Quotas/src/Quotas.Application/Tiers/Commands/SeedQueuedForDeletionTier/Handler.cs rename to Modules/Quotas/src/Quotas.Module/Features/Tiers/SeedQueuedForDeletionTier/Handler.cs index a5044e8e85..79c7f3979c 100644 --- a/Modules/Quotas/src/Quotas.Application/Tiers/Commands/SeedQueuedForDeletionTier/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Tiers/SeedQueuedForDeletionTier/Handler.cs @@ -1,10 +1,10 @@ -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Metrics; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; using Backbone.Tooling.Extensions; using MediatR; -namespace Backbone.Modules.Quotas.Application.Tiers.Commands.SeedQueuedForDeletionTier; +namespace Backbone.Modules.Quotas.Module.Features.Tiers.SeedQueuedForDeletionTier; public class Handler : IRequestHandler { diff --git a/Modules/Quotas/src/Quotas.Module/Quotas.Module.csproj b/Modules/Quotas/src/Quotas.Module/Quotas.Module.csproj index cb368405f9..8f4b43c54b 100644 --- a/Modules/Quotas/src/Quotas.Module/Quotas.Module.csproj +++ b/Modules/Quotas/src/Quotas.Module/Quotas.Module.csproj @@ -3,7 +3,14 @@ - + + + + + + + + diff --git a/Modules/Quotas/src/Quotas.Module/QuotasEndpointExtensions.cs b/Modules/Quotas/src/Quotas.Module/QuotasEndpointExtensions.cs new file mode 100644 index 0000000000..7f335266c9 --- /dev/null +++ b/Modules/Quotas/src/Quotas.Module/QuotasEndpointExtensions.cs @@ -0,0 +1,16 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.Modules.Quotas.Module.Features.Identities.ListQuotasForIdentity; +using Microsoft.AspNetCore.Routing; +using OpenIddict.Validation.AspNetCore; + +namespace Backbone.Modules.Quotas.Module; + +public static class QuotasEndpointExtensions +{ + public static IEndpointRouteBuilder MapQuotasEndpoints(this IEndpointRouteBuilder endpoints) + { + var group = endpoints.MapVersionedEndpointGroup("Quotas", "Quotas", 2, OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme); + group.MapListQuotasForIdentityEndpoint(); + return endpoints; + } +} diff --git a/Modules/Quotas/src/Quotas.Application/Extensions/IEventBusExtensions.cs b/Modules/Quotas/src/Quotas.Module/QuotasEventBusExtensions.cs similarity index 64% rename from Modules/Quotas/src/Quotas.Application/Extensions/IEventBusExtensions.cs rename to Modules/Quotas/src/Quotas.Module/QuotasEventBusExtensions.cs index 48b0e0cc50..784d150278 100644 --- a/Modules/Quotas/src/Quotas.Application/Extensions/IEventBusExtensions.cs +++ b/Modules/Quotas/src/Quotas.Module/QuotasEventBusExtensions.cs @@ -2,24 +2,24 @@ using Backbone.Modules.Devices.Contracts.DomainEvents; using Backbone.Modules.Files.Contracts.DomainEvents; using Backbone.Modules.Messages.Contracts.DomainEvents; -using Backbone.Modules.Quotas.Application.DomainEvents.Incoming.FileUploaded; -using Backbone.Modules.Quotas.Application.DomainEvents.Incoming.IdentityCreated; -using Backbone.Modules.Quotas.Application.DomainEvents.Incoming.MessageCreated; -using Backbone.Modules.Quotas.Application.DomainEvents.Incoming.RelationshipStatusChanged; -using Backbone.Modules.Quotas.Application.DomainEvents.Incoming.RelationshipTemplateCreated; -using Backbone.Modules.Quotas.Application.DomainEvents.Incoming.TierCreated; -using Backbone.Modules.Quotas.Application.DomainEvents.Incoming.TierDeleted; -using Backbone.Modules.Quotas.Application.DomainEvents.Incoming.TierOfIdentityChanged; -using Backbone.Modules.Quotas.Application.DomainEvents.Incoming.TierQuotaDefinitionCreated; -using Backbone.Modules.Quotas.Application.DomainEvents.Incoming.TierQuotaDefinitionDeleted; -using Backbone.Modules.Quotas.Application.DomainEvents.Incoming.TokenCreated; +using Backbone.Modules.Quotas.Module.Features.DomainEvents.FileUploaded; +using Backbone.Modules.Quotas.Module.Features.DomainEvents.IdentityCreated; +using Backbone.Modules.Quotas.Module.Features.DomainEvents.MessageCreated; +using Backbone.Modules.Quotas.Module.Features.DomainEvents.RelationshipStatusChanged; +using Backbone.Modules.Quotas.Module.Features.DomainEvents.RelationshipTemplateCreated; +using Backbone.Modules.Quotas.Module.Features.DomainEvents.TierCreated; +using Backbone.Modules.Quotas.Module.Features.DomainEvents.TierDeleted; +using Backbone.Modules.Quotas.Module.Features.DomainEvents.TierOfIdentityChanged; +using Backbone.Modules.Quotas.Module.Features.DomainEvents.TierQuotaDefinitionCreated; +using Backbone.Modules.Quotas.Module.Features.DomainEvents.TierQuotaDefinitionDeleted; +using Backbone.Modules.Quotas.Module.Features.DomainEvents.TokenCreated; using Backbone.Modules.Quotas.Contracts.DomainEvents; using Backbone.Modules.Relationships.Contracts.DomainEvents; using Backbone.Modules.Tokens.Contracts.DomainEvents; -namespace Backbone.Modules.Quotas.Application.Extensions; +namespace Backbone.Modules.Quotas.Module; -public static class IEventBusExtensions +internal static class QuotasEventBusExtensions { public static async Task AddQuotasDomainEventSubscriptions(this IEventBus eventBus) { diff --git a/Modules/Quotas/src/Quotas.Module/QuotasModule.cs b/Modules/Quotas/src/Quotas.Module/QuotasModule.cs index c7810098db..e4070c533a 100644 --- a/Modules/Quotas/src/Quotas.Module/QuotasModule.cs +++ b/Modules/Quotas/src/Quotas.Module/QuotasModule.cs @@ -1,8 +1,6 @@ using Backbone.BuildingBlocks.API.Extensions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Module; -using Backbone.Modules.Quotas.Application; -using Backbone.Modules.Quotas.Application.Extensions; using Backbone.Modules.Quotas.Infrastructure; using Backbone.Modules.Quotas.Infrastructure.Persistence.Database; using Microsoft.Extensions.Configuration; diff --git a/Modules/Quotas/src/Quotas.Module/packages.lock.json b/Modules/Quotas/src/Quotas.Module/packages.lock.json index 6c18ea14bb..44aea5ba3b 100644 --- a/Modules/Quotas/src/Quotas.Module/packages.lock.json +++ b/Modules/Quotas/src/Quotas.Module/packages.lock.json @@ -193,11 +193,6 @@ "Grpc.Core.Api": "2.71.0" } }, - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "MedallionTopologicalSort": { "type": "Transitive", "resolved": "1.0.0", @@ -1196,13 +1191,6 @@ "Polly": "[8.7.0, 8.7.0]" } }, - "Backbone.Crypto": { - "type": "Project", - "dependencies": { - "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", - "NSec.Cryptography": "[26.4.0, 26.4.0]" - } - }, "Backbone.DevelopmentKit.Identity": { "type": "Project", "dependencies": { @@ -1210,29 +1198,11 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Announcements.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Devices.Application": { + "Backbone.Modules.Devices.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Crypto": "[1.0.0, )", - "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Domain": "[1.0.0, )", - "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "OpenIddict.Core": "[7.6.0, 7.6.0]", - "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Devices.Domain": "[1.0.0, )" } }, "Backbone.Modules.Devices.Contracts": { @@ -1256,8 +1226,9 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", "FirebaseAdmin": "[3.6.0, 3.6.0]", "JWT": "[11.1.0, 11.1.0]", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1286,18 +1257,10 @@ "Backbone.BuildingBlocks.Domain": "[1.0.0, )" } }, - "Backbone.Modules.Quotas.Application": { + "Backbone.Modules.Quotas.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Files.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Quotas.Contracts": "[1.0.0, )", - "Backbone.Modules.Quotas.Domain": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )" + "Backbone.Modules.Quotas.Domain": "[1.0.0, )" } }, "Backbone.Modules.Quotas.Contracts": { @@ -1319,9 +1282,9 @@ "Backbone.Modules.Quotas.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Quotas.Application": "[1.0.0, )", + "Backbone.Modules.Quotas.Abstractions": "[1.0.0, )", "Backbone.Modules.Quotas.Domain": "[1.0.0, )", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1347,12 +1310,6 @@ "Backbone.BuildingBlocks.Domain": "[1.0.0, )" } }, - "Backbone.Modules.Synchronization.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Modules.Tokens.Contracts": { "type": "Project", "dependencies": { @@ -1507,16 +1464,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", @@ -1815,15 +1762,6 @@ "Npgsql": "10.0.3" } }, - "NSec.Cryptography": { - "type": "CentralTransitive", - "requested": "[26.4.0, 26.4.0]", - "resolved": "26.4.0", - "contentHash": "0vsCtY5f+YgQROiWNqzgWp+l2pddfk9FkWoGV/bEo0MuEYPKlJWuoA8aOfO6qp3f+EnObKE3zSJhn1PspJeJVg==", - "dependencies": { - "libsodium": "[1.0.22, 1.0.23)" - } - }, "OpenIddict.AspNetCore": { "type": "CentralTransitive", "requested": "[7.6.0, 7.6.0]", @@ -1999,11 +1937,6 @@ } }, "net10.0/linux-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2078,11 +2011,6 @@ } }, "net10.0/linux-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2157,11 +2085,6 @@ } }, "net10.0/osx-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2236,11 +2159,6 @@ } }, "net10.0/win-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", diff --git a/Modules/Quotas/test/Quotas.Infrastructure.Tests/packages.lock.json b/Modules/Quotas/test/Quotas.Infrastructure.Tests/packages.lock.json index 0ded28d020..32348e7063 100644 --- a/Modules/Quotas/test/Quotas.Infrastructure.Tests/packages.lock.json +++ b/Modules/Quotas/test/Quotas.Infrastructure.Tests/packages.lock.json @@ -942,12 +942,6 @@ "Backbone.BuildingBlocks.Domain": "[1.0.0, )" } }, - "Backbone.Modules.Files.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Modules.Messages.Abstractions": { "type": "Project", "dependencies": { @@ -983,18 +977,10 @@ "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, 10.0.3]" } }, - "Backbone.Modules.Quotas.Application": { + "Backbone.Modules.Quotas.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Files.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Quotas.Contracts": "[1.0.0, )", - "Backbone.Modules.Quotas.Domain": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )" + "Backbone.Modules.Quotas.Domain": "[1.0.0, )" } }, "Backbone.Modules.Quotas.Contracts": { @@ -1016,9 +1002,9 @@ "Backbone.Modules.Quotas.Infrastructure": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Quotas.Application": "[1.0.0, )", + "Backbone.Modules.Quotas.Abstractions": "[1.0.0, )", "Backbone.Modules.Quotas.Domain": "[1.0.0, )", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1071,12 +1057,6 @@ "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, 10.0.3]" } }, - "Backbone.Modules.Tokens.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Tooling": { "type": "Project", "dependencies": { diff --git a/Modules/Quotas/test/Quotas.Application.Tests/Metrics/UsedFileStorageSpaceMetricCalculatorTests.cs b/Modules/Quotas/test/Quotas.Module.Tests/Metrics/UsedFileStorageSpaceMetricCalculatorTests.cs similarity index 86% rename from Modules/Quotas/test/Quotas.Application.Tests/Metrics/UsedFileStorageSpaceMetricCalculatorTests.cs rename to Modules/Quotas/test/Quotas.Module.Tests/Metrics/UsedFileStorageSpaceMetricCalculatorTests.cs index 658013a7c0..2f17e2ef53 100644 --- a/Modules/Quotas/test/Quotas.Application.Tests/Metrics/UsedFileStorageSpaceMetricCalculatorTests.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/Metrics/UsedFileStorageSpaceMetricCalculatorTests.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Quotas.Application.Metrics; +using Backbone.Modules.Quotas.Abstractions; +using Backbone.Modules.Quotas.Module.Features.Metrics.Shared; -namespace Backbone.Modules.Quotas.Application.Tests.Metrics; +namespace Backbone.Modules.Quotas.Module.Tests.Metrics; public class UsedFileStorageSpaceMetricCalculatorTests : AbstractTestsBase { diff --git a/Modules/Quotas/test/Quotas.Application.Tests/Quotas.Application.Tests.csproj b/Modules/Quotas/test/Quotas.Module.Tests/Quotas.Module.Tests.csproj similarity index 85% rename from Modules/Quotas/test/Quotas.Application.Tests/Quotas.Application.Tests.csproj rename to Modules/Quotas/test/Quotas.Module.Tests/Quotas.Module.Tests.csproj index 42d1108411..a56a30aed8 100644 --- a/Modules/Quotas/test/Quotas.Application.Tests/Quotas.Application.Tests.csproj +++ b/Modules/Quotas/test/Quotas.Module.Tests/Quotas.Module.Tests.csproj @@ -15,7 +15,7 @@ - + diff --git a/Modules/Quotas/test/Quotas.Application.Tests/TestDoubles/AddMockTiersRepository.cs b/Modules/Quotas/test/Quotas.Module.Tests/TestDoubles/AddMockTiersRepository.cs similarity index 87% rename from Modules/Quotas/test/Quotas.Application.Tests/TestDoubles/AddMockTiersRepository.cs rename to Modules/Quotas/test/Quotas.Module.Tests/TestDoubles/AddMockTiersRepository.cs index ba371f4d38..16823bee1d 100644 --- a/Modules/Quotas/test/Quotas.Application.Tests/TestDoubles/AddMockTiersRepository.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/TestDoubles/AddMockTiersRepository.cs @@ -1,8 +1,8 @@ using System.Diagnostics.CodeAnalysis; -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; -namespace Backbone.Modules.Quotas.Application.Tests.TestDoubles; +namespace Backbone.Modules.Quotas.Module.Tests.TestDoubles; public class AddMockTiersRepository : ITiersRepository { diff --git a/Modules/Quotas/test/Quotas.Application.Tests/TestDoubles/FindMetricsStubRepository.cs b/Modules/Quotas/test/Quotas.Module.Tests/TestDoubles/FindMetricsStubRepository.cs similarity index 83% rename from Modules/Quotas/test/Quotas.Application.Tests/TestDoubles/FindMetricsStubRepository.cs rename to Modules/Quotas/test/Quotas.Module.Tests/TestDoubles/FindMetricsStubRepository.cs index 286acd21c5..3592928da2 100644 --- a/Modules/Quotas/test/Quotas.Application.Tests/TestDoubles/FindMetricsStubRepository.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/TestDoubles/FindMetricsStubRepository.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Metrics; -namespace Backbone.Modules.Quotas.Application.Tests.TestDoubles; +namespace Backbone.Modules.Quotas.Module.Tests.TestDoubles; public class FindMetricsStubRepository : IMetricsRepository { diff --git a/Modules/Quotas/test/Quotas.Application.Tests/TestDoubles/FindTierQuotaDefinitionsStubRepository.cs b/Modules/Quotas/test/Quotas.Module.Tests/TestDoubles/FindTierQuotaDefinitionsStubRepository.cs similarity index 87% rename from Modules/Quotas/test/Quotas.Application.Tests/TestDoubles/FindTierQuotaDefinitionsStubRepository.cs rename to Modules/Quotas/test/Quotas.Module.Tests/TestDoubles/FindTierQuotaDefinitionsStubRepository.cs index 3afc8b159d..f6d429301d 100644 --- a/Modules/Quotas/test/Quotas.Application.Tests/TestDoubles/FindTierQuotaDefinitionsStubRepository.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/TestDoubles/FindTierQuotaDefinitionsStubRepository.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; -namespace Backbone.Modules.Quotas.Application.Tests.TestDoubles; +namespace Backbone.Modules.Quotas.Module.Tests.TestDoubles; public class FindTierQuotaDefinitionsStubRepository : ITiersRepository { diff --git a/Modules/Quotas/test/Quotas.Application.Tests/TestDoubles/FindTiersStubRepository.cs b/Modules/Quotas/test/Quotas.Module.Tests/TestDoubles/FindTiersStubRepository.cs similarity index 86% rename from Modules/Quotas/test/Quotas.Application.Tests/TestDoubles/FindTiersStubRepository.cs rename to Modules/Quotas/test/Quotas.Module.Tests/TestDoubles/FindTiersStubRepository.cs index 51334c6303..8abfad7fad 100644 --- a/Modules/Quotas/test/Quotas.Application.Tests/TestDoubles/FindTiersStubRepository.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/TestDoubles/FindTiersStubRepository.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; -namespace Backbone.Modules.Quotas.Application.Tests.TestDoubles; +namespace Backbone.Modules.Quotas.Module.Tests.TestDoubles; public class FindTiersStubRepository : ITiersRepository { diff --git a/Modules/Quotas/test/Quotas.Application.Tests/TestDoubles/MetricStatusesStubRepository.cs b/Modules/Quotas/test/Quotas.Module.Tests/TestDoubles/MetricStatusesStubRepository.cs similarity index 90% rename from Modules/Quotas/test/Quotas.Application.Tests/TestDoubles/MetricStatusesStubRepository.cs rename to Modules/Quotas/test/Quotas.Module.Tests/TestDoubles/MetricStatusesStubRepository.cs index 8f756fbac9..769b45da8e 100644 --- a/Modules/Quotas/test/Quotas.Application.Tests/TestDoubles/MetricStatusesStubRepository.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/TestDoubles/MetricStatusesStubRepository.cs @@ -2,7 +2,7 @@ using Backbone.Common.Infrastructure.Persistence.Repository; using Backbone.DevelopmentKit.Identity.ValueObjects; -namespace Backbone.Modules.Quotas.Application.Tests.TestDoubles; +namespace Backbone.Modules.Quotas.Module.Tests.TestDoubles; internal class MetricStatusesStubRepository : IMetricStatusesRepository { diff --git a/Modules/Quotas/test/Quotas.Application.Tests/Tests/DomainEvents/TierDeleted/TierDeletedDomainEventHandlerTests.cs b/Modules/Quotas/test/Quotas.Module.Tests/Tests/DomainEvents/TierDeleted/TierDeletedDomainEventHandlerTests.cs similarity index 82% rename from Modules/Quotas/test/Quotas.Application.Tests/Tests/DomainEvents/TierDeleted/TierDeletedDomainEventHandlerTests.cs rename to Modules/Quotas/test/Quotas.Module.Tests/Tests/DomainEvents/TierDeleted/TierDeletedDomainEventHandlerTests.cs index 21a1c20809..2d151b8f79 100644 --- a/Modules/Quotas/test/Quotas.Application.Tests/Tests/DomainEvents/TierDeleted/TierDeletedDomainEventHandlerTests.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/Tests/DomainEvents/TierDeleted/TierDeletedDomainEventHandlerTests.cs @@ -1,11 +1,11 @@ using Backbone.Modules.Devices.Contracts.DomainEvents; -using Backbone.Modules.Quotas.Application.DomainEvents.Incoming.TierDeleted; -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Module.Features.DomainEvents.TierDeleted; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; using FakeItEasy; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Quotas.Application.Tests.Tests.DomainEvents.TierDeleted; +namespace Backbone.Modules.Quotas.Module.Tests.Tests.DomainEvents.TierDeleted; public class TierDeletedDomainEventHandlerTests : AbstractTestsBase { diff --git a/Modules/Quotas/test/Quotas.Application.Tests/Tests/Identities/Commands/DeleteIdentityCommandTests/HandlerTests.cs b/Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/Commands/DeleteIdentityCommandTests/HandlerTests.cs similarity index 78% rename from Modules/Quotas/test/Quotas.Application.Tests/Tests/Identities/Commands/DeleteIdentityCommandTests/HandlerTests.cs rename to Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/Commands/DeleteIdentityCommandTests/HandlerTests.cs index eb213ecf67..f3a27f77cf 100644 --- a/Modules/Quotas/test/Quotas.Application.Tests/Tests/Identities/Commands/DeleteIdentityCommandTests/HandlerTests.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/Commands/DeleteIdentityCommandTests/HandlerTests.cs @@ -1,11 +1,11 @@ using System.Linq.Expressions; -using Backbone.Modules.Quotas.Application.Identities.Commands.DeleteIdentity; -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Quotas.Module.Features.Identities.DeleteIdentity; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; using FakeItEasy; -namespace Backbone.Modules.Quotas.Application.Tests.Tests.Identities.Commands.DeleteIdentityCommandTests; +namespace Backbone.Modules.Quotas.Module.Tests.Tests.Identities.Commands.DeleteIdentityCommandTests; public class HandlerTests : AbstractTestsBase { diff --git a/Modules/Quotas/test/Quotas.Application.Tests/Tests/Identities/IdentityCreatedDomainEventHandlerTests.cs b/Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/IdentityCreatedDomainEventHandlerTests.cs similarity index 90% rename from Modules/Quotas/test/Quotas.Application.Tests/Tests/Identities/IdentityCreatedDomainEventHandlerTests.cs rename to Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/IdentityCreatedDomainEventHandlerTests.cs index 03bdc5ddaa..93cb903556 100644 --- a/Modules/Quotas/test/Quotas.Application.Tests/Tests/Identities/IdentityCreatedDomainEventHandlerTests.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/IdentityCreatedDomainEventHandlerTests.cs @@ -1,7 +1,7 @@ using Backbone.Modules.Devices.Contracts.DomainEvents; -using Backbone.Modules.Quotas.Application.DomainEvents.Incoming.IdentityCreated; -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Quotas.Application.Tests.TestDoubles; +using Backbone.Modules.Quotas.Module.Features.DomainEvents.IdentityCreated; +using Backbone.Modules.Quotas.Abstractions; +using Backbone.Modules.Quotas.Module.Tests.TestDoubles; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.Modules.Quotas.Domain.Aggregates.Metrics; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; @@ -9,7 +9,7 @@ using FakeItEasy; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Quotas.Application.Tests.Tests.Identities; +namespace Backbone.Modules.Quotas.Module.Tests.Tests.Identities; public class IdentityCreatedDomainEventHandlerTests : AbstractTestsBase { diff --git a/Modules/Quotas/test/Quotas.Application.Tests/Tests/Identities/IdentityDeleterTests.cs b/Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/IdentityDeleterTests.cs similarity index 87% rename from Modules/Quotas/test/Quotas.Application.Tests/Tests/Identities/IdentityDeleterTests.cs rename to Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/IdentityDeleterTests.cs index 55cc94855b..b35412584a 100644 --- a/Modules/Quotas/test/Quotas.Application.Tests/Tests/Identities/IdentityDeleterTests.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/IdentityDeleterTests.cs @@ -1,10 +1,9 @@ using Backbone.BuildingBlocks.Application.Identities; -using Backbone.Modules.Quotas.Application.Identities; -using Backbone.Modules.Quotas.Application.Identities.Commands.DeleteIdentity; +using Backbone.Modules.Quotas.Module.Features.Identities.DeleteIdentity; using FakeItEasy; using MediatR; -namespace Backbone.Modules.Quotas.Application.Tests.Tests.Identities; +namespace Backbone.Modules.Quotas.Module.Tests.Tests.Identities; public class IdentityDeleterTests : AbstractTestsBase { diff --git a/Modules/Quotas/test/Quotas.Application.Tests/Tests/Identities/TierQuotaDefinitionCreatedDomainEventHandlerTests.cs b/Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/TierQuotaDefinitionCreatedDomainEventHandlerTests.cs similarity index 92% rename from Modules/Quotas/test/Quotas.Application.Tests/Tests/Identities/TierQuotaDefinitionCreatedDomainEventHandlerTests.cs rename to Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/TierQuotaDefinitionCreatedDomainEventHandlerTests.cs index 7920720a70..3592adce93 100644 --- a/Modules/Quotas/test/Quotas.Application.Tests/Tests/Identities/TierQuotaDefinitionCreatedDomainEventHandlerTests.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/TierQuotaDefinitionCreatedDomainEventHandlerTests.cs @@ -1,6 +1,6 @@ -using Backbone.Modules.Quotas.Application.DomainEvents.Incoming.TierQuotaDefinitionCreated; -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Quotas.Application.Tests.TestDoubles; +using Backbone.Modules.Quotas.Module.Features.DomainEvents.TierQuotaDefinitionCreated; +using Backbone.Modules.Quotas.Abstractions; +using Backbone.Modules.Quotas.Module.Tests.TestDoubles; using Backbone.Modules.Quotas.Contracts.DomainEvents; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.Modules.Quotas.Domain.Aggregates.Metrics; @@ -9,7 +9,7 @@ using FakeItEasy; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Quotas.Application.Tests.Tests.Identities; +namespace Backbone.Modules.Quotas.Module.Tests.Tests.Identities; public class TierQuotaDefinitionCreatedDomainEventHandlerTests : AbstractTestsBase { diff --git a/Modules/Quotas/test/Quotas.Application.Tests/Tests/QuotaCheck/QuotaCheckerImplTests.cs b/Modules/Quotas/test/Quotas.Module.Tests/Tests/QuotaCheck/QuotaCheckerImplTests.cs similarity index 96% rename from Modules/Quotas/test/Quotas.Application.Tests/Tests/QuotaCheck/QuotaCheckerImplTests.cs rename to Modules/Quotas/test/Quotas.Module.Tests/Tests/QuotaCheck/QuotaCheckerImplTests.cs index e3989f88f8..69b6f9839a 100644 --- a/Modules/Quotas/test/Quotas.Application.Tests/Tests/QuotaCheck/QuotaCheckerImplTests.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/Tests/QuotaCheck/QuotaCheckerImplTests.cs @@ -1,12 +1,12 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.BuildingBlocks.Application.QuotaCheck; using Backbone.BuildingBlocks.Domain; -using Backbone.Modules.Quotas.Application.Tests.TestDoubles; +using Backbone.Modules.Quotas.Module.Tests.TestDoubles; using Backbone.Tooling; using Backbone.UnitTestTools.Shouldly.Extensions; using Backbone.UnitTestTools.TestDoubles; -namespace Backbone.Modules.Quotas.Application.Tests.Tests.QuotaCheck; +namespace Backbone.Modules.Quotas.Module.Tests.Tests.QuotaCheck; public class QuotaCheckerImplTests : AbstractTestsBase { diff --git a/Modules/Quotas/test/Quotas.Application.Tests/Tests/Quotas/CreateQuotaForIdentity/HandlerTests.cs b/Modules/Quotas/test/Quotas.Module.Tests/Tests/Quotas/CreateQuotaForIdentity/HandlerTests.cs similarity index 85% rename from Modules/Quotas/test/Quotas.Application.Tests/Tests/Quotas/CreateQuotaForIdentity/HandlerTests.cs rename to Modules/Quotas/test/Quotas.Module.Tests/Tests/Quotas/CreateQuotaForIdentity/HandlerTests.cs index 3ec593d610..5776860575 100644 --- a/Modules/Quotas/test/Quotas.Application.Tests/Tests/Quotas/CreateQuotaForIdentity/HandlerTests.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/Tests/Quotas/CreateQuotaForIdentity/HandlerTests.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Quotas.Application.Identities.Commands.CreateQuotaForIdentity; -using Backbone.Modules.Quotas.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Quotas.Application.Metrics; -using Backbone.Modules.Quotas.Application.Tests.TestDoubles; +using Backbone.Modules.Quotas.Module.Features.Identities.CreateQuotaForIdentity; +using Backbone.Modules.Quotas.Abstractions; +using Backbone.Modules.Quotas.Module.Features.Metrics.Shared; +using Backbone.Modules.Quotas.Module.Tests.TestDoubles; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.Modules.Quotas.Domain.Aggregates.Metrics; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; @@ -9,7 +9,7 @@ using Microsoft.Extensions.Logging; using MetricKey = Backbone.Modules.Quotas.Domain.Aggregates.Metrics.MetricKey; -namespace Backbone.Modules.Quotas.Application.Tests.Tests.Quotas.CreateQuotaForIdentity; +namespace Backbone.Modules.Quotas.Module.Tests.Tests.Quotas.CreateQuotaForIdentity; public class HandlerTests : AbstractTestsBase { diff --git a/Modules/Quotas/test/Quotas.Application.Tests/Tests/Tiers/TierCreatedDomainEventHandlerTests.cs b/Modules/Quotas/test/Quotas.Module.Tests/Tests/Tiers/TierCreatedDomainEventHandlerTests.cs similarity index 84% rename from Modules/Quotas/test/Quotas.Application.Tests/Tests/Tiers/TierCreatedDomainEventHandlerTests.cs rename to Modules/Quotas/test/Quotas.Module.Tests/Tests/Tiers/TierCreatedDomainEventHandlerTests.cs index bc89f46d3d..04187068f8 100644 --- a/Modules/Quotas/test/Quotas.Application.Tests/Tests/Tiers/TierCreatedDomainEventHandlerTests.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/Tests/Tiers/TierCreatedDomainEventHandlerTests.cs @@ -1,11 +1,11 @@ using Backbone.Modules.Devices.Contracts.DomainEvents; -using Backbone.Modules.Quotas.Application.DomainEvents.Incoming.TierCreated; -using Backbone.Modules.Quotas.Application.Tests.TestDoubles; +using Backbone.Modules.Quotas.Module.Features.DomainEvents.TierCreated; +using Backbone.Modules.Quotas.Module.Tests.TestDoubles; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; using FakeItEasy; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Quotas.Application.Tests.Tests.Tiers; +namespace Backbone.Modules.Quotas.Module.Tests.Tests.Tiers; public class TierCreatedDomainEventHandlerTests : AbstractTestsBase { diff --git a/Modules/Quotas/test/Quotas.Application.Tests/packages.lock.json b/Modules/Quotas/test/Quotas.Module.Tests/packages.lock.json similarity index 59% rename from Modules/Quotas/test/Quotas.Application.Tests/packages.lock.json rename to Modules/Quotas/test/Quotas.Module.Tests/packages.lock.json index cbc0e87a7d..4392e080ec 100644 --- a/Modules/Quotas/test/Quotas.Application.Tests/packages.lock.json +++ b/Modules/Quotas/test/Quotas.Module.Tests/packages.lock.json @@ -38,6 +38,22 @@ "xunit.v3.core.mtp-v2": "[3.2.2]" } }, + "Asp.Versioning.Abstractions": { + "type": "Transitive", + "resolved": "10.1.0", + "contentHash": "RwdgC5O0baZ4pt30pAKKPQHq2CV4unBKA4HWoTeu7NY9ZwXM0dWYGf1Ipc5GK0eFBe9cMeqz4pGpPncMz4/ZNQ==", + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.0" + } + }, + "Asp.Versioning.Http": { + "type": "Transitive", + "resolved": "10.0.1", + "contentHash": "g0ayV/9ho3tGgooC6eF5p1063I1WzlxFJDYQrigcGnW+mLvui6eXrcW5hzTHhQREroUR3ZwXQrIN2SAIoi+KDw==", + "dependencies": { + "Asp.Versioning.Abstractions": "10.1.0" + } + }, "AWSSDK.Core": { "type": "Transitive", "resolved": "4.0.100.9", @@ -66,16 +82,6 @@ "System.Memory.Data": "1.0.2" } }, - "Azure.Identity": { - "type": "Transitive", - "resolved": "1.17.1", - "contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Microsoft.Identity.Client": "4.78.0", - "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" - } - }, "Azure.Storage.Common": { "type": "Transitive", "resolved": "12.28.0", @@ -250,6 +256,25 @@ "Microsoft.AspNetCore.Cryptography.Internal": "10.0.10" } }, + "Microsoft.AspNetCore.DataProtection": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "5sfrNrBShTlJeXvWNxjPS7ilLY4H6MICZPMZr/2vjoDoBH5Z8sQYJwbhulqfXh4yIpxIto0TcmOQHOElvpq+iQ==", + "dependencies": { + "Microsoft.AspNetCore.Cryptography.Internal": "10.0.10", + "Microsoft.AspNetCore.DataProtection.Abstractions": "10.0.10", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", + "Microsoft.Extensions.Logging.Abstractions": "10.0.10", + "Microsoft.Extensions.Options": "10.0.10", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "Microsoft.AspNetCore.DataProtection.Abstractions": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "q2RNx0N/qrsU+JgbPE78I9pu5ekwguitAFVoeE1NCgxtkUTguvf7oTzBnn42zSQxuugJ4fmj0RSarob8Rvorrg==" + }, "Microsoft.Azure.Amqp": { "type": "Transitive", "resolved": "2.7.0", @@ -260,6 +285,11 @@ "resolved": "10.0.9", "contentHash": "Aq7M8lG6BrHeatqKqncVm9m55ec34k6nnfPRLe/PvGg+b/pAsRM2ejofeKmCLjTXMa+5NGXm382f8CG/D5WDow==" }, + "Microsoft.Bcl.Cryptography": { + "type": "Transitive", + "resolved": "10.0.2", + "contentHash": "LG9Yll3B5aNpxv0+D47g6LiOiKBIlodhcHdQwcYzo8VeexFLGqx5ymetmA2aBRyo9cCcWsQWrFsdbsr8LvmWDw==" + }, "Microsoft.CodeCoverage": { "type": "Transitive", "resolved": "18.8.1", @@ -267,22 +297,34 @@ }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", + "dependencies": { + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" + } + }, + "Microsoft.Data.SqlClient.Extensions.Abstractions": { + "type": "Transitive", + "resolved": "7.0.2", + "contentHash": "Zx7z61fG2Nc6LdDn4jA7b5Aj1ABrljkOPRE31RvVUdjF6IgbG60leDUhMCafsnWFgaheiK3iqpLe+kbf5Z5L8Q==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)" } }, + "Microsoft.Data.SqlClient.Internal.Logging": { + "type": "Transitive", + "resolved": "7.0.2", + "contentHash": "iqgYBbGSVy/DIYWjzmQOa964Kn4rs4wW5vg2IamqVK0fQqfTiILVR5hMK27XWqoyONtAZs+VxH354cPJBtSnbg==" + }, "Microsoft.Data.SqlClient.SNI.runtime": { "type": "Transitive", "resolved": "6.0.2", @@ -329,6 +371,21 @@ "Microsoft.SqlServer.Types": "160.1000.6" } }, + "Microsoft.Extensions.AmbientMetadata.Application": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "/FYCIyhRLrDwIg29tB/21/Rp7XMaEP/gWR5Cxyi4GgWcN/v/XXUpU52yhQux0s2SQy1Z0C1wnhptCMvLaaT45Q==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.10", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10" + } + }, + "Microsoft.Extensions.ApiDescription.Server": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "NCWCGiwRwje8773yzPQhvucYnnfeR+ZoB1VRIrIMp4uaeUNw7jvEPHij3HIbwCDuNCrNcphA00KSAR9yD9qmbg==" + }, "Microsoft.Extensions.Caching.Abstractions": { "type": "Transitive", "resolved": "10.0.10", @@ -399,6 +456,14 @@ "Microsoft.Extensions.FileProviders.Physical": "10.0.10" } }, + "Microsoft.Extensions.DependencyInjection.AutoActivation": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "LXwOAsnrflu2ln+Bxj7y3Zc/Pn4HquCCRzW81oOIuRsM8F75TxwA/ZpSFZ5E1+YkVpndz7BcHY4ThFSjjA4vbQ==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10" + } + }, "Microsoft.Extensions.DependencyModel": { "type": "Transitive", "resolved": "10.0.10", @@ -423,6 +488,14 @@ "Microsoft.Extensions.Options": "10.0.10" } }, + "Microsoft.Extensions.Diagnostics.ExceptionSummarization": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "tXmzwQeWgiycaLOtvSFnz0TPkJxXTyZrkwSVPTr83FgSiMj3BD/8eIbvrpGi5rzc2AgfKyegKo1ntJlJFey1Zg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10" + } + }, "Microsoft.Extensions.Diagnostics.HealthChecks": { "type": "Transitive", "resolved": "10.0.10", @@ -462,6 +535,48 @@ "resolved": "10.0.10", "contentHash": "jSOCVxEwCd4Aq925kJVz1kSO1EpX2OHYKL04qVREXkDU7Ce3pVDdHPYm+fEy8y/th2kJf/DAstRHpJAqoNWP8w==" }, + "Microsoft.Extensions.Http": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "DuEBLw2y7ZBfilnaJtlge8f2M49932v43t7j1InceXVjcZzxNrSEkobYXdgZkXuPFnFbKcbWpAS+fZgYEW1BhA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", + "Microsoft.Extensions.Diagnostics": "10.0.10", + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.Extensions.Logging.Abstractions": "10.0.10", + "Microsoft.Extensions.Options": "10.0.10" + } + }, + "Microsoft.Extensions.Http.Diagnostics": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "2pYnolFkigH7N6A5WHdGx93iZ8dIhrBnu4ZkjvB6RwbHzYmIy/iXVe12pdrViNDdeBSmKZ5FA9YP/xhwLT7q7A==", + "dependencies": { + "Microsoft.Extensions.Http": "10.0.10", + "Microsoft.Extensions.Telemetry": "10.8.0" + } + }, + "Microsoft.Extensions.Http.Polly": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "ceKyX9V/C+mtapMfXQ0ClKRkxDHAW2AAJoDgTcsh7UdOteCQKB5wRTFgHJ82Lh/3O+UlPA47LRGEZkRxtz/lCA==", + "dependencies": { + "Microsoft.Extensions.Http": "10.0.10", + "Polly": "7.2.4", + "Polly.Extensions.Http": "3.0.0" + } + }, + "Microsoft.Extensions.Http.Resilience": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "XtbZyYVxSNn1Aj2Z0PA8yauS12hPszTWDZ3GtZ5Vww7Ai3d8Pm841jMBnTvoTf1t9mRf3eSB38V5KUWxH6/4oQ==", + "dependencies": { + "Microsoft.Extensions.Http.Diagnostics": "10.8.0", + "Microsoft.Extensions.ObjectPool": "10.0.10", + "Microsoft.Extensions.Resilience": "10.8.0" + } + }, "Microsoft.Extensions.Logging.Configuration": { "type": "Transitive", "resolved": "10.0.10", @@ -545,6 +660,31 @@ "resolved": "10.0.10", "contentHash": "5wu/GrYVd8mG2DVUw3vFJzF+O336TyTGg/Kmcgw9bfwYhCoFiV5lR5QeEmKecJyrW4W54nMfD3p3589E8a7czQ==" }, + "Microsoft.Extensions.Resilience": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "RH/gv0ZcCnQ3d30lxb8+T2o661TwZq/K5eMwp488goQLX1QYqWN3i8L8XlN9DhrqP2Zcf0EtsWaKpJO3yHDUTw==", + "dependencies": { + "Microsoft.Extensions.Diagnostics": "10.0.10", + "Microsoft.Extensions.Diagnostics.ExceptionSummarization": "10.8.0", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10", + "Microsoft.Extensions.Telemetry.Abstractions": "10.8.0", + "Polly.Extensions": "8.4.2", + "Polly.RateLimiting": "8.4.2" + } + }, + "Microsoft.Extensions.Telemetry": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "IIWjDZguUJt6yNld9J4V88xuOUzpC76wBwfnRJLRmacmyTTl9jA8+KP5PuHPi7CKz/Vk/q+lQYmobiopuzapzA==", + "dependencies": { + "Microsoft.Extensions.AmbientMetadata.Application": "10.8.0", + "Microsoft.Extensions.DependencyInjection.AutoActivation": "10.8.0", + "Microsoft.Extensions.Logging.Configuration": "10.0.10", + "Microsoft.Extensions.ObjectPool": "10.0.10", + "Microsoft.Extensions.Telemetry.Abstractions": "10.8.0" + } + }, "Microsoft.Extensions.Telemetry.Abstractions": { "type": "Transitive", "resolved": "10.8.0", @@ -575,50 +715,57 @@ }, "Microsoft.IdentityModel.Abstractions": { "type": "Transitive", - "resolved": "8.14.0", - "contentHash": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==" + "resolved": "8.19.2", + "contentHash": "HJbo/lnSfNHUfphPRT910poQc4T2/9+8svFLvzuaYHGAOJ2Tu+oEDqpX0BVP3BJ4OuUM1kylEKyaiX2fCAK3Cw==" }, "Microsoft.IdentityModel.JsonWebTokens": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "3Izi75UCUssvo8LPx3OVnEeZay58qaFicrtSnbtUt7q8qQi0gy46gh4V8VUTkMVMKXV6VMyjBVmeNNgeCUJuIw==", + "resolved": "8.19.2", + "contentHash": "ui3fuBT4fs8kdKfBthI4NzLYIBIneEVS8UrL1JVBzAn80UiKmngBBi0BEByE7n/9c+EElcfFlCMFFTqpkBSLNA==", "dependencies": { - "Microsoft.IdentityModel.Tokens": "7.7.1" + "Microsoft.IdentityModel.Tokens": "8.19.2" } }, "Microsoft.IdentityModel.Logging": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "BZNgSq/o8gsKExdYoBKPR65fdsxW0cTF8PsdqB8y011AGUJJW300S/ZIsEUD0+sOmGc003Gwv3FYbjrVjvsLNQ==", + "resolved": "8.19.2", + "contentHash": "r5YLDIxGOnkVJHrqXv/iD1FM1CgGrQOdriXuvuWvTPmKbnGANhEysq9XKmN6IHjf2a+9bAGEpnoRBsAQlvJU5w==", "dependencies": { - "Microsoft.IdentityModel.Abstractions": "7.7.1" + "Microsoft.IdentityModel.Abstractions": "8.19.2" } }, "Microsoft.IdentityModel.Protocols": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "h+fHHBGokepmCX+QZXJk4Ij8OApCb2n2ktoDkNX5CXteXsOxTHMNgjPGpAwdJMFvAL7TtGarUnk3o97NmBq2QQ==", + "resolved": "8.19.2", + "contentHash": "sGxSsSrZXNmca6D+jHH2rVRyo2nNRd/g4H9CFbPmLLq0xgoH1U0orLWE5minfijw7+zq49tBs7txenbfAErRoQ==", "dependencies": { - "Microsoft.IdentityModel.Tokens": "7.7.1" + "Microsoft.IdentityModel.Tokens": "8.19.2" } }, "Microsoft.IdentityModel.Protocols.OpenIdConnect": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "yT2Hdj8LpPbcT9C9KlLVxXl09C8zjFaVSaApdOwuecMuoV4s6Sof/mnTDz/+F/lILPIBvrWugR9CC7iRVZgbfQ==", + "resolved": "8.16.0", + "contentHash": "h4yVXyJsEBBX5lg2G5ftMsi5JzcNEGAzrNphA6DQ6eOd8P0s+cDCOyPwVTYLePZvJL5unbPvYIvzrbTXzFjXnQ==", "dependencies": { - "Microsoft.IdentityModel.Protocols": "7.7.1", - "System.IdentityModel.Tokens.Jwt": "7.7.1" + "Microsoft.IdentityModel.Protocols": "8.16.0", + "System.IdentityModel.Tokens.Jwt": "8.16.0" } }, "Microsoft.IdentityModel.Tokens": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "fQ0VVCba75lknUHGldi3iTKAYUQqbzp1Un8+d9cm9nON0Gs8NAkXddNg8iaUB0qi/ybtAmNWizTR4avdkCJ9pQ==", + "resolved": "8.19.2", + "contentHash": "GtPC1S02uH1gOO4fQ+zRysIicKmEXaYFP8PIkdJYXqMyruYhopre4ozVHp0XiDSA0+GJvOZH9prxCPvgBMg4Ww==", "dependencies": { - "Microsoft.IdentityModel.Logging": "7.7.1" + "Microsoft.Bcl.Cryptography": "10.0.2", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.IdentityModel.Logging": "8.19.2" } }, + "Microsoft.OpenApi": { + "type": "Transitive", + "resolved": "2.7.5", + "contentHash": "0FA67RSnRM4tcBKqiqVu/HPdZ9+QOKbmeRjxRUGTCjPU4C0bmUhd97Dso7Yild5P7nOV6GxJ2xrK0Kv/O9xp0w==" + }, "Microsoft.SqlServer.Server": { "type": "Transitive", "resolved": "1.0.0", @@ -706,11 +853,257 @@ "Microsoft.Extensions.Logging.Abstractions": "10.0.0" } }, + "OpenIddict": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "Dih/QGs3ptgvsioSOdvn/6KMy3el5ImMimp/9SV9VX/FqTT6CxBOGoxaukfJeVqgcxQrgge1vQvFp3kWtgOKGg==", + "dependencies": { + "OpenIddict.Abstractions": "7.6.0", + "OpenIddict.Client": "7.6.0", + "OpenIddict.Client.SystemIntegration": "7.6.0", + "OpenIddict.Client.SystemNetHttp": "7.6.0", + "OpenIddict.Client.WebIntegration": "7.6.0", + "OpenIddict.Core": "7.6.0", + "OpenIddict.Server": "7.6.0", + "OpenIddict.Validation": "7.6.0", + "OpenIddict.Validation.ServerIntegration": "7.6.0", + "OpenIddict.Validation.SystemNetHttp": "7.6.0" + } + }, + "OpenIddict.Abstractions": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "Fp2MUvm6wwsqk6+ieUM/3MTMlbCL1zwSXixM0xC22FgKcl5EQB7E0vV38IRI/rSF8UGgvC/AOjMOF6FoFyks8g==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", + "Microsoft.Extensions.Primitives": "10.0.10", + "Microsoft.IdentityModel.Tokens": "8.19.2" + } + }, + "OpenIddict.Client": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "X+Sg1wRKeVOeayJuZ4/0M74zXRENvXOAl2JRPF4MaEOoS9Pj6WCWMLriWS0wwEC1ODxQmLaG3tYZfcdC9hU40g==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.IdentityModel.JsonWebTokens": "8.19.2", + "Microsoft.IdentityModel.Protocols": "8.19.2", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.Client.AspNetCore": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "XjEj75mTkvMn1sj4jONWLTRK6KzeY/Hou8218nwLnJnqYmKJ1th7UDfadNTb530KSC+WPLxfvi7grzIv0xzebw==", + "dependencies": { + "OpenIddict.Client": "7.6.0" + } + }, + "OpenIddict.Client.DataProtection": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ZVhuFSzPbAaZkiRRrr77oyJnciWhytPnTZ1ByaCGfDx1b977crbcJww2asfkMpgNzcbWWAR6SgcS05hklsQflw==", + "dependencies": { + "Microsoft.AspNetCore.DataProtection": "10.0.10", + "OpenIddict.Client": "7.6.0", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "OpenIddict.Client.SystemIntegration": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "yqnyQH6CG46+y2Rp4UcIOXNcWgDvITW43PULI9sr6xYCS34J/kO6GU6fhwOGUfUJjRdOis3Xj00WwUZxZUQ5ZQ==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", + "OpenIddict.Client": "7.6.0" + } + }, + "OpenIddict.Client.SystemNetHttp": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "HsiL7rCRCFd7D1uvi6+HLmlkw9ykbLsEJ1GJMttuLB3/C8/LcqX+wHxr1W/GXl2YXhleNMW21I5AeVtGnfd9tg==", + "dependencies": { + "Microsoft.Extensions.Http.Polly": "10.0.10", + "Microsoft.Extensions.Http.Resilience": "10.8.0", + "OpenIddict.Client": "7.6.0" + } + }, + "OpenIddict.Client.WebIntegration": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "vJzIkHZwjB8vp6Hhxa8s9ruh/L+ZgpJUszGVP+kQQoqDQ8yZygbl0xWKuAHQ4OCIk3FTeSib9xH8uetm47YPgg==", + "dependencies": { + "OpenIddict.Client": "7.6.0", + "OpenIddict.Client.SystemNetHttp": "7.6.0" + } + }, + "OpenIddict.EntityFrameworkCore.Models": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "DrWB0dLfsg3mZhWABAlqSZKXin4Q4Pn8V4S7/1JxP5T/7Ncl0y45rM9L2EWv/zdydaiTOFKi4jRDBZAgBxUjaQ==" + }, + "OpenIddict.Server": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "0c7wlRYcP2Smgjp3PWyyojZ972H26otp6irW/WAFEbg4ZylcUvtlw0lkrCr/K8s5lAnYZwrpyzguwrJhXGKPVg==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.IdentityModel.JsonWebTokens": "8.19.2", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.Server.AspNetCore": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "m2Hk2R4gaTlEYBvNHz2fvIr38p1agiR2nW2gi5WMgSByFHxeEK5uhxqVGdSB2kEHRtp9kza/zBWBgIM4TdcVqw==", + "dependencies": { + "OpenIddict.Server": "7.6.0" + } + }, + "OpenIddict.Server.DataProtection": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ScGEt6uNuk2MZ/6DzVAMi/QegZulkvYKPRMrRu5/8/uI8P5o5XbEhEvancFx9YmBHL1uGE8SIByfTfxJx8kefA==", + "dependencies": { + "Microsoft.AspNetCore.DataProtection": "10.0.10", + "OpenIddict.Server": "7.6.0", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "OpenIddict.Validation": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ovzLQJ31uWZpgLdRVuD9Gmu8wxvhvbXW32MFTglFblhfqRwj/hMcEGOo8hdl+ir3QpDr9NUDAORA+v3S7xc6IA==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.IdentityModel.JsonWebTokens": "8.19.2", + "Microsoft.IdentityModel.Protocols": "8.19.2", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.Validation.AspNetCore": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "oby5/Ymdxd+g1TGtyTGrcK5J3/NSI80aw2CJgULwwIxraiCjiIfexrBjCxkPchWqPNFe6aAdGJ/Jz6amHNfrzg==", + "dependencies": { + "OpenIddict.Validation": "7.6.0" + } + }, + "OpenIddict.Validation.DataProtection": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ckC2xcPeJ/kLSyJXNOmpmFLnA1qM6zC8RR5d2pUtoToA6caMikebkL3NmRjBgxBRVvFmi7x9lMJ7+YmrI+uAlg==", + "dependencies": { + "Microsoft.AspNetCore.DataProtection": "10.0.10", + "OpenIddict.Validation": "7.6.0", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "OpenIddict.Validation.ServerIntegration": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "0bHhKsMV45UMPM5Phh51+g/tMUJNRzOWe6p/5opKeMQV8XoO3y3J9o/ZbfZ0j4qTTbQ7pqzEKSZaS4cGs0B3nQ==", + "dependencies": { + "OpenIddict.Server": "7.6.0", + "OpenIddict.Validation": "7.6.0" + } + }, + "OpenIddict.Validation.SystemNetHttp": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "N3MHlVaik22apnhxCTsqP6TjwRB/h874+5ks/m1+wKmOWqMyJ5UjIaZCvUOrDSMtDiEVted8qkjEJRzjAe0rGQ==", + "dependencies": { + "Microsoft.Extensions.Http.Polly": "10.0.10", + "Microsoft.Extensions.Http.Resilience": "10.8.0", + "OpenIddict.Validation": "7.6.0" + } + }, + "OpenTelemetry": { + "type": "Transitive", + "resolved": "1.18.0", + "contentHash": "13AKxycK+olOLe061MjliPTNBR/DUkjyRr0b9zwUhKyMjFS8lXS7G31R85rkbM55up2YFmdykWdAw2giBDJpiQ==", + "dependencies": { + "Microsoft.Extensions.Configuration.EnvironmentVariables": "10.0.0", + "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Configuration": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "1.18.0" + } + }, + "OpenTelemetry.Api.ProviderBuilderExtensions": { + "type": "Transitive", + "resolved": "1.18.0", + "contentHash": "io6A6PJFp3vIObRGf6oPjdHsdglkinXt/0SpTDJHrVnsLxUtOzwh/QwTsnhBJ43wJ6QcGMkyNzsSSY8XEB1Q5Q==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "OpenTelemetry.Api": "1.18.0" + } + }, "Polly.Core": { "type": "Transitive", "resolved": "8.7.0", "contentHash": "BS2t+nsBer16PIebCEPNBK5fgMisADQyRCd7K+BgkMWpFmSaiYE+rVVNpFhGRqUkJmNSLmw0uCNzHHWfgml28Q==" }, + "Polly.Extensions": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "GZ9vRVmR0jV2JtZavt+pGUsQ1O1cuRKG7R7VOZI6ZDy9y6RNPvRvXK1tuS4ffUrv8L0FTea59oEuQzgS0R7zSA==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "Polly.Core": "8.4.2" + } + }, + "Polly.Extensions.Http": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "drrG+hB3pYFY7w1c3BD+lSGYvH2oIclH8GRSehgfyP5kjnFnHKQuuBhuHLv+PWyFuaTDyk/vfRpnxOzd11+J8g==", + "dependencies": { + "Polly": "7.1.0" + } + }, + "Polly.RateLimiting": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "ehTImQ/eUyO07VYW2WvwSmU9rRH200SKJ/3jku9rOkyWE0A2JxNFmAVms8dSn49QLSjmjFRRSgfNyOgr/2PSmA==", + "dependencies": { + "Polly.Core": "8.4.2", + "System.Threading.RateLimiting": "8.0.0" + } + }, + "runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "A8v6PGmk+UGbfWo5Ixup0lPM4swuSwOiayJExZwKIOjTlFFQIsu3QnDXECosBEyrWSPryxBVrdqtJyhK3BaupQ==", + "dependencies": { + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": "4.4.0" + } + }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, + "Serilog.Extensions.Logging": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "vx0kABKl2dWbBhhqAfTOk53/i8aV/5VaT3a6il9gn72Wqs2pM7EK2OB6No6xdqK2IaY6Zf9gdjLuK9BVa2rT+Q==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.0", + "Serilog": "4.2.0" + } + }, "SQLitePCLRaw.bundle_e_sqlite3": { "type": "Transitive", "resolved": "2.1.11", @@ -733,6 +1126,27 @@ "SQLitePCLRaw.core": "2.1.11" } }, + "Swashbuckle.AspNetCore.Swagger": { + "type": "Transitive", + "resolved": "10.2.3", + "contentHash": "1jUUs3WQnrS0FUtaZPLSy1yYMEwS1zlvDmvQ2/eldPHUANX0LJSLVZecCMgSMdeGiRqeaRrIXLtSz++TCiTMww==", + "dependencies": { + "Microsoft.OpenApi": "2.7.5" + } + }, + "Swashbuckle.AspNetCore.SwaggerGen": { + "type": "Transitive", + "resolved": "10.2.3", + "contentHash": "y7t4coDRAeFYChmvlMRiH2OjbiRrm9AVIDgt17fQfs3x9PVAI5PiwWYOhg+4F13R4Q36WDc9lqfoOnNa3tNbGg==", + "dependencies": { + "Swashbuckle.AspNetCore.Swagger": "10.2.3" + } + }, + "Swashbuckle.AspNetCore.SwaggerUI": { + "type": "Transitive", + "resolved": "10.2.3", + "contentHash": "nthWONRs/FJ4yyG206g1cC52WEG8EqrjuMWjGdR+5XG7lbjFto6NqcI9EMICgVFom/UivIjUVwI76ZHbHwTPfQ==" + }, "System.ClientModel": { "type": "Transitive", "resolved": "1.14.0", @@ -751,11 +1165,11 @@ }, "System.Configuration.ConfigurationManager": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "vPinosRgEk1CGjohbv0pDuz6gPprkWo5xvBTjOJjks5JOgOEWvPndq5NngGxiTcBcy1+k9GwzZ1c3Bp2fU5ezw==", + "resolved": "9.0.13", + "contentHash": "GbBrJq9S/gYpHzm7Pxx6Y5tDyfSfyxW6tlP5oiKJV38uf19Wp+GIIAnWfyL1zmNiz1+EjwVapw2WkBFvvqKQzg==", "dependencies": { - "System.Diagnostics.EventLog": "9.0.11", - "System.Security.Cryptography.ProtectedData": "9.0.11" + "System.Diagnostics.EventLog": "9.0.13", + "System.Security.Cryptography.ProtectedData": "9.0.13" } }, "System.Diagnostics.EventLog": { @@ -765,11 +1179,11 @@ }, "System.IdentityModel.Tokens.Jwt": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "rQkO1YbAjLwnDJSMpRhRtrc6XwIcEOcUvoEcge+evurpzSZM3UNK+MZfD3sKyTlYsvknZ6eJjSBfnmXqwOsT9Q==", + "resolved": "8.16.0", + "contentHash": "rrs2u7DRMXQG2yh0oVyF/vLwosfRv20Ld2iEpYcKwQWXHjfV+gFXNQsQ9p008kR9Ou4pxBs68Q6/9zC8Gi1wjg==", "dependencies": { - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Tokens": "7.7.1" + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Tokens": "8.16.0" } }, "System.IO.Hashing": { @@ -792,13 +1206,21 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "System.Security.Cryptography.ProtectedData": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "s8yUYuYYu+PAwvBdhLG1KyrGrk9gkYeuPxfAsXsTqqWyepwSyEw8hAaflW4nO98NG52YpYI1am2+9o+79h2RtQ==" + "resolved": "9.0.13", + "contentHash": "t8S9IDpjJKsLpLkeBdW8cWtcPyYqrGu93Dej1RO6WwuL/lkFSqWlan3rMJfortqz1mRIh+sys2AFsSA6jWJ3Jg==" + }, + "System.Security.Cryptography.Xml": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "Mz6Y+s+uMQKj1H2BUF0OhlmaOQkLgSG34/IrUaBDirYBQ6bgwcFvO/XtXWcoDlBLFoFB0uKqDNhybHOd+fQK1A==", + "dependencies": { + "System.Security.Cryptography.Pkcs": "10.0.10" + } }, "System.Threading.RateLimiting": { "type": "Transitive", @@ -862,6 +1284,33 @@ "xunit.v3.runner.common": "[3.2.2]" } }, + "Backbone.BuildingBlocks.API": { + "type": "Project", + "dependencies": { + "Asp.Versioning.Mvc": "[10.0.1, 10.0.1]", + "Asp.Versioning.Mvc.ApiExplorer": "[10.0.1, 10.0.1]", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Module": "[1.0.0, )", + "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", + "Backbone.Tooling": "[1.0.0, )", + "DotNetDiag.HealthChecks.NpgSql": "[10.0.10, 10.0.10]", + "DotNetDiag.HealthChecks.SqlServer": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.Relational": "[10.0.10, 10.0.10]", + "OpenTelemetry.Exporter.OpenTelemetryProtocol": "[1.18.0, )", + "OpenTelemetry.Extensions.Hosting": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.AspNetCore": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.EntityFrameworkCore": "[1.18.0-beta.1, )", + "OpenTelemetry.Instrumentation.Http": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.Runtime": "[1.18.0, 1.18.0]", + "Polly": "[8.7.0, 8.7.0]", + "Serilog.Enrichers.Sensitive": "[2.1.0, 2.1.0]", + "Serilog.Extensions.Hosting": "[10.0.0, 10.0.0]", + "Swashbuckle.AspNetCore": "[10.2.3, 10.2.3]", + "System.Data.SqlClient": "[4.9.1, 4.9.1]" + } + }, "Backbone.BuildingBlocks.Application": { "type": "Project", "dependencies": { @@ -919,6 +1368,15 @@ "Serilog": "[4.4.0, 4.4.0]" } }, + "Backbone.BuildingBlocks.Module": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Microsoft.Extensions.Configuration.Abstractions": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[10.0.10, 10.0.10]", + "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" + } + }, "Backbone.Common.Infrastructure": { "type": "Project", "dependencies": { @@ -936,12 +1394,53 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, + "Backbone.Modules.Devices.Abstractions": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Domain": "[1.0.0, )" + } + }, "Backbone.Modules.Devices.Contracts": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Domain": "[1.0.0, )" } }, + "Backbone.Modules.Devices.Domain": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )", + "Backbone.DevelopmentKit.Identity": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Tooling": "[1.0.0, )", + "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]" + } + }, + "Backbone.Modules.Devices.Infrastructure": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", + "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", + "FirebaseAdmin": "[3.6.0, 3.6.0]", + "JWT": "[11.1.0, 11.1.0]", + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.Relational": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.DependencyInjection": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Identity.Core": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Identity.Stores": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Logging": "[10.0.10, 10.0.10]", + "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, 10.0.3]", + "OpenIddict.AspNetCore": "[7.6.0, 7.6.0]", + "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", + "Polly": "[8.7.0, 8.7.0]" + } + }, "Backbone.Modules.Files.Contracts": { "type": "Project", "dependencies": { @@ -954,18 +1453,10 @@ "Backbone.BuildingBlocks.Domain": "[1.0.0, )" } }, - "Backbone.Modules.Quotas.Application": { + "Backbone.Modules.Quotas.Abstractions": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Files.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Quotas.Contracts": "[1.0.0, )", - "Backbone.Modules.Quotas.Domain": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )" + "Backbone.Modules.Quotas.Domain": "[1.0.0, )" } }, "Backbone.Modules.Quotas.Contracts": { @@ -984,6 +1475,50 @@ "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]" } }, + "Backbone.Modules.Quotas.Infrastructure": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", + "Backbone.Modules.Quotas.Abstractions": "[1.0.0, )", + "Backbone.Modules.Quotas.Domain": "[1.0.0, )", + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", + "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, 10.0.3]" + } + }, + "Backbone.Modules.Quotas.Infrastructure.Database.Postgres": { + "type": "Project", + "dependencies": { + "Backbone.Modules.Quotas.Infrastructure": "[1.0.0, )" + } + }, + "Backbone.Modules.Quotas.Infrastructure.Database.SqlServer": { + "type": "Project", + "dependencies": { + "Backbone.Modules.Quotas.Infrastructure": "[1.0.0, )" + } + }, + "Backbone.Modules.Quotas.Module": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.API": "[1.0.0, )", + "Backbone.BuildingBlocks.Module": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Files.Contracts": "[1.0.0, )", + "Backbone.Modules.Messages.Contracts": "[1.0.0, )", + "Backbone.Modules.Quotas.Abstractions": "[1.0.0, )", + "Backbone.Modules.Quotas.Contracts": "[1.0.0, )", + "Backbone.Modules.Quotas.Domain": "[1.0.0, )", + "Backbone.Modules.Quotas.Infrastructure": "[1.0.0, )", + "Backbone.Modules.Quotas.Infrastructure.Database.Postgres": "[1.0.0, )", + "Backbone.Modules.Quotas.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", + "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" + } + }, "Backbone.Modules.Relationships.Contracts": { "type": "Project", "dependencies": { @@ -1017,6 +1552,24 @@ "Shouldly": "[4.3.0, 4.3.0]" } }, + "Asp.Versioning.Mvc": { + "type": "CentralTransitive", + "requested": "[10.0.1, 10.0.1]", + "resolved": "10.0.1", + "contentHash": "OqoFPKKxXkNmw62H3CgXkPrf1L4PPwwyYr9QMP6itt/khKTIayqaHhK6F2e3jt6KHc4s23cWAUbu+Z5GPEeMaw==", + "dependencies": { + "Asp.Versioning.Http": "10.0.1" + } + }, + "Asp.Versioning.Mvc.ApiExplorer": { + "type": "CentralTransitive", + "requested": "[10.0.1, 10.0.1]", + "resolved": "10.0.1", + "contentHash": "ylPZe+LheFp0pt2tSMq2pPeGAkMLqWVOn5+1/xOB/eUj889n9b35Sny08bSQ0ziAGIFjp3BBTXaYsWJjRoFV4A==", + "dependencies": { + "Asp.Versioning.Mvc": "10.0.1" + } + }, "Autofac": { "type": "CentralTransitive", "requested": "[9.3.2, 9.3.2]", @@ -1053,6 +1606,12 @@ "Azure.Storage.Common": "12.28.0" } }, + "BouncyCastle.Cryptography": { + "type": "CentralTransitive", + "requested": "[2.7.0, 2.7.0]", + "resolved": "2.7.0", + "contentHash": "U+12df8UEWHgBi04YVf/Lgi2dy3SItlIYvHjjEVa/BngCQIzDCDRBk50DDByCfDvSbe5pRNFr3b7UrVK2kMcLw==" + }, "CSharpFunctionalExtensions": { "type": "CentralTransitive", "requested": "[3.7.0, 3.7.0]", @@ -1065,6 +1624,26 @@ "resolved": "2.1.79", "contentHash": "8YijbzgTfmqmQOnVNorYM6K++pxqnW3nJ4aC1sRHzxUA2CcuoJ9gsTem3kgBnPRMc38zZHl4Esb6hAezXIEEuw==" }, + "DotNetDiag.HealthChecks.NpgSql": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "lxb6wQ1YC/TpvZMVgbyeLP5dYOg/RJWLg1xlR+I0FeyfyMmukppKdwzBOrKRtZ8FHG3nV9xrVTaPdwRw0yL4Vw==", + "dependencies": { + "Microsoft.Extensions.Diagnostics.HealthChecks": "10.0.9", + "Npgsql": "10.0.3" + } + }, + "DotNetDiag.HealthChecks.SqlServer": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "6t2HP5VQR0GZDJiw8iZvzOTRC+84irUeaUuWvcqcnc4K5Mzrn/A9V0ucoyjySXOF1vGkdTHjlJMknJVYC9c2Hg==", + "dependencies": { + "Microsoft.Data.SqlClient": "7.0.2", + "Microsoft.Extensions.Diagnostics.HealthChecks": "10.0.9" + } + }, "EFCore.BulkExtensions.Core": { "type": "CentralTransitive", "requested": "[10.0.1, 10.0.1]", @@ -1098,6 +1677,16 @@ "NetTopologySuite.IO.SqlServerBytes": "2.1.0" } }, + "FirebaseAdmin": { + "type": "CentralTransitive", + "requested": "[3.6.0, 3.6.0]", + "resolved": "3.6.0", + "contentHash": "aP8UWyQYACDOZqnHN9WB77TS0DlB8kVj8/HB7evUaAhAgPJQ9y4NmISJ3kkYkWBG5va3PHvYN5H+ZDBhABSEFQ==", + "dependencies": { + "Google.Api.Gax.Rest": "4.13.1", + "Google.Apis.Auth": "1.73.0" + } + }, "FluentValidation": { "type": "CentralTransitive", "requested": "[12.1.1, 12.1.1]", @@ -1124,6 +1713,15 @@ "Google.Apis.Storage.v1": "[1.74.0.4115, 2.0.0)" } }, + "JWT": { + "type": "CentralTransitive", + "requested": "[11.1.0, 11.1.0]", + "resolved": "11.1.0", + "contentHash": "GbmNr2WUyY3Ma0rwuvmTDnE5tIV8gFNDWeua9Fn54HwrpvGfwQzi7HtEAnMgI4quf4MuJr0iwPkt9sKrNCq1Tg==", + "dependencies": { + "Newtonsoft.Json": "13.0.4" + } + }, "MediatR": { "type": "CentralTransitive", "requested": "[12.5.0, 12.5.0]", @@ -1140,6 +1738,16 @@ "resolved": "2.0.1", "contentHash": "FYv95bNT4UwcNA+G/J1oX5OpRiSUxteXaUt2BJbRSdRNiIUNbggJF69wy6mnk2wYToaanpdXZdCwVylt96MpwQ==" }, + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "/ZV8RMWbWob1ZGsF5f1wVJNNlFLPKCf2ba834PpQiNhirVQ/ksup5SujtuUsvByHEZgv+9dmjC/4Xdi75axmXQ==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "10.0.10", + "Microsoft.Extensions.Identity.Stores": "10.0.10" + } + }, "Microsoft.Data.Sqlite.Core": { "type": "CentralTransitive", "requested": "[10.0.10, 10.0.10]", @@ -1355,6 +1963,17 @@ "Microsoft.Extensions.Options": "10.0.10" } }, + "Microsoft.Extensions.Identity.Stores": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "WMG/9wPJPnwU2w1R/WPLO/RL2UpGpBhw9z6odAAUkFdZypzzXl620FJWEoPpuBUq6Q4GYgMg0FQVRCO6gO4MQQ==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "10.0.10", + "Microsoft.Extensions.Identity.Core": "10.0.10", + "Microsoft.Extensions.Logging": "10.0.10" + } + }, "Microsoft.Extensions.Logging": { "type": "CentralTransitive", "requested": "[10.0.10, 10.0.10]", @@ -1396,12 +2015,109 @@ "Npgsql": "10.0.3" } }, + "OpenIddict.AspNetCore": { + "type": "CentralTransitive", + "requested": "[7.6.0, 7.6.0]", + "resolved": "7.6.0", + "contentHash": "FblhXU1SzSjL1nPsK5kqi+uMofNYLg1gwBU/qqc8diOafTv/6jLOhpCzzk+wISR8OnkS7H3oFMcTjy8aaTm8ww==", + "dependencies": { + "OpenIddict": "7.6.0", + "OpenIddict.Client.AspNetCore": "7.6.0", + "OpenIddict.Client.DataProtection": "7.6.0", + "OpenIddict.Server.AspNetCore": "7.6.0", + "OpenIddict.Server.DataProtection": "7.6.0", + "OpenIddict.Validation.AspNetCore": "7.6.0", + "OpenIddict.Validation.DataProtection": "7.6.0" + } + }, + "OpenIddict.Core": { + "type": "CentralTransitive", + "requested": "[7.6.0, 7.6.0]", + "resolved": "7.6.0", + "contentHash": "LJQ+GsSY6Nfw5FZ4NzCvL2kwYU1GNz6ygiUNGvqcKP0qXwstU59RDAjNKTCGkPPq4TQGnETqr4UsJgyK+AFxeA==", + "dependencies": { + "Microsoft.Extensions.Caching.Memory": "10.0.10", + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.Extensions.Options": "10.0.10", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[7.6.0, 7.6.0]", + "resolved": "7.6.0", + "contentHash": "BWbgvgKbDcg3EuNJvmXtUzeLxg9c4bU+PfDnZetCjGwcnlCsWcASkjVexKKevtUgWxRWJTQFRchMA09OKmOF/w==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "10.0.10", + "OpenIddict.Core": "7.6.0", + "OpenIddict.EntityFrameworkCore.Models": "7.6.0" + } + }, "OpenTelemetry.Api": { "type": "CentralTransitive", "requested": "[1.18.0, )", "resolved": "1.18.0", "contentHash": "Dhzm5oughIY9EWckt2J1yXcEbXpki5WCL2q7prJoYxzH6C7jdkfGtPMTkUVZZ4AhjJKzQnlC+kLSIlmIVwC4Vw==" }, + "OpenTelemetry.Exporter.OpenTelemetryProtocol": { + "type": "CentralTransitive", + "requested": "[1.18.0, )", + "resolved": "1.18.0", + "contentHash": "Et3WAviooKGObZjUZN8d6eTsdJs1YM3ZoN+KlWSAHksTmHG1nyGi9XGo2wb0fkFMWK0g80FOPdR1njg52Dm+aw==", + "dependencies": { + "OpenTelemetry": "1.18.0" + } + }, + "OpenTelemetry.Extensions.Hosting": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "u+JMA82H65MKwMvd2qUpL8C2qE4Jux2nvX9hmy036UK/Apv2YyIRYCttF/vlX6nMPcAKI8BXkscmL4QG3C69fw==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", + "OpenTelemetry": "1.18.0" + } + }, + "OpenTelemetry.Instrumentation.AspNetCore": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "hBiMXE/CGIAHUOpi0gScNkjHB0L9XbCin5lZObL+dMBl4OmpndnHgxP3JZDnnGtU6qOzdeh8TYUV9f6Jgmmhlw==", + "dependencies": { + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[1.18.0-beta.1, )", + "resolved": "1.18.0-beta.1", + "contentHash": "n15cNXxkSl9G6KD41wZYmujjERYOBiIgn2VeesTFhLtHZ+QQQE3baLrCk7UyzidEw/uGObRcW3SKhqpyMpGe1w==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Http": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "/X57peOOa4a+9V4DSVXbuIWdsAxmU5gsxw8lu+gJU0zuewsYhC9f6qdm8GEW0VvqG9e+gxn0HdVR5G3YHcWDTw==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Runtime": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "McuXGjBJDL/Cown2PxfUQysK98MZG7ZDjO/IKUtaAx8t1m0PB0d+QtJC79RFTVipMhRIwjJiULNOp0OGfZbvwg==", + "dependencies": { + "OpenTelemetry.Api": "[1.18.0, 2.0.0)" + } + }, "Polly": { "type": "CentralTransitive", "requested": "[8.7.0, 8.7.0]", @@ -1436,6 +2152,25 @@ "resolved": "4.4.0", "contentHash": "ZC6Le3rr4TVJJjS4KsQAesxeF1EhW9qcZmmG7eP5Y2G3+gTGkJEUXkq4+tZNPtyp05I0wWOxnIjwtxFweJsObw==" }, + "Serilog.Enrichers.Sensitive": { + "type": "CentralTransitive", + "requested": "[2.1.0, 2.1.0]", + "resolved": "2.1.0", + "contentHash": "nlaEYMoHjJqncjQgc0Nv4LOIkAwUt4Nvmx3EMNjY4MKC7QqZs9zB0v/NwFnaWzLF7qztc7mna1bjn20Auohu0g==" + }, + "Serilog.Extensions.Hosting": { + "type": "CentralTransitive", + "requested": "[10.0.0, 10.0.0]", + "resolved": "10.0.0", + "contentHash": "E7juuIc+gzoGxgzFooFgAV8g9BfiSXNKsUok9NmEpyAXg2odkcPsMa/Yo4axkJRlh0se7mkYQ1GXDaBemR+b6w==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Serilog": "4.3.0", + "Serilog.Extensions.Logging": "10.0.0" + } + }, "Shouldly": { "type": "CentralTransitive", "requested": "[4.3.0, 4.3.0]", @@ -1457,25 +2192,45 @@ "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "Swashbuckle.AspNetCore": { + "type": "CentralTransitive", + "requested": "[10.2.3, 10.2.3]", + "resolved": "10.2.3", + "contentHash": "8KNh1RWvofdU6DVLyBs4Z/OpUMnmf8oNvJQc0QxpwySRbi42bwLfdVMMrXZWANg5U5KQGQq1xW6r/hlcqw99tQ==", + "dependencies": { + "Microsoft.Extensions.ApiDescription.Server": "10.0.0", + "Swashbuckle.AspNetCore.Swagger": "10.2.3", + "Swashbuckle.AspNetCore.SwaggerGen": "10.2.3", + "Swashbuckle.AspNetCore.SwaggerUI": "10.2.3" + } + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/linux-arm64": { "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1496,6 +2251,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1511,33 +2281,41 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "SQLitePCLRaw.lib.e_sqlite3": { "type": "CentralTransitive", "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/linux-x64": { "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1558,6 +2336,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1573,33 +2366,41 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "SQLitePCLRaw.lib.e_sqlite3": { "type": "CentralTransitive", "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/osx-arm64": { "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1620,6 +2421,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1635,33 +2451,41 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "SQLitePCLRaw.lib.e_sqlite3": { "type": "CentralTransitive", "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/win-x64": { "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1682,6 +2506,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1697,14 +2536,23 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "SQLitePCLRaw.lib.e_sqlite3": { "type": "CentralTransitive", "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } } } diff --git a/Modules/Relationships/src/Relationships.Module/packages.lock.json b/Modules/Relationships/src/Relationships.Module/packages.lock.json index 5bdc4f8ee1..f9953526f6 100644 --- a/Modules/Relationships/src/Relationships.Module/packages.lock.json +++ b/Modules/Relationships/src/Relationships.Module/packages.lock.json @@ -193,11 +193,6 @@ "Grpc.Core.Api": "2.71.0" } }, - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "MedallionTopologicalSort": { "type": "Transitive", "resolved": "1.0.0", @@ -1196,13 +1191,6 @@ "Polly": "[8.7.0, 8.7.0]" } }, - "Backbone.Crypto": { - "type": "Project", - "dependencies": { - "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", - "NSec.Cryptography": "[26.4.0, 26.4.0]" - } - }, "Backbone.DevelopmentKit.Identity": { "type": "Project", "dependencies": { @@ -1210,29 +1198,11 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Announcements.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Devices.Application": { + "Backbone.Modules.Devices.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Crypto": "[1.0.0, )", - "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Domain": "[1.0.0, )", - "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "OpenIddict.Core": "[7.6.0, 7.6.0]", - "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Devices.Domain": "[1.0.0, )" } }, "Backbone.Modules.Devices.Contracts": { @@ -1256,8 +1226,9 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", "FirebaseAdmin": "[3.6.0, 3.6.0]", "JWT": "[11.1.0, 11.1.0]", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1331,18 +1302,6 @@ "Backbone.Modules.Relationships.Infrastructure": "[1.0.0, )" } }, - "Backbone.Modules.Synchronization.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Tokens.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Tooling": { "type": "Project", "dependencies": { @@ -1799,15 +1758,6 @@ "Npgsql": "10.0.3" } }, - "NSec.Cryptography": { - "type": "CentralTransitive", - "requested": "[26.4.0, 26.4.0]", - "resolved": "26.4.0", - "contentHash": "0vsCtY5f+YgQROiWNqzgWp+l2pddfk9FkWoGV/bEo0MuEYPKlJWuoA8aOfO6qp3f+EnObKE3zSJhn1PspJeJVg==", - "dependencies": { - "libsodium": "[1.0.22, 1.0.23)" - } - }, "OpenIddict.AspNetCore": { "type": "CentralTransitive", "requested": "[7.6.0, 7.6.0]", @@ -1983,11 +1933,6 @@ } }, "net10.0/linux-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2062,11 +2007,6 @@ } }, "net10.0/linux-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2141,11 +2081,6 @@ } }, "net10.0/osx-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2220,11 +2155,6 @@ } }, "net10.0/win-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", diff --git a/Modules/Synchronization/src/Synchronization.Module/packages.lock.json b/Modules/Synchronization/src/Synchronization.Module/packages.lock.json index c14ef8249e..905056dc13 100644 --- a/Modules/Synchronization/src/Synchronization.Module/packages.lock.json +++ b/Modules/Synchronization/src/Synchronization.Module/packages.lock.json @@ -193,11 +193,6 @@ "Grpc.Core.Api": "2.71.0" } }, - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "MedallionTopologicalSort": { "type": "Transitive", "resolved": "1.0.0", @@ -1201,13 +1196,6 @@ "Polly": "[8.7.0, 8.7.0]" } }, - "Backbone.Crypto": { - "type": "Project", - "dependencies": { - "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", - "NSec.Cryptography": "[26.4.0, 26.4.0]" - } - }, "Backbone.DevelopmentKit.Identity": { "type": "Project", "dependencies": { @@ -1215,29 +1203,11 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Announcements.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Devices.Application": { + "Backbone.Modules.Devices.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Crypto": "[1.0.0, )", - "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Domain": "[1.0.0, )", - "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "OpenIddict.Core": "[7.6.0, 7.6.0]", - "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Devices.Domain": "[1.0.0, )" } }, "Backbone.Modules.Devices.Contracts": { @@ -1261,8 +1231,9 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", "FirebaseAdmin": "[3.6.0, 3.6.0]", "JWT": "[11.1.0, 11.1.0]", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1822,15 +1793,6 @@ "Npgsql": "10.0.3" } }, - "NSec.Cryptography": { - "type": "CentralTransitive", - "requested": "[26.4.0, 26.4.0]", - "resolved": "26.4.0", - "contentHash": "0vsCtY5f+YgQROiWNqzgWp+l2pddfk9FkWoGV/bEo0MuEYPKlJWuoA8aOfO6qp3f+EnObKE3zSJhn1PspJeJVg==", - "dependencies": { - "libsodium": "[1.0.22, 1.0.23)" - } - }, "OpenIddict.AspNetCore": { "type": "CentralTransitive", "requested": "[7.6.0, 7.6.0]", @@ -2006,11 +1968,6 @@ } }, "net10.0/linux-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2085,11 +2042,6 @@ } }, "net10.0/linux-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2164,11 +2116,6 @@ } }, "net10.0/osx-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2243,11 +2190,6 @@ } }, "net10.0/win-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", diff --git a/Modules/Tags/src/Tags.Module/packages.lock.json b/Modules/Tags/src/Tags.Module/packages.lock.json index 8cd5576b90..9ae03cdedc 100644 --- a/Modules/Tags/src/Tags.Module/packages.lock.json +++ b/Modules/Tags/src/Tags.Module/packages.lock.json @@ -193,11 +193,6 @@ "Grpc.Core.Api": "2.71.0" } }, - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "MedallionTopologicalSort": { "type": "Transitive", "resolved": "1.0.0", @@ -1196,13 +1191,6 @@ "Polly": "[8.7.0, 8.7.0]" } }, - "Backbone.Crypto": { - "type": "Project", - "dependencies": { - "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", - "NSec.Cryptography": "[26.4.0, 26.4.0]" - } - }, "Backbone.DevelopmentKit.Identity": { "type": "Project", "dependencies": { @@ -1210,29 +1198,11 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Announcements.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Devices.Application": { + "Backbone.Modules.Devices.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Crypto": "[1.0.0, )", - "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Domain": "[1.0.0, )", - "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "OpenIddict.Core": "[7.6.0, 7.6.0]", - "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Devices.Domain": "[1.0.0, )" } }, "Backbone.Modules.Devices.Contracts": { @@ -1256,8 +1226,9 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", "FirebaseAdmin": "[3.6.0, 3.6.0]", "JWT": "[11.1.0, 11.1.0]", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1274,12 +1245,6 @@ "Polly": "[8.7.0, 8.7.0]" } }, - "Backbone.Modules.Synchronization.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Modules.Tags.Abstractions": { "type": "Project", "dependencies": { @@ -1298,12 +1263,6 @@ "Microsoft.Extensions.Options": "[10.0.10, 10.0.10]" } }, - "Backbone.Modules.Tokens.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Tooling": { "type": "Project", "dependencies": { @@ -1452,16 +1411,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", @@ -1760,15 +1709,6 @@ "Npgsql": "10.0.3" } }, - "NSec.Cryptography": { - "type": "CentralTransitive", - "requested": "[26.4.0, 26.4.0]", - "resolved": "26.4.0", - "contentHash": "0vsCtY5f+YgQROiWNqzgWp+l2pddfk9FkWoGV/bEo0MuEYPKlJWuoA8aOfO6qp3f+EnObKE3zSJhn1PspJeJVg==", - "dependencies": { - "libsodium": "[1.0.22, 1.0.23)" - } - }, "OpenIddict.AspNetCore": { "type": "CentralTransitive", "requested": "[7.6.0, 7.6.0]", @@ -1944,11 +1884,6 @@ } }, "net10.0/linux-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2023,11 +1958,6 @@ } }, "net10.0/linux-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2102,11 +2032,6 @@ } }, "net10.0/osx-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2181,11 +2106,6 @@ } }, "net10.0/win-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", diff --git a/Modules/Tokens/src/Tokens.Module/packages.lock.json b/Modules/Tokens/src/Tokens.Module/packages.lock.json index 102694948e..c72e226e4d 100644 --- a/Modules/Tokens/src/Tokens.Module/packages.lock.json +++ b/Modules/Tokens/src/Tokens.Module/packages.lock.json @@ -212,11 +212,6 @@ "Grpc.Core.Api": "2.71.0" } }, - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "MedallionTopologicalSort": { "type": "Transitive", "resolved": "1.0.0", @@ -1215,13 +1210,6 @@ "Polly": "[8.7.0, 8.7.0]" } }, - "Backbone.Crypto": { - "type": "Project", - "dependencies": { - "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", - "NSec.Cryptography": "[26.4.0, 26.4.0]" - } - }, "Backbone.DevelopmentKit.Identity": { "type": "Project", "dependencies": { @@ -1229,29 +1217,11 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Announcements.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Devices.Application": { + "Backbone.Modules.Devices.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Crypto": "[1.0.0, )", - "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Domain": "[1.0.0, )", - "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "OpenIddict.Core": "[7.6.0, 7.6.0]", - "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Devices.Domain": "[1.0.0, )" } }, "Backbone.Modules.Devices.Contracts": { @@ -1275,8 +1245,9 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", "FirebaseAdmin": "[3.6.0, 3.6.0]", "JWT": "[11.1.0, 11.1.0]", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1293,12 +1264,6 @@ "Polly": "[8.7.0, 8.7.0]" } }, - "Backbone.Modules.Synchronization.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Modules.Tokens.Abstractions": { "type": "Project", "dependencies": { @@ -1793,15 +1758,6 @@ "Npgsql": "10.0.3" } }, - "NSec.Cryptography": { - "type": "CentralTransitive", - "requested": "[26.4.0, 26.4.0]", - "resolved": "26.4.0", - "contentHash": "0vsCtY5f+YgQROiWNqzgWp+l2pddfk9FkWoGV/bEo0MuEYPKlJWuoA8aOfO6qp3f+EnObKE3zSJhn1PspJeJVg==", - "dependencies": { - "libsodium": "[1.0.22, 1.0.23)" - } - }, "OpenIddict.AspNetCore": { "type": "CentralTransitive", "requested": "[7.6.0, 7.6.0]", @@ -1968,11 +1924,6 @@ } }, "net10.0/linux-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2047,11 +1998,6 @@ } }, "net10.0/linux-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2126,11 +2072,6 @@ } }, "net10.0/osx-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2205,11 +2146,6 @@ } }, "net10.0/win-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", diff --git a/Modules/Tokens/test/Tokens.Module.Tests/packages.lock.json b/Modules/Tokens/test/Tokens.Module.Tests/packages.lock.json index 5838c5a497..659f4dd83b 100644 --- a/Modules/Tokens/test/Tokens.Module.Tests/packages.lock.json +++ b/Modules/Tokens/test/Tokens.Module.Tests/packages.lock.json @@ -242,11 +242,6 @@ "Grpc.Core.Api": "2.71.0" } }, - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "MedallionTopologicalSort": { "type": "Transitive", "resolved": "1.0.0", @@ -1401,13 +1396,6 @@ "Polly": "[8.7.0, 8.7.0]" } }, - "Backbone.Crypto": { - "type": "Project", - "dependencies": { - "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", - "NSec.Cryptography": "[26.4.0, 26.4.0]" - } - }, "Backbone.DevelopmentKit.Identity": { "type": "Project", "dependencies": { @@ -1415,29 +1403,11 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Announcements.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Devices.Application": { + "Backbone.Modules.Devices.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Crypto": "[1.0.0, )", - "Backbone.Modules.Announcements.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Devices.Domain": "[1.0.0, )", - "Backbone.Modules.Synchronization.Contracts": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", - "OpenIddict.Core": "[7.6.0, 7.6.0]", - "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", - "Polly": "[8.7.0, 8.7.0]" + "Backbone.Modules.Devices.Domain": "[1.0.0, )" } }, "Backbone.Modules.Devices.Contracts": { @@ -1461,8 +1431,9 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Devices.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", "FirebaseAdmin": "[3.6.0, 3.6.0]", "JWT": "[11.1.0, 11.1.0]", "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1479,12 +1450,6 @@ "Polly": "[8.7.0, 8.7.0]" } }, - "Backbone.Modules.Synchronization.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Modules.Tokens.Abstractions": { "type": "Project", "dependencies": { @@ -2042,15 +2007,6 @@ "Npgsql": "10.0.3" } }, - "NSec.Cryptography": { - "type": "CentralTransitive", - "requested": "[26.4.0, 26.4.0]", - "resolved": "26.4.0", - "contentHash": "0vsCtY5f+YgQROiWNqzgWp+l2pddfk9FkWoGV/bEo0MuEYPKlJWuoA8aOfO6qp3f+EnObKE3zSJhn1PspJeJVg==", - "dependencies": { - "libsodium": "[1.0.22, 1.0.23)" - } - }, "OpenIddict.AspNetCore": { "type": "CentralTransitive", "requested": "[7.6.0, 7.6.0]", @@ -2243,11 +2199,6 @@ } }, "net10.0/linux-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2333,11 +2284,6 @@ } }, "net10.0/linux-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2423,11 +2369,6 @@ } }, "net10.0/osx-arm64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", @@ -2513,11 +2454,6 @@ } }, "net10.0/win-x64": { - "libsodium": { - "type": "Transitive", - "resolved": "1.0.22", - "contentHash": "KPD9SloJFclrsjnhABu7dzWrcyYkwPbvx5l1gRSPAX/0n+OBtSiVCKtGFv4n+ecWUHU0tCG9LSSwoZZx673zBQ==" - }, "Microsoft.Data.SqlClient": { "type": "Transitive", "resolved": "7.0.2", From 66a8348fcbb924a161d40532d754a9f17a38403c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20H=C3=BCgel?= Date: Fri, 2 Oct 2026 08:45:40 +0200 Subject: [PATCH 16/25] refactor: migrate Relationships modules --- ...elationshipTemplateReferencesController.cs | 42 - .../RelationshipTemplatesController.cs | 82 -- .../Relationships/RelationshipsController.cs | 209 ---- Applications/ConsumerApi/src/Program.cs | 3 +- .../ConsumerApi/src/packages.lock.json | 17 +- .../packages.lock.json | 17 +- .../src/DatabaseMigrator/Dockerfile | 2 +- .../src/DatabaseMigrator/packages.lock.json | 18 +- .../DatabaseMigrator.Tests/packages.lock.json | 18 +- .../src/EventHandlerService/Dockerfile | 2 +- .../src/EventHandlerService/Program.cs | 2 +- .../EventHandlerService/packages.lock.json | 17 +- .../packages.lock.json | 17 +- .../Housekeeper/src/Housekeeper/Dockerfile | 2 +- .../Housekeeper/src/Housekeeper/Executor.cs | 2 +- .../Housekeeper/src/Housekeeper/Program.cs | 2 +- .../src/Housekeeper/packages.lock.json | 17 +- .../src/Job.IdentityDeletion/Dockerfile | 2 +- .../Job.IdentityDeletion.csproj | 1 - .../src/Job.IdentityDeletion/Program.cs | 2 +- .../ServicesExtensions.cs | 2 +- .../Job.IdentityDeletion/packages.lock.json | 17 +- .../packages.lock.json | 18 +- .../Tests/ActualDeletionWorkerTests.cs | 2 +- .../packages.lock.json | 18 +- .../VerticalSliceArchitecture.cs | 5 +- Backbone.Tests.ArchUnit/packages.lock.json | 18 +- Backbone.slnx | 4 +- .../IIdentityStatusProvider.cs | 6 + .../ApplicationServiceCollectionExtensions.cs | 1 + .../GetIdentity/IdentityStatusProvider.cs | 14 + .../packages.lock.json | 34 +- .../IRelationshipTemplatesRepository.cs | 3 +- .../IRelationshipsRepository.cs | 2 +- .../ListRelationshipTemplatesQueryItem.cs | 7 + .../Relationships.Abstractions.csproj | 6 + .../packages.lock.json | 22 - .../Relationships.Application.csproj | 17 - .../ExecuteHousekeepingCommand.cs | 5 - .../TerminateRelationshipCommand.cs | 9 - .../GetRelationship/GetRelationshipQuery.cs | 9 - .../MigrationOperations.cs | 2 +- .../packages.lock.json | 34 +- .../MigrationOperations.cs | 2 +- .../packages.lock.json | 34 +- .../Persistence}/ConstraintNames.cs | 2 +- .../RelationshipTemplatesRepository.cs | 3 +- .../Repository/RelationshipsRepository.cs | 4 +- .../IServiceCollectionExtensions.cs | 2 +- .../Relationships.Infrastructure.csproj | 2 +- .../packages.lock.json | 32 +- .../ApplicationConfiguration.cs | 2 +- .../ApplicationErrors.cs | 2 +- ...ApplicationServiceCollectionExtensions.cs} | 8 +- .../FeatureFlagsOfIdentityChanged/Handler.cs} | 8 +- .../DomainEvents/IdentityDeleted/Handler.cs} | 4 +- .../IdentityDeletionCancelled/Handler.cs} | 4 +- .../IdentityToBeDeleted/Handler.cs} | 4 +- .../DeleteIdentity}/IdentityDeleter.cs | 12 +- .../Endpoint.cs | 27 + .../Handler.cs | 16 + .../Query.cs | 5 + .../Response.cs | 15 + .../Command.cs} | 2 +- .../Handler.cs | 4 +- .../Validator.cs | 2 +- .../Command.cs} | 2 +- .../Handler.cs | 4 +- .../Validator.cs | 2 +- .../CreateRelationshipTemplate/Command.cs} | 2 +- .../CreateRelationshipTemplate/Endpoint.cs | 29 + .../CreateRelationshipTemplate/Handler.cs | 4 +- .../CreateRelationshipTemplate/Response.cs} | 2 +- .../CreateRelationshipTemplate/Validator.cs | 4 +- .../DeleteRelationshipTemplate/Command.cs} | 2 +- .../DeleteRelationshipTemplate/Endpoint.cs | 27 + .../DeleteRelationshipTemplate/Handler.cs | 4 +- .../DeleteRelationshipTemplate/Validator.cs | 2 +- .../Command.cs} | 2 +- .../Handler.cs | 4 +- .../Validator.cs | 2 +- .../GetRelationshipTemplate/Endpoint.cs | 29 + .../GetRelationshipTemplate/Handler.cs | 6 +- .../GetRelationshipTemplate/Query.cs} | 4 +- .../GetRelationshipTemplate/Validator.cs | 2 +- .../ListRelationshipTemplates/Endpoint.cs | 39 + .../ListRelationshipTemplates/Handler.cs | 4 +- .../OpenApiOperationFilter.cs | 23 + .../ListRelationshipTemplates/Query.cs} | 8 +- .../ListRelationshipTemplates/Response.cs} | 4 +- .../TemplateQueryItems.cs | 33 + .../ListRelationshipTemplates/Validator.cs | 3 +- .../AcceptRelationship/Command.cs} | 2 +- .../AcceptRelationship/Endpoint.cs | 27 + .../AcceptRelationship/Handler.cs | 4 +- .../AcceptRelationship/Request.cs | 6 + .../AcceptRelationship/Response.cs} | 4 +- .../AcceptRelationship/Validator.cs | 2 +- .../Command.cs} | 2 +- .../Endpoint.cs | 27 + .../AcceptRelationshipReactivation/Handler.cs | 4 +- .../Response.cs} | 4 +- .../Validator.cs | 2 +- .../CanEstablishRelationshipQueryValidator.cs | 2 +- .../CanEstablishRelationship/Endpoint.cs | 29 + .../CanEstablishRelationship/Handler.cs | 4 +- .../CanEstablishRelationship/Query.cs} | 2 +- .../CanEstablishRelationship/Response.cs} | 2 +- .../CreateRelationship/Command.cs} | 2 +- .../CreateRelationship/Endpoint.cs | 37 + .../CreateRelationship/Handler.cs | 6 +- .../CreateRelationship/Response.cs} | 4 +- .../CreateRelationship/Validator.cs | 2 +- .../Command.cs} | 2 +- .../Handler.cs | 4 +- .../Validator.cs | 2 +- .../DecomposeRelationship/Command.cs} | 2 +- .../DecomposeRelationship/Endpoint.cs | 27 + .../DecomposeRelationship/Handler.cs | 4 +- .../DecomposeRelationship/Response.cs} | 4 +- .../DecomposeRelationship/Validator.cs | 2 +- .../ExecuteHousekeeping/Command.cs | 5 + .../ExecuteHousekeeping/Handler.cs | 8 +- .../Handler.cs | 4 +- .../Query.cs} | 2 +- .../Response.cs} | 2 +- .../Validator.cs | 2 +- .../Relationships/GetRelationship/Endpoint.cs | 28 + .../Relationships}/GetRelationship/Handler.cs | 6 +- .../Relationships/GetRelationship/Query.cs | 9 + .../GetRelationship/Validator.cs | 2 +- .../ListRelationships/Endpoint.cs | 35 + .../ListRelationships/Handler.cs | 4 +- .../Relationships/ListRelationships/Query.cs} | 2 +- .../ListRelationships/Response.cs} | 4 +- .../ListRelationships/Validator.cs | 2 +- .../ListRelationshipsOfIdentity/Handler.cs | 4 +- .../ListRelationshipsOfIdentity/Query.cs} | 2 +- .../ListRelationshipsOfIdentity/Response.cs} | 2 +- .../ListRelationshipsOfIdentity/Validator.cs | 2 +- .../RejectRelationship/Command.cs} | 2 +- .../RejectRelationship/Endpoint.cs | 27 + .../RejectRelationship/Handler.cs | 4 +- .../RejectRelationship/Request.cs | 6 + .../RejectRelationship/Response.cs} | 4 +- .../RejectRelationship/Validator.cs | 2 +- .../Command.cs} | 2 +- .../Endpoint.cs | 27 + .../RejectRelationshipReactivation/Handler.cs | 4 +- .../Response.cs} | 4 +- .../Validator.cs | 2 +- .../Command.cs} | 2 +- .../Endpoint.cs | 27 + .../Handler.cs | 4 +- .../Response.cs} | 4 +- .../Validator.cs | 2 +- .../RevokeRelationship/Command.cs} | 2 +- .../RevokeRelationship/Endpoint.cs | 27 + .../RevokeRelationship/Handler.cs | 4 +- .../RevokeRelationship/Request.cs | 6 + .../RevokeRelationship/Response.cs} | 4 +- .../RevokeRelationship/Validator.cs | 2 +- .../Command.cs} | 2 +- .../Endpoint.cs | 27 + .../RevokeRelationshipReactivation/Handler.cs | 4 +- .../Response.cs} | 4 +- .../Validator.cs | 2 +- .../TerminateRelationship/Command.cs | 9 + .../TerminateRelationship/Endpoint.cs | 28 + .../TerminateRelationship/Handler.cs | 8 +- .../TerminateRelationship/Validator.cs | 2 +- .../Shared}/RelationshipAuditLogEntryDTO.cs | 2 +- .../Features/Shared}/RelationshipDTO.cs | 2 +- .../Shared}/RelationshipMetadataDTO.cs | 2 +- .../Shared}/RelationshipTemplateDTO.cs | 2 +- .../Relationships.Module.csproj | 5 +- .../RelationshipsEndpointExtensions.cs | 53 + .../RelationshipsEventBusExtensions.cs} | 12 +- .../RelationshipsModule.cs | 4 +- .../Relationships.Module/packages.lock.json | 32 +- .../GlobalUsings.cs | 1 - .../packages.lock.json | 34 +- ...IdentityDeletedDomainEventHandler.Tests.cs | 8 +- ...letionCancelledDomainEventHandler.Tests.cs | 8 +- ...tityToBeDeletedDomainEventHandler.Tests.cs | 8 +- .../GlobalUsings.cs | 1 + .../Identities/IdentityDeleter.Tests.cs | 12 +- .../Validator.Tests.cs | 4 +- .../Handler.Tests.cs | 6 +- .../Validator.Tests.cs | 5 +- .../Relationships.Module.Tests.csproj} | 2 +- .../Handler.Tests.cs | 6 +- .../ListRelationshipsValidator.Tests.cs | 4 +- .../TestHelpers/TestData.cs | 2 +- .../packages.lock.json | 1093 +++++++++++++++-- 195 files changed, 2042 insertions(+), 1038 deletions(-) delete mode 100644 Applications/ConsumerApi/src/Controllers/Relationships/PublicRelationshipTemplateReferencesController.cs delete mode 100644 Applications/ConsumerApi/src/Controllers/Relationships/RelationshipTemplatesController.cs delete mode 100644 Applications/ConsumerApi/src/Controllers/Relationships/RelationshipsController.cs create mode 100644 Modules/Devices/src/Devices.Contracts/IIdentityStatusProvider.cs create mode 100644 Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/IdentityStatusProvider.cs rename Modules/Relationships/src/{Relationships.Application/Infrastructure/Persistence/Repository => Relationships.Abstractions}/IRelationshipTemplatesRepository.cs (91%) rename Modules/Relationships/src/{Relationships.Application/Infrastructure/Persistence/Repository => Relationships.Abstractions}/IRelationshipsRepository.cs (94%) create mode 100644 Modules/Relationships/src/Relationships.Abstractions/ListRelationshipTemplatesQueryItem.cs create mode 100644 Modules/Relationships/src/Relationships.Abstractions/Relationships.Abstractions.csproj rename Modules/Relationships/src/{Relationships.Application => Relationships.Abstractions}/packages.lock.json (98%) delete mode 100644 Modules/Relationships/src/Relationships.Application/Relationships.Application.csproj delete mode 100644 Modules/Relationships/src/Relationships.Application/Relationships/Commands/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs delete mode 100644 Modules/Relationships/src/Relationships.Application/Relationships/Commands/TerminateRelationship/TerminateRelationshipCommand.cs delete mode 100644 Modules/Relationships/src/Relationships.Application/Relationships/Queries/GetRelationship/GetRelationshipQuery.cs rename Modules/Relationships/src/{Relationships.Application/Infrastructure => Relationships.Infrastructure/Persistence}/ConstraintNames.cs (71%) rename Modules/Relationships/src/{Relationships.Application => Relationships.Module}/ApplicationConfiguration.cs (85%) rename Modules/Relationships/src/{Relationships.Application => Relationships.Module}/ApplicationErrors.cs (94%) rename Modules/Relationships/src/{Relationships.Application/Extensions/IServiceCollectionExtensions.cs => Relationships.Module/ApplicationServiceCollectionExtensions.cs} (75%) rename Modules/Relationships/src/{Relationships.Application/DomainEvents/Incoming/FeatureFlagsOfIdentityChanged/FeatureFlagsOfIdentityChangedDomainEventHandler.cs => Relationships.Module/Features/DomainEvents/FeatureFlagsOfIdentityChanged/Handler.cs} (90%) rename Modules/Relationships/src/{Relationships.Application/DomainEvents/Incoming/IdentityDeleted/IdentityDeletedDomainEventHandler.cs => Relationships.Module/Features/DomainEvents/IdentityDeleted/Handler.cs} (90%) rename Modules/Relationships/src/{Relationships.Application/DomainEvents/Incoming/IdentityDeletionCancelled/IdentityDeletionCancelledDomainEventHandler.cs => Relationships.Module/Features/DomainEvents/IdentityDeletionCancelled/Handler.cs} (90%) rename Modules/Relationships/src/{Relationships.Application/DomainEvents/Incoming/IdentityToBeDeleted/IdentityToBeDeletedDomainEventHandler.cs => Relationships.Module/Features/DomainEvents/IdentityToBeDeleted/Handler.cs} (91%) rename Modules/Relationships/src/{Relationships.Application/Identities => Relationships.Module/Features/Identities/DeleteIdentity}/IdentityDeleter.cs (67%) create mode 100644 Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Endpoint.cs create mode 100644 Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Handler.cs create mode 100644 Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Query.cs create mode 100644 Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Response.cs rename Modules/Relationships/src/{Relationships.Application/RelationshipTemplates/Commands/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentityCommand.cs => Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Command.cs} (54%) rename Modules/Relationships/src/{Relationships.Application/RelationshipTemplates/Commands => Relationships.Module/Features/RelationshipTemplates}/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Handler.cs (84%) rename Modules/Relationships/src/{Relationships.Application/RelationshipTemplates/Commands => Relationships.Module/Features/RelationshipTemplates}/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Validator.cs (74%) rename Modules/Relationships/src/{Relationships.Application/RelationshipTemplates/Commands/AnonymizeRelationshipTemplatesForIdentity/AnonymizeRelationshipTemplatesForIdentityCommand.cs => Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplatesForIdentity/Command.cs} (54%) rename Modules/Relationships/src/{Relationships.Application/RelationshipTemplates/Commands => Relationships.Module/Features/RelationshipTemplates}/AnonymizeRelationshipTemplatesForIdentity/Handler.cs (85%) rename Modules/Relationships/src/{Relationships.Application/RelationshipTemplates/Commands => Relationships.Module/Features/RelationshipTemplates}/AnonymizeRelationshipTemplatesForIdentity/Validator.cs (75%) rename Modules/Relationships/src/{Relationships.Application/RelationshipTemplates/Commands/CreateRelationshipTemplate/CreateRelationshipTemplateCommand.cs => Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Command.cs} (80%) create mode 100644 Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Endpoint.cs rename Modules/Relationships/src/{Relationships.Application/RelationshipTemplates/Commands => Relationships.Module/Features/RelationshipTemplates}/CreateRelationshipTemplate/Handler.cs (87%) rename Modules/Relationships/src/{Relationships.Application/RelationshipTemplates/Commands/CreateRelationshipTemplate/CreateRelationshipTemplateResponse.cs => Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Response.cs} (78%) rename Modules/Relationships/src/{Relationships.Application/RelationshipTemplates/Commands => Relationships.Module/Features/RelationshipTemplates}/CreateRelationshipTemplate/Validator.cs (92%) rename Modules/Relationships/src/{Relationships.Application/RelationshipTemplates/Commands/DeleteRelationshipTemplate/DeleteRelationshipTemplateCommand.cs => Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Command.cs} (53%) create mode 100644 Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Endpoint.cs rename Modules/Relationships/src/{Relationships.Application/RelationshipTemplates/Commands => Relationships.Module/Features/RelationshipTemplates}/DeleteRelationshipTemplate/Handler.cs (86%) rename Modules/Relationships/src/{Relationships.Application/RelationshipTemplates/Commands => Relationships.Module/Features/RelationshipTemplates}/DeleteRelationshipTemplate/Validator.cs (77%) rename Modules/Relationships/src/{Relationships.Application/RelationshipTemplates/Commands/DeleteRelationshipTemplatesOfIdentity/DeleteRelationshipTemplatesOfIdentityCommand.cs => Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/Command.cs} (54%) rename Modules/Relationships/src/{Relationships.Application/RelationshipTemplates/Commands => Relationships.Module/Features/RelationshipTemplates}/DeleteRelationshipTemplatesOfIdentity/Handler.cs (77%) rename Modules/Relationships/src/{Relationships.Application/RelationshipTemplates/Commands => Relationships.Module/Features/RelationshipTemplates}/DeleteRelationshipTemplatesOfIdentity/Validator.cs (75%) create mode 100644 Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Endpoint.cs rename Modules/Relationships/src/{Relationships.Application/RelationshipTemplates/Queries => Relationships.Module/Features/RelationshipTemplates}/GetRelationshipTemplate/Handler.cs (87%) rename Modules/Relationships/src/{Relationships.Application/RelationshipTemplates/Queries/GetRelationshipTemplate/GetRelationshipTemplateQuery.cs => Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Query.cs} (50%) rename Modules/Relationships/src/{Relationships.Application/RelationshipTemplates/Queries => Relationships.Module/Features/RelationshipTemplates}/GetRelationshipTemplate/Validator.cs (83%) create mode 100644 Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Endpoint.cs rename Modules/Relationships/src/{Relationships.Application/RelationshipTemplates/Queries => Relationships.Module/Features/RelationshipTemplates}/ListRelationshipTemplates/Handler.cs (84%) create mode 100644 Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/OpenApiOperationFilter.cs rename Modules/Relationships/src/{Relationships.Application/RelationshipTemplates/Queries/ListRelationshipTemplates/ListRelationshipTemplatesQuery.cs => Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Query.cs} (56%) rename Modules/Relationships/src/{Relationships.Application/RelationshipTemplates/Queries/ListRelationshipTemplates/ListRelationshipTemplatesResponse.cs => Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Response.cs} (78%) create mode 100644 Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/TemplateQueryItems.cs rename Modules/Relationships/src/{Relationships.Application/RelationshipTemplates/Queries => Relationships.Module/Features/RelationshipTemplates}/ListRelationshipTemplates/Validator.cs (86%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands/AcceptRelationship/AcceptRelationshipCommand.cs => Relationships.Module/Features/Relationships/AcceptRelationship/Command.cs} (77%) create mode 100644 Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Endpoint.cs rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands => Relationships.Module/Features/Relationships}/AcceptRelationship/Handler.cs (88%) create mode 100644 Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Request.cs rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands/AcceptRelationship/AcceptRelationshipResponse.cs => Relationships.Module/Features/Relationships/AcceptRelationship/Response.cs} (58%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands => Relationships.Module/Features/Relationships}/AcceptRelationship/Validator.cs (78%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands/AcceptRelationshipReactivation/AcceptRelationshipReactivationCommand.cs => Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Command.cs} (62%) create mode 100644 Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Endpoint.cs rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands => Relationships.Module/Features/Relationships}/AcceptRelationshipReactivation/Handler.cs (87%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands/AcceptRelationshipReactivation/AcceptRelationshipReactivationResponse.cs => Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Response.cs} (59%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands => Relationships.Module/Features/Relationships}/AcceptRelationshipReactivation/Validator.cs (77%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Queries => Relationships.Module/Features/Relationships}/CanEstablishRelationship/CanEstablishRelationshipQueryValidator.cs (78%) create mode 100644 Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Endpoint.cs rename Modules/Relationships/src/{Relationships.Application/Relationships/Queries => Relationships.Module/Features/Relationships}/CanEstablishRelationship/Handler.cs (85%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Queries/CanEstablishRelationship/CanEstablishRelationshipQuery.cs => Relationships.Module/Features/Relationships/CanEstablishRelationship/Query.cs} (62%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Queries/CanEstablishRelationship/CanEstablishRelationshipResponse.cs => Relationships.Module/Features/Relationships/CanEstablishRelationship/Response.cs} (58%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands/CreateRelationship/CreateRelationshipCommand.cs => Relationships.Module/Features/Relationships/CreateRelationship/Command.cs} (76%) create mode 100644 Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Endpoint.cs rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands => Relationships.Module/Features/Relationships}/CreateRelationship/Handler.cs (93%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands/CreateRelationship/CreateRelationshipResponse.cs => Relationships.Module/Features/Relationships/CreateRelationship/Response.cs} (59%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands => Relationships.Module/Features/Relationships}/CreateRelationship/Validator.cs (86%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands/DecomposeAndAnonymizeRelationshipsOfIdentity/DecomposeAndAnonymizeRelationshipsOfIdentityCommand.cs => Relationships.Module/Features/Relationships/DecomposeAndAnonymizeRelationshipsOfIdentity/Command.cs} (55%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands => Relationships.Module/Features/Relationships}/DecomposeAndAnonymizeRelationshipsOfIdentity/Handler.cs (87%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands => Relationships.Module/Features/Relationships}/DecomposeAndAnonymizeRelationshipsOfIdentity/Validator.cs (76%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands/DecomposeRelationship/DecomposeRelationshipCommand.cs => Relationships.Module/Features/Relationships/DecomposeRelationship/Command.cs} (62%) create mode 100644 Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Endpoint.cs rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands => Relationships.Module/Features/Relationships}/DecomposeRelationship/Handler.cs (87%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands/DecomposeRelationship/DecomposeRelationshipResponse.cs => Relationships.Module/Features/Relationships/DecomposeRelationship/Response.cs} (58%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands => Relationships.Module/Features/Relationships}/DecomposeRelationship/Validator.cs (78%) create mode 100644 Modules/Relationships/src/Relationships.Module/Features/Relationships/ExecuteHousekeeping/Command.cs rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands => Relationships.Module/Features/Relationships}/ExecuteHousekeeping/Handler.cs (85%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Queries => Relationships.Module/Features/Relationships}/GetPeerOfActiveIdentityInRelationship/Handler.cs (84%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Queries/GetPeerOfActiveIdentityInRelationship/GetPeerOfActiveIdentityInRelationshipQuery.cs => Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Query.cs} (61%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Queries/GetPeerOfActiveIdentityInRelationship/GetPeerOfActiveIdentityInRelationshipResponse.cs => Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Response.cs} (50%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Queries => Relationships.Module/Features/Relationships}/GetPeerOfActiveIdentityInRelationship/Validator.cs (76%) create mode 100644 Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Endpoint.cs rename Modules/Relationships/src/{Relationships.Application/Relationships/Queries => Relationships.Module/Features/Relationships}/GetRelationship/Handler.cs (81%) create mode 100644 Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Query.cs rename Modules/Relationships/src/{Relationships.Application/Relationships/Queries => Relationships.Module/Features/Relationships}/GetRelationship/Validator.cs (78%) create mode 100644 Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Endpoint.cs rename Modules/Relationships/src/{Relationships.Application/Relationships/Queries => Relationships.Module/Features/Relationships}/ListRelationships/Handler.cs (85%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Queries/ListRelationships/ListRelationshipsQuery.cs => Relationships.Module/Features/Relationships/ListRelationships/Query.cs} (74%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Queries/ListRelationships/ListRelationshipsResponse.cs => Relationships.Module/Features/Relationships/ListRelationships/Response.cs} (78%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Queries => Relationships.Module/Features/Relationships}/ListRelationships/Validator.cs (89%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Queries => Relationships.Module/Features/Relationships}/ListRelationshipsOfIdentity/Handler.cs (80%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Queries/ListRelationshipsOfIdentity/ListRelationshipsOfIdentityQuery.cs => Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Query.cs} (62%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Queries/ListRelationshipsOfIdentity/ListRelationshipsOfIdentityResponse.cs => Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Response.cs} (76%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Queries => Relationships.Module/Features/Relationships}/ListRelationshipsOfIdentity/Validator.cs (77%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands/RejectRelationship/RejectRelationshipCommand.cs => Relationships.Module/Features/Relationships/RejectRelationship/Command.cs} (69%) create mode 100644 Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Endpoint.cs rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands => Relationships.Module/Features/Relationships}/RejectRelationship/Handler.cs (89%) create mode 100644 Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Request.cs rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands/RejectRelationship/RejectRelationshipResponse.cs => Relationships.Module/Features/Relationships/RejectRelationship/Response.cs} (58%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands => Relationships.Module/Features/Relationships}/RejectRelationship/Validator.cs (78%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands/RejectRelationshipReactivation/RejectRelationshipReactivationCommand.cs => Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Command.cs} (62%) create mode 100644 Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Endpoint.cs rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands => Relationships.Module/Features/Relationships}/RejectRelationshipReactivation/Handler.cs (87%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands/RejectRelationshipReactivation/RejectRelationshipReactivationResponse.cs => Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Response.cs} (59%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands => Relationships.Module/Features/Relationships}/RejectRelationshipReactivation/Validator.cs (77%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands/RequestRelationshipReactivation/RequestRelationshipReactivationCommand.cs => Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Command.cs} (62%) create mode 100644 Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Endpoint.cs rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands => Relationships.Module/Features/Relationships}/RequestRelationshipReactivation/Handler.cs (87%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands/RequestRelationshipReactivation/RequestRelationshipReactivationResponse.cs => Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Response.cs} (59%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands => Relationships.Module/Features/Relationships}/RequestRelationshipReactivation/Validator.cs (77%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands/RevokeRelationship/RevokeRelationshipCommand.cs => Relationships.Module/Features/Relationships/RevokeRelationship/Command.cs} (69%) create mode 100644 Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Endpoint.cs rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands => Relationships.Module/Features/Relationships}/RevokeRelationship/Handler.cs (88%) create mode 100644 Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Request.cs rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands/RevokeRelationship/RevokeRelationshipResponse.cs => Relationships.Module/Features/Relationships/RevokeRelationship/Response.cs} (58%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands => Relationships.Module/Features/Relationships}/RevokeRelationship/Validator.cs (78%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands/RevokeRelationshipReactivation/RevokeRelationshipReactivationCommand.cs => Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Command.cs} (62%) create mode 100644 Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Endpoint.cs rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands => Relationships.Module/Features/Relationships}/RevokeRelationshipReactivation/Handler.cs (87%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands/RevokeRelationshipReactivation/RevokeRelationshipReactivationResponse.cs => Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Response.cs} (58%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands => Relationships.Module/Features/Relationships}/RevokeRelationshipReactivation/Validator.cs (77%) create mode 100644 Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Command.cs create mode 100644 Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Endpoint.cs rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands => Relationships.Module/Features/Relationships}/TerminateRelationship/Handler.cs (78%) rename Modules/Relationships/src/{Relationships.Application/Relationships/Commands => Relationships.Module/Features/Relationships}/TerminateRelationship/Validator.cs (78%) rename Modules/Relationships/src/{Relationships.Application/Relationships/DTOs => Relationships.Module/Features/Shared}/RelationshipAuditLogEntryDTO.cs (91%) rename Modules/Relationships/src/{Relationships.Application/Relationships/DTOs => Relationships.Module/Features/Shared}/RelationshipDTO.cs (86%) rename Modules/Relationships/src/{Relationships.Application/Relationships/DTOs => Relationships.Module/Features/Shared}/RelationshipMetadataDTO.cs (96%) rename Modules/Relationships/src/{Relationships.Application/Relationships/DTOs => Relationships.Module/Features/Shared}/RelationshipTemplateDTO.cs (93%) create mode 100644 Modules/Relationships/src/Relationships.Module/RelationshipsEndpointExtensions.cs rename Modules/Relationships/src/{Relationships.Application/Extensions/IEventBusExtensions.cs => Relationships.Module/RelationshipsEventBusExtensions.cs} (64%) delete mode 100644 Modules/Relationships/test/Relationships.Application.Tests/GlobalUsings.cs rename Modules/Relationships/test/{Relationships.Application.Tests => Relationships.Module.Tests}/DomainEvents/Incoming/IdentityDeleted/IdentityDeletedDomainEventHandler.Tests.cs (88%) rename Modules/Relationships/test/{Relationships.Application.Tests => Relationships.Module.Tests}/DomainEvents/Incoming/IdentityDeletionCancelled/IdentityDeletionCancelledDomainEventHandler.Tests.cs (88%) rename Modules/Relationships/test/{Relationships.Application.Tests => Relationships.Module.Tests}/DomainEvents/Incoming/IdentityToBeDeleted/IdentityToBeDeletedDomainEventHandler.Tests.cs (89%) create mode 100644 Modules/Relationships/test/Relationships.Module.Tests/GlobalUsings.cs rename Modules/Relationships/test/{Relationships.Application.Tests => Relationships.Module.Tests}/Identities/IdentityDeleter.Tests.cs (79%) rename Modules/Relationships/test/{Relationships.Application.Tests => Relationships.Module.Tests}/RelationshipTemplates/Commands/CreateRelationshipTemplate/Validator.Tests.cs (93%) rename Modules/Relationships/test/{Relationships.Application.Tests => Relationships.Module.Tests}/RelationshipTemplates/Commands/DeleteRelationshipTemplatesOfIdentity/Handler.Tests.cs (71%) rename Modules/Relationships/test/{Relationships.Application.Tests => Relationships.Module.Tests}/RelationshipTemplates/Queries/ListRelationshipTemplates/Validator.Tests.cs (87%) rename Modules/Relationships/test/{Relationships.Application.Tests/Relationships.Application.Tests.csproj => Relationships.Module.Tests/Relationships.Module.Tests.csproj} (84%) rename Modules/Relationships/test/{Relationships.Application.Tests => Relationships.Module.Tests}/Relationships/Commands/DecomposeAndAnonymizeRelationshipsOfIdentity/Handler.Tests.cs (72%) rename Modules/Relationships/test/{Relationships.Application.Tests => Relationships.Module.Tests}/Relationships/Queries/ListRelationships/ListRelationshipsValidator.Tests.cs (90%) rename Modules/Relationships/test/{Relationships.Application.Tests => Relationships.Module.Tests}/TestHelpers/TestData.cs (96%) rename Modules/Relationships/test/{Relationships.Application.Tests => Relationships.Module.Tests}/packages.lock.json (59%) diff --git a/Applications/ConsumerApi/src/Controllers/Relationships/PublicRelationshipTemplateReferencesController.cs b/Applications/ConsumerApi/src/Controllers/Relationships/PublicRelationshipTemplateReferencesController.cs deleted file mode 100644 index a040ebe71a..0000000000 --- a/Applications/ConsumerApi/src/Controllers/Relationships/PublicRelationshipTemplateReferencesController.cs +++ /dev/null @@ -1,42 +0,0 @@ -using System.ComponentModel.DataAnnotations; -using Backbone.BuildingBlocks.API.Mvc; -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; -using MediatR; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; - -namespace Backbone.ConsumerApi.Controllers.Relationships; - -[Route("api/poc/[controller]")] -[Authorize("OpenIddict.Validation.AspNetCore")] -[ApiExplorerSettings(IgnoreApi = true)] // don't show the endpoints of this controller in the API docs as it's just a PoC -public class PublicRelationshipTemplateReferencesController : ApiControllerBase -{ - private readonly Dictionary> _publicRelationshipTemplateReferenceDefinitions = []; - - public PublicRelationshipTemplateReferencesController(IMediator mediator, IConfiguration configuration) : base(mediator) - { - configuration.GetSection("Modules:Relationships:PublicRelationshipTemplateReferences").Bind(_publicRelationshipTemplateReferenceDefinitions); - } - - [HttpGet] - public IActionResult ListPublicRelationshipTemplateReferences(IUserContext userContext) - { - var clientId = userContext.GetClientId(); - var response = _publicRelationshipTemplateReferenceDefinitions.GetValueOrDefault(clientId) ?? []; - - return Ok(response); - } -} - -public class PublicRelationshipTemplateReferenceDefinition -{ - [Required] - public string Title { get; set; } = string.Empty; - - [Required] - public string Description { get; set; } = string.Empty; - - [Required] - public string TruncatedReference { get; set; } = string.Empty; -} diff --git a/Applications/ConsumerApi/src/Controllers/Relationships/RelationshipTemplatesController.cs b/Applications/ConsumerApi/src/Controllers/Relationships/RelationshipTemplatesController.cs deleted file mode 100644 index 752d1708b1..0000000000 --- a/Applications/ConsumerApi/src/Controllers/Relationships/RelationshipTemplatesController.cs +++ /dev/null @@ -1,82 +0,0 @@ -using Backbone.BuildingBlocks.API; -using Backbone.BuildingBlocks.API.Mvc; -using Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; -using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.ConsumerApi.Versions; -using Backbone.Modules.Relationships.Application; -using Backbone.Modules.Relationships.Application.Relationships.DTOs; -using Backbone.Modules.Relationships.Application.RelationshipTemplates.Commands.CreateRelationshipTemplate; -using Backbone.Modules.Relationships.Application.RelationshipTemplates.Commands.DeleteRelationshipTemplate; -using Backbone.Modules.Relationships.Application.RelationshipTemplates.Queries.GetRelationshipTemplate; -using Backbone.Modules.Relationships.Application.RelationshipTemplates.Queries.ListRelationshipTemplates; -using MediatR; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Options; -using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; - -namespace Backbone.ConsumerApi.Controllers.Relationships; - -[V2] -[Route("api/v{v:apiVersion}/[controller]")] -[Authorize("OpenIddict.Validation.AspNetCore")] -public class RelationshipTemplatesController : ApiControllerBase -{ - private readonly ApplicationConfiguration _configuration; - - public RelationshipTemplatesController(IMediator mediator, IOptions options) : base(mediator) - { - _configuration = options.Value; - } - - [HttpGet("{id}")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status404NotFound)] - public async Task GetById(string id, [FromQuery] byte[]? password, CancellationToken cancellationToken) - { - var template = await _mediator.Send(new GetRelationshipTemplateQuery { Id = id, Password = password }, cancellationToken); - return Ok(template); - } - - [HttpGet] - [ProducesResponseType(typeof(PagedHttpResponseEnvelope), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - public async Task List([FromQuery] PaginationFilter paginationFilter, [FromQuery] ListRelationshipTemplatesQueryItem[]? templates, - [FromQuery] IEnumerable ids, CancellationToken cancellationToken) - { - // We keep this code for backwards compatibility reasons. In a few months the `templates` - // parameter will become required, and the fallback to `ids` will be removed. - templates = templates is { Length: > 0 } ? templates : ids.Select(id => new ListRelationshipTemplatesQueryItem { Id = id }).ToArray(); - - var request = new ListRelationshipTemplatesQuery { PaginationFilter = paginationFilter, QueryItems = templates.ToList() }; - - request.PaginationFilter.PageSize ??= _configuration.Pagination.DefaultPageSize; - - if (paginationFilter.PageSize > _configuration.Pagination.MaxPageSize) - throw new ApplicationException(GenericApplicationErrors.Validation.InvalidPageSize(_configuration.Pagination.MaxPageSize)); - - var template = await _mediator.Send(request, cancellationToken); - return Paged(template); - } - - [HttpPost] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status201Created)] - [ProducesError(StatusCodes.Status400BadRequest)] - public async Task Create(CreateRelationshipTemplateCommand request, CancellationToken cancellationToken) - { - var response = await _mediator.Send(request, cancellationToken); - return CreatedAtAction(nameof(GetById), new { id = response.Id }, response); - } - - [HttpDelete("{id}")] - [ProducesResponseType(StatusCodes.Status204NoContent)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status404NotFound)] - public async Task Delete(string id, CancellationToken cancellationToken) - { - await _mediator.Send(new DeleteRelationshipTemplateCommand { Id = id }, cancellationToken); - return NoContent(); - } -} diff --git a/Applications/ConsumerApi/src/Controllers/Relationships/RelationshipsController.cs b/Applications/ConsumerApi/src/Controllers/Relationships/RelationshipsController.cs deleted file mode 100644 index a0dbda1aa0..0000000000 --- a/Applications/ConsumerApi/src/Controllers/Relationships/RelationshipsController.cs +++ /dev/null @@ -1,209 +0,0 @@ -using Backbone.BuildingBlocks.API; -using Backbone.BuildingBlocks.API.Mvc; -using Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; -using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.ConsumerApi.Versions; -using Backbone.Modules.Devices.Module.Features.Identities.GetIdentity; -using Backbone.Modules.Devices.Domain.Entities.Identities; -using Backbone.Modules.Relationships.Application; -using Backbone.Modules.Relationships.Application.Relationships.Commands.AcceptRelationship; -using Backbone.Modules.Relationships.Application.Relationships.Commands.AcceptRelationshipReactivation; -using Backbone.Modules.Relationships.Application.Relationships.Commands.CreateRelationship; -using Backbone.Modules.Relationships.Application.Relationships.Commands.DecomposeRelationship; -using Backbone.Modules.Relationships.Application.Relationships.Commands.RejectRelationship; -using Backbone.Modules.Relationships.Application.Relationships.Commands.RejectRelationshipReactivation; -using Backbone.Modules.Relationships.Application.Relationships.Commands.RequestRelationshipReactivation; -using Backbone.Modules.Relationships.Application.Relationships.Commands.RevokeRelationship; -using Backbone.Modules.Relationships.Application.Relationships.Commands.RevokeRelationshipReactivation; -using Backbone.Modules.Relationships.Application.Relationships.Commands.TerminateRelationship; -using Backbone.Modules.Relationships.Application.Relationships.DTOs; -using Backbone.Modules.Relationships.Application.Relationships.Queries.CanEstablishRelationship; -using Backbone.Modules.Relationships.Application.Relationships.Queries.GetRelationship; -using Backbone.Modules.Relationships.Application.Relationships.Queries.ListRelationships; -using Backbone.Modules.Relationships.Application.RelationshipTemplates.Queries.GetRelationshipTemplate; -using MediatR; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Options; -using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; - -namespace Backbone.ConsumerApi.Controllers.Relationships; - -[V2] -[Route("api/v{v:apiVersion}/[controller]")] -[Authorize("OpenIddict.Validation.AspNetCore")] -public class RelationshipsController : ApiControllerBase -{ - private readonly ApplicationConfiguration _configuration; - - public RelationshipsController(IMediator mediator, IOptions options) : base(mediator) - { - _configuration = options.Value; - } - - [HttpGet("{id}")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status404NotFound)] - public async Task GetRelationship(string id, CancellationToken cancellationToken) - { - var relationship = await _mediator.Send(new GetRelationshipQuery { Id = id }, cancellationToken); - return Ok(relationship); - } - - [HttpGet] - [ProducesResponseType(typeof(PagedHttpResponseEnvelope), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - public async Task ListRelationships([FromQuery] PaginationFilter paginationFilter, [FromQuery] IEnumerable ids, CancellationToken cancellationToken) - { - var request = new ListRelationshipsQuery { PaginationFilter = paginationFilter, Ids = ids.ToList() }; - - request.PaginationFilter.PageSize ??= _configuration.Pagination.DefaultPageSize; - - if (paginationFilter.PageSize > _configuration.Pagination.MaxPageSize) - throw new ApplicationException(GenericApplicationErrors.Validation.InvalidPageSize(_configuration.Pagination.MaxPageSize)); - - var relationships = await _mediator.Send(request, cancellationToken); - return Paged(relationships); - } - - [HttpPost] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status201Created)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status404NotFound)] - public async Task CreateRelationship(CreateRelationshipCommand request, CancellationToken cancellationToken) - { - var relationshipTemplate = await _mediator.Send(new GetRelationshipTemplateQuery { Id = request.RelationshipTemplateId }, cancellationToken); - await EnsurePeerIsActive(relationshipTemplate.CreatedBy, cancellationToken); - - var relationship = await _mediator.Send(request, cancellationToken); - return Created(relationship); - } - - [HttpPut("{id}/Accept")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status404NotFound)] - public async Task AcceptRelationship([FromRoute] string id, [FromBody] AcceptRelationshipRequest request, CancellationToken cancellationToken) - { - var response = await _mediator.Send(new AcceptRelationshipCommand { RelationshipId = id, CreationResponseContent = request.CreationResponseContent }, cancellationToken); - return Ok(response); - } - - [HttpPut("{id}/Reject")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status404NotFound)] - public async Task RejectRelationship([FromRoute] string id, [FromBody] RejectRelationshipRequest request, CancellationToken cancellationToken) - { - var response = await _mediator.Send(new RejectRelationshipCommand { RelationshipId = id, CreationResponseContent = request.CreationResponseContent }, cancellationToken); - return Ok(response); - } - - [HttpPut("{id}/Revoke")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status404NotFound)] - public async Task RevokeRelationship([FromRoute] string id, [FromBody] RevokeRelationshipRequest request, CancellationToken cancellationToken) - { - var response = await _mediator.Send(new RevokeRelationshipCommand { RelationshipId = id, CreationResponseContent = request.CreationResponseContent }, cancellationToken); - return Ok(response); - } - - [HttpPut("{id}/Terminate")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status404NotFound)] - public async Task TerminateRelationship([FromRoute] string id, CancellationToken cancellationToken) - { - var relationship = await _mediator.Send(new TerminateRelationshipCommand { RelationshipId = id }, cancellationToken); - return Ok(relationship); - } - - [HttpPut("{id}/Reactivate")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status404NotFound)] - public async Task RelationshipReactivationRequest([FromRoute] string id, CancellationToken cancellationToken) - { - var response = await _mediator.Send(new RequestRelationshipReactivationCommand { RelationshipId = id }, cancellationToken); - return Ok(response); - } - - [HttpPut("{id}/Reactivate/Revoke")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status404NotFound)] - public async Task RevokeRelationshipReactivation([FromRoute] string id, CancellationToken cancellationToken) - { - var response = await _mediator.Send(new RevokeRelationshipReactivationCommand { RelationshipId = id }, cancellationToken); - return Ok(response); - } - - [HttpPut("{id}/Reactivate/Accept")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status404NotFound)] - public async Task AcceptReactivationOfRelationship([FromRoute] string id, CancellationToken cancellationToken) - { - var response = await _mediator.Send(new AcceptRelationshipReactivationCommand { RelationshipId = id }, cancellationToken); - return Ok(response); - } - - [HttpPut("{id}/Reactivate/Reject")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status404NotFound)] - public async Task RejectReactivationOfRelationship([FromRoute] string id, CancellationToken cancellationToken) - { - var response = await _mediator.Send(new RejectRelationshipReactivationCommand { RelationshipId = id }, cancellationToken); - return Ok(response); - } - - [HttpPut("{id}/Decompose")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status404NotFound)] - public async Task DecomposeRelationship([FromRoute] string id, CancellationToken cancellationToken) - { - var response = await _mediator.Send(new DecomposeRelationshipCommand { RelationshipId = id }, cancellationToken); - return Ok(response); - } - - [HttpGet("CanCreate")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - public async Task CanEstablishRelationship([FromQuery(Name = "peer")] string peerAddress, CancellationToken cancellationToken) - { - var peerIdentity = await _mediator.Send(new GetIdentityQuery { Address = peerAddress }, cancellationToken); - - var response = peerIdentity.Status is not IdentityStatus.Active - ? new CanEstablishRelationshipResponse { CanCreate = false, Code = ApplicationErrors.Relationship.PeerIsToBeDeleted().Code } - : await _mediator.Send(new CanEstablishRelationshipQuery { PeerAddress = peerAddress }, cancellationToken); - - return Ok(response); - } - - private async Task EnsurePeerIsActive(string peerIdentityAddress, CancellationToken cancellationToken) - { - var peerIdentity = await _mediator.Send(new GetIdentityQuery { Address = peerIdentityAddress }, cancellationToken); - if (peerIdentity.Status is not IdentityStatus.Active) - throw new ApplicationException(ApplicationErrors.Relationship.PeerIsToBeDeleted()); - } -} - -public class AcceptRelationshipRequest -{ - public byte[]? CreationResponseContent { get; set; } = []; -} - -public class RejectRelationshipRequest -{ - public byte[]? CreationResponseContent { get; set; } = []; -} - -public class RevokeRelationshipRequest -{ - public byte[]? CreationResponseContent { get; set; } = []; -} diff --git a/Applications/ConsumerApi/src/Program.cs b/Applications/ConsumerApi/src/Program.cs index 6b3fe550ec..6579736d48 100644 --- a/Applications/ConsumerApi/src/Program.cs +++ b/Applications/ConsumerApi/src/Program.cs @@ -139,7 +139,7 @@ static void ConfigureServices(IServiceCollection services, IConfiguration config .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) - .AddModule(configuration) .AddModule(configuration) @@ -221,6 +221,7 @@ static void Configure(WebApplication app, ConsumerApiConfiguration configuration app.MapFilesEndpoints(); app.MapQuotasEndpoints(); app.MapDevicesEndpoints(); + app.MapRelationshipsEndpoints(); app.MapControllers(); app.MapHealthChecks("/health", new HealthCheckOptions { diff --git a/Applications/ConsumerApi/src/packages.lock.json b/Applications/ConsumerApi/src/packages.lock.json index 31a9cfb547..9bcd299759 100644 --- a/Applications/ConsumerApi/src/packages.lock.json +++ b/Applications/ConsumerApi/src/packages.lock.json @@ -1426,17 +1426,11 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Relationships.Application": { + "Backbone.Modules.Relationships.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.BuildingBlocks.Domain": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Common": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Relationships.Domain": "[1.0.0, )" } }, "Backbone.Modules.Relationships.Common": { @@ -1464,7 +1458,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Relationships.Application": "[1.0.0, )", + "Backbone.Modules.Relationships.Abstractions": "[1.0.0, )", "Backbone.Modules.Relationships.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1488,12 +1482,15 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Relationships.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Relationships.Abstractions": "[1.0.0, )", "Backbone.Modules.Relationships.Common": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", "Backbone.Modules.Relationships.Domain": "[1.0.0, )", "Backbone.Modules.Relationships.Infrastructure": "[1.0.0, )", "Backbone.Modules.Relationships.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Relationships.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/packages.lock.json b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/packages.lock.json index a306dc2d24..ade4b9e60e 100644 --- a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/packages.lock.json +++ b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/packages.lock.json @@ -2054,17 +2054,11 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Relationships.Application": { + "Backbone.Modules.Relationships.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.BuildingBlocks.Domain": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Common": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Relationships.Domain": "[1.0.0, )" } }, "Backbone.Modules.Relationships.Common": { @@ -2092,7 +2086,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Relationships.Application": "[1.0.0, )", + "Backbone.Modules.Relationships.Abstractions": "[1.0.0, )", "Backbone.Modules.Relationships.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -2116,12 +2110,15 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Relationships.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Relationships.Abstractions": "[1.0.0, )", "Backbone.Modules.Relationships.Common": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", "Backbone.Modules.Relationships.Domain": "[1.0.0, )", "Backbone.Modules.Relationships.Infrastructure": "[1.0.0, )", "Backbone.Modules.Relationships.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Relationships.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/DatabaseMigrator/src/DatabaseMigrator/Dockerfile b/Applications/DatabaseMigrator/src/DatabaseMigrator/Dockerfile index 4177821de0..4f3aa0a80e 100644 --- a/Applications/DatabaseMigrator/src/DatabaseMigrator/Dockerfile +++ b/Applications/DatabaseMigrator/src/DatabaseMigrator/Dockerfile @@ -74,7 +74,7 @@ COPY ["Modules/Quotas/src/Quotas.Infrastructure.Database.SqlServer/Quotas.Infras COPY ["Modules/Quotas/src/Quotas.Infrastructure.Database.Postgres/Quotas.Infrastructure.Database.Postgres.csproj", "Modules/Quotas/src/Quotas.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Quotas/src/Quotas.Infrastructure.Database.Postgres/"] COPY ["Modules/Relationships/src/Relationships.Infrastructure/Relationships.Infrastructure.csproj", "Modules/Relationships/src/Relationships.Infrastructure/packages.lock.json*", "Modules/Relationships/src/Relationships.Infrastructure/"] -COPY ["Modules/Relationships/src/Relationships.Application/Relationships.Application.csproj", "Modules/Relationships/src/Relationships.Application/packages.lock.json*", "Modules/Relationships/src/Relationships.Application/"] +COPY ["Modules/Relationships/src/Relationships.Abstractions/Relationships.Abstractions.csproj", "Modules/Relationships/src/Relationships.Abstractions/packages.lock.json*", "Modules/Relationships/src/Relationships.Abstractions/"] COPY ["Modules/Relationships/src/Relationships.Common/Relationships.Common.csproj", "Modules/Relationships/src/Relationships.Common/packages.lock.json*", "Modules/Relationships/src/Relationships.Common/"] COPY ["Modules/Relationships/src/Relationships.Domain/Relationships.Domain.csproj", "Modules/Relationships/src/Relationships.Domain/packages.lock.json*", "Modules/Relationships/src/Relationships.Domain/"] COPY ["Modules/Relationships/src/Relationships.Infrastructure.Database.SqlServer/Relationships.Infrastructure.Database.SqlServer.csproj", "Modules/Relationships/src/Relationships.Infrastructure.Database.SqlServer/packages.lock.json*", "Modules/Relationships/src/Relationships.Infrastructure.Database.SqlServer/"] diff --git a/Applications/DatabaseMigrator/src/DatabaseMigrator/packages.lock.json b/Applications/DatabaseMigrator/src/DatabaseMigrator/packages.lock.json index b342a9bbab..368487a7ee 100644 --- a/Applications/DatabaseMigrator/src/DatabaseMigrator/packages.lock.json +++ b/Applications/DatabaseMigrator/src/DatabaseMigrator/packages.lock.json @@ -1826,23 +1826,11 @@ "Backbone.Modules.Quotas.Infrastructure": "[1.0.0, )" } }, - "Backbone.Modules.Relationships.Application": { + "Backbone.Modules.Relationships.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.BuildingBlocks.Domain": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Common": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" - } - }, - "Backbone.Modules.Relationships.Common": { - "type": "Project", - "dependencies": { - "FluentValidation": "[12.1.1, 12.1.1]" + "Backbone.Modules.Relationships.Domain": "[1.0.0, )" } }, "Backbone.Modules.Relationships.Contracts": { @@ -1864,7 +1852,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Relationships.Application": "[1.0.0, )", + "Backbone.Modules.Relationships.Abstractions": "[1.0.0, )", "Backbone.Modules.Relationships.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", diff --git a/Applications/DatabaseMigrator/test/DatabaseMigrator.Tests/packages.lock.json b/Applications/DatabaseMigrator/test/DatabaseMigrator.Tests/packages.lock.json index 56dd0ddd7b..46e48e3dab 100644 --- a/Applications/DatabaseMigrator/test/DatabaseMigrator.Tests/packages.lock.json +++ b/Applications/DatabaseMigrator/test/DatabaseMigrator.Tests/packages.lock.json @@ -1833,23 +1833,11 @@ "Backbone.Modules.Quotas.Infrastructure": "[1.0.0, )" } }, - "Backbone.Modules.Relationships.Application": { + "Backbone.Modules.Relationships.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.BuildingBlocks.Domain": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Common": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" - } - }, - "Backbone.Modules.Relationships.Common": { - "type": "Project", - "dependencies": { - "FluentValidation": "[12.1.1, 12.1.1]" + "Backbone.Modules.Relationships.Domain": "[1.0.0, )" } }, "Backbone.Modules.Relationships.Contracts": { @@ -1871,7 +1859,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Relationships.Application": "[1.0.0, )", + "Backbone.Modules.Relationships.Abstractions": "[1.0.0, )", "Backbone.Modules.Relationships.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", diff --git a/Applications/EventHandlerService/src/EventHandlerService/Dockerfile b/Applications/EventHandlerService/src/EventHandlerService/Dockerfile index a7dfb44139..1552752799 100644 --- a/Applications/EventHandlerService/src/EventHandlerService/Dockerfile +++ b/Applications/EventHandlerService/src/EventHandlerService/Dockerfile @@ -59,7 +59,7 @@ COPY ["Modules/Quotas/src/Quotas.Infrastructure.Database.Postgres/Quotas.Infrast COPY ["Modules/Quotas/src/Quotas.Infrastructure/Quotas.Infrastructure.csproj", "Modules/Quotas/src/Quotas.Infrastructure/packages.lock.json*", "Modules/Quotas/src/Quotas.Infrastructure/"] COPY ["Modules/Quotas/src/Quotas.Infrastructure.Database.SqlServer/Quotas.Infrastructure.Database.SqlServer.csproj", "Modules/Quotas/src/Quotas.Infrastructure.Database.SqlServer/packages.lock.json*", "Modules/Quotas/src/Quotas.Infrastructure.Database.SqlServer/"] COPY ["Modules/Relationships/src/Relationships.Module/Relationships.Module.csproj", "Modules/Relationships/src/Relationships.Module/packages.lock.json*", "Modules/Relationships/src/Relationships.Module/"] -COPY ["Modules/Relationships/src/Relationships.Application/Relationships.Application.csproj", "Modules/Relationships/src/Relationships.Application/packages.lock.json*", "Modules/Relationships/src/Relationships.Application/"] +COPY ["Modules/Relationships/src/Relationships.Abstractions/Relationships.Abstractions.csproj", "Modules/Relationships/src/Relationships.Abstractions/packages.lock.json*", "Modules/Relationships/src/Relationships.Abstractions/"] COPY ["Modules/Relationships/src/Relationships.Common/Relationships.Common.csproj", "Modules/Relationships/src/Relationships.Common/packages.lock.json*", "Modules/Relationships/src/Relationships.Common/"] COPY ["Modules/Relationships/src/Relationships.Domain/Relationships.Domain.csproj", "Modules/Relationships/src/Relationships.Domain/packages.lock.json*", "Modules/Relationships/src/Relationships.Domain/"] COPY ["Modules/Relationships/src/Relationships.Infrastructure.Database.Postgres/Relationships.Infrastructure.Database.Postgres.csproj", "Modules/Relationships/src/Relationships.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Relationships/src/Relationships.Infrastructure.Database.Postgres/"] diff --git a/Applications/EventHandlerService/src/EventHandlerService/Program.cs b/Applications/EventHandlerService/src/EventHandlerService/Program.cs index 675f109bca..66e268ad25 100644 --- a/Applications/EventHandlerService/src/EventHandlerService/Program.cs +++ b/Applications/EventHandlerService/src/EventHandlerService/Program.cs @@ -79,7 +79,7 @@ static IHostBuilder CreateHostBuilder(string[] args) .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) - .AddModule(configuration) .AddModule(configuration) diff --git a/Applications/EventHandlerService/src/EventHandlerService/packages.lock.json b/Applications/EventHandlerService/src/EventHandlerService/packages.lock.json index 0d3acf695f..f51555a89f 100644 --- a/Applications/EventHandlerService/src/EventHandlerService/packages.lock.json +++ b/Applications/EventHandlerService/src/EventHandlerService/packages.lock.json @@ -1625,17 +1625,11 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Relationships.Application": { + "Backbone.Modules.Relationships.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.BuildingBlocks.Domain": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Common": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Relationships.Domain": "[1.0.0, )" } }, "Backbone.Modules.Relationships.Common": { @@ -1663,7 +1657,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Relationships.Application": "[1.0.0, )", + "Backbone.Modules.Relationships.Abstractions": "[1.0.0, )", "Backbone.Modules.Relationships.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1687,12 +1681,15 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Relationships.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Relationships.Abstractions": "[1.0.0, )", "Backbone.Modules.Relationships.Common": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", "Backbone.Modules.Relationships.Domain": "[1.0.0, )", "Backbone.Modules.Relationships.Infrastructure": "[1.0.0, )", "Backbone.Modules.Relationships.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Relationships.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/EventHandlerService/test/EventHandlerService.Tests/packages.lock.json b/Applications/EventHandlerService/test/EventHandlerService.Tests/packages.lock.json index fd3864d79e..7fc3c37a9f 100644 --- a/Applications/EventHandlerService/test/EventHandlerService.Tests/packages.lock.json +++ b/Applications/EventHandlerService/test/EventHandlerService.Tests/packages.lock.json @@ -1768,17 +1768,11 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Relationships.Application": { + "Backbone.Modules.Relationships.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.BuildingBlocks.Domain": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Common": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Relationships.Domain": "[1.0.0, )" } }, "Backbone.Modules.Relationships.Common": { @@ -1806,7 +1800,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Relationships.Application": "[1.0.0, )", + "Backbone.Modules.Relationships.Abstractions": "[1.0.0, )", "Backbone.Modules.Relationships.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1830,12 +1824,15 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Relationships.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Relationships.Abstractions": "[1.0.0, )", "Backbone.Modules.Relationships.Common": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", "Backbone.Modules.Relationships.Domain": "[1.0.0, )", "Backbone.Modules.Relationships.Infrastructure": "[1.0.0, )", "Backbone.Modules.Relationships.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Relationships.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/Housekeeper/src/Housekeeper/Dockerfile b/Applications/Housekeeper/src/Housekeeper/Dockerfile index da62dc9c23..995598c9d8 100644 --- a/Applications/Housekeeper/src/Housekeeper/Dockerfile +++ b/Applications/Housekeeper/src/Housekeeper/Dockerfile @@ -68,7 +68,7 @@ COPY ["Modules/Quotas/src/Quotas.Infrastructure.Database.SqlServer/Quotas.Infras COPY ["Modules/Relationships/src/Relationships.Infrastructure.Database.Postgres/Relationships.Infrastructure.Database.Postgres.csproj", "Modules/Relationships/src/Relationships.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Relationships/src/Relationships.Infrastructure.Database.Postgres/"] COPY ["BuildingBlocks/src/UnitTestTools/UnitTestTools.csproj", "BuildingBlocks/src/UnitTestTools/packages.lock.json*", "BuildingBlocks/src/UnitTestTools/"] COPY ["Modules/Relationships/src/Relationships.Infrastructure/Relationships.Infrastructure.csproj", "Modules/Relationships/src/Relationships.Infrastructure/packages.lock.json*", "Modules/Relationships/src/Relationships.Infrastructure/"] -COPY ["Modules/Relationships/src/Relationships.Application/Relationships.Application.csproj", "Modules/Relationships/src/Relationships.Application/packages.lock.json*", "Modules/Relationships/src/Relationships.Application/"] +COPY ["Modules/Relationships/src/Relationships.Abstractions/Relationships.Abstractions.csproj", "Modules/Relationships/src/Relationships.Abstractions/packages.lock.json*", "Modules/Relationships/src/Relationships.Abstractions/"] COPY ["Modules/Relationships/src/Relationships.Common/Relationships.Common.csproj", "Modules/Relationships/src/Relationships.Common/packages.lock.json*", "Modules/Relationships/src/Relationships.Common/"] COPY ["Modules/Relationships/src/Relationships.Domain/Relationships.Domain.csproj", "Modules/Relationships/src/Relationships.Domain/packages.lock.json*", "Modules/Relationships/src/Relationships.Domain/"] COPY ["Modules/Relationships/src/Relationships.Infrastructure.Database.SqlServer/Relationships.Infrastructure.Database.SqlServer.csproj", "Modules/Relationships/src/Relationships.Infrastructure.Database.SqlServer/packages.lock.json*", "Modules/Relationships/src/Relationships.Infrastructure.Database.SqlServer/"] diff --git a/Applications/Housekeeper/src/Housekeeper/Executor.cs b/Applications/Housekeeper/src/Housekeeper/Executor.cs index 6742f38ec4..e416855122 100644 --- a/Applications/Housekeeper/src/Housekeeper/Executor.cs +++ b/Applications/Housekeeper/src/Housekeeper/Executor.cs @@ -5,7 +5,7 @@ using ExecuteChallengesModuleHousekeepingCommand = Backbone.Modules.Challenges.Module.Features.Challenges.ExecuteHousekeeping.ExecuteHousekeepingCommand; using ExecuteDevicesModuleHousekeepingCommand = Backbone.Modules.Devices.Module.Features.Devices.ExecuteHousekeeping.ExecuteHousekeepingCommand; using ExecuteFilesModuleHousekeepingCommand = Backbone.Modules.Files.Module.Features.Files.ExecuteHousekeeping.ExecuteHousekeepingCommand; -using ExecuteRelationshipsModuleHousekeepingCommand = Backbone.Modules.Relationships.Application.Relationships.Commands.ExecuteHousekeeping.ExecuteHousekeepingCommand; +using ExecuteRelationshipsModuleHousekeepingCommand = Backbone.Modules.Relationships.Module.Features.Relationships.ExecuteHousekeeping.ExecuteHousekeepingCommand; using ExecuteSynchronizationModuleHousekeepingCommand = Backbone.Modules.Synchronization.Application.SyncRuns.Commands.ExecuteHousekeeping.ExecuteHousekeepingCommand; using ExecuteTokensModuleHousekeepingCommand = Backbone.Modules.Tokens.Module.Features.Tokens.ExecuteHousekeeping.ExecuteHousekeepingCommand; diff --git a/Applications/Housekeeper/src/Housekeeper/Program.cs b/Applications/Housekeeper/src/Housekeeper/Program.cs index 2b7878aafe..4c4cdd90db 100644 --- a/Applications/Housekeeper/src/Housekeeper/Program.cs +++ b/Applications/Housekeeper/src/Housekeeper/Program.cs @@ -72,7 +72,7 @@ static HostApplicationBuilder CreateHostBuilder(string[] args) .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) - .AddModule(configuration) .AddModule(configuration) diff --git a/Applications/Housekeeper/src/Housekeeper/packages.lock.json b/Applications/Housekeeper/src/Housekeeper/packages.lock.json index 88f9e15b5a..5c34a2e375 100644 --- a/Applications/Housekeeper/src/Housekeeper/packages.lock.json +++ b/Applications/Housekeeper/src/Housekeeper/packages.lock.json @@ -1904,17 +1904,11 @@ "Backbone.Modules.Quotas.Infrastructure": "[1.0.0, )" } }, - "Backbone.Modules.Relationships.Application": { + "Backbone.Modules.Relationships.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.BuildingBlocks.Domain": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Common": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Relationships.Domain": "[1.0.0, )" } }, "Backbone.Modules.Relationships.Common": { @@ -1942,7 +1936,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Relationships.Application": "[1.0.0, )", + "Backbone.Modules.Relationships.Abstractions": "[1.0.0, )", "Backbone.Modules.Relationships.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1966,12 +1960,15 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Relationships.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Relationships.Abstractions": "[1.0.0, )", "Backbone.Modules.Relationships.Common": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", "Backbone.Modules.Relationships.Domain": "[1.0.0, )", "Backbone.Modules.Relationships.Infrastructure": "[1.0.0, )", "Backbone.Modules.Relationships.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Relationships.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Dockerfile b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Dockerfile index 87c4c4a4f4..9bc5d8f5eb 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Dockerfile +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Dockerfile @@ -64,7 +64,7 @@ COPY ["Modules/Quotas/src/Quotas.Module/Quotas.Module.csproj", "Modules/Quotas/s COPY ["Modules/Quotas/src/Quotas.Infrastructure.Database.Postgres/Quotas.Infrastructure.Database.Postgres.csproj", "Modules/Quotas/src/Quotas.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Quotas/src/Quotas.Infrastructure.Database.Postgres/"] COPY ["Modules/Quotas/src/Quotas.Infrastructure/Quotas.Infrastructure.csproj", "Modules/Quotas/src/Quotas.Infrastructure/packages.lock.json*", "Modules/Quotas/src/Quotas.Infrastructure/"] COPY ["Modules/Quotas/src/Quotas.Infrastructure.Database.SqlServer/Quotas.Infrastructure.Database.SqlServer.csproj", "Modules/Quotas/src/Quotas.Infrastructure.Database.SqlServer/packages.lock.json*", "Modules/Quotas/src/Quotas.Infrastructure.Database.SqlServer/"] -COPY ["Modules/Relationships/src/Relationships.Application/Relationships.Application.csproj", "Modules/Relationships/src/Relationships.Application/packages.lock.json*", "Modules/Relationships/src/Relationships.Application/"] +COPY ["Modules/Relationships/src/Relationships.Abstractions/Relationships.Abstractions.csproj", "Modules/Relationships/src/Relationships.Abstractions/packages.lock.json*", "Modules/Relationships/src/Relationships.Abstractions/"] COPY ["Modules/Relationships/src/Relationships.Common/Relationships.Common.csproj", "Modules/Relationships/src/Relationships.Common/packages.lock.json*", "Modules/Relationships/src/Relationships.Common/"] COPY ["Modules/Relationships/src/Relationships.Domain/Relationships.Domain.csproj", "Modules/Relationships/src/Relationships.Domain/packages.lock.json*", "Modules/Relationships/src/Relationships.Domain/"] COPY ["Modules/Relationships/src/Relationships.Module/Relationships.Module.csproj", "Modules/Relationships/src/Relationships.Module/packages.lock.json*", "Modules/Relationships/src/Relationships.Module/"] diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Job.IdentityDeletion.csproj b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Job.IdentityDeletion.csproj index 1a805038dc..a39ab74d38 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Job.IdentityDeletion.csproj +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Job.IdentityDeletion.csproj @@ -25,7 +25,6 @@ - diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Program.cs b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Program.cs index 5d67678a92..6ae77d90a2 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Program.cs +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Program.cs @@ -89,7 +89,7 @@ public static IHostBuilder CreateHostBuilder(string[] args) .AddModule(configuration) .AddModule(configuration) .AddModule(configuration) - .AddModule(configuration) .AddModule(configuration) diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/ServicesExtensions.cs b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/ServicesExtensions.cs index 8f299b0b9b..d9cdcc483f 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/ServicesExtensions.cs +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/ServicesExtensions.cs @@ -12,7 +12,7 @@ public static IServiceCollection RegisterIdentityDeleters(this IServiceCollectio services.AddTransient(); services.AddTransient(); services.AddTransient(); - services.AddTransient(); + services.AddTransient(); services.AddTransient(); services.AddTransient(); diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/packages.lock.json b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/packages.lock.json index 66cd83a16b..8430ea2511 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/packages.lock.json +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/packages.lock.json @@ -1665,17 +1665,11 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Relationships.Application": { + "Backbone.Modules.Relationships.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.BuildingBlocks.Domain": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Common": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Relationships.Domain": "[1.0.0, )" } }, "Backbone.Modules.Relationships.Common": { @@ -1703,7 +1697,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Relationships.Application": "[1.0.0, )", + "Backbone.Modules.Relationships.Abstractions": "[1.0.0, )", "Backbone.Modules.Relationships.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1727,12 +1721,15 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Relationships.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Relationships.Abstractions": "[1.0.0, )", "Backbone.Modules.Relationships.Common": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", "Backbone.Modules.Relationships.Domain": "[1.0.0, )", "Backbone.Modules.Relationships.Infrastructure": "[1.0.0, )", "Backbone.Modules.Relationships.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Relationships.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests.Integration/packages.lock.json b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests.Integration/packages.lock.json index 0e44a49e9e..09cdcd38fa 100644 --- a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests.Integration/packages.lock.json +++ b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests.Integration/packages.lock.json @@ -1425,7 +1425,6 @@ "Backbone.Modules.Files.Module": "[1.0.0, )", "Backbone.Modules.Messages.Module": "[1.0.0, )", "Backbone.Modules.Quotas.Module": "[1.0.0, )", - "Backbone.Modules.Relationships.Application": "[1.0.0, )", "Backbone.Modules.Relationships.Module": "[1.0.0, )", "Backbone.Modules.Synchronization.Application": "[1.0.0, )", "Backbone.Modules.Synchronization.Module": "[1.0.0, )", @@ -1820,17 +1819,11 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Relationships.Application": { + "Backbone.Modules.Relationships.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.BuildingBlocks.Domain": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Common": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Relationships.Domain": "[1.0.0, )" } }, "Backbone.Modules.Relationships.Common": { @@ -1858,7 +1851,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Relationships.Application": "[1.0.0, )", + "Backbone.Modules.Relationships.Abstractions": "[1.0.0, )", "Backbone.Modules.Relationships.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1882,12 +1875,15 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Relationships.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Relationships.Abstractions": "[1.0.0, )", "Backbone.Modules.Relationships.Common": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", "Backbone.Modules.Relationships.Domain": "[1.0.0, )", "Backbone.Modules.Relationships.Infrastructure": "[1.0.0, )", "Backbone.Modules.Relationships.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Relationships.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/Tests/ActualDeletionWorkerTests.cs b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/Tests/ActualDeletionWorkerTests.cs index b74e99a064..435de9dd94 100644 --- a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/Tests/ActualDeletionWorkerTests.cs +++ b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/Tests/ActualDeletionWorkerTests.cs @@ -8,7 +8,7 @@ using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.DeletionProcess; using Backbone.Modules.Devices.Domain.Aggregates.Tier; using Backbone.Modules.Devices.Domain.Entities.Identities; -using Backbone.Modules.Relationships.Application.Relationships.Queries.ListRelationshipsOfIdentity; +using Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationshipsOfIdentity; using CSharpFunctionalExtensions; using FakeItEasy; using MediatR; diff --git a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/packages.lock.json b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/packages.lock.json index 0e44a49e9e..09cdcd38fa 100644 --- a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/packages.lock.json +++ b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/packages.lock.json @@ -1425,7 +1425,6 @@ "Backbone.Modules.Files.Module": "[1.0.0, )", "Backbone.Modules.Messages.Module": "[1.0.0, )", "Backbone.Modules.Quotas.Module": "[1.0.0, )", - "Backbone.Modules.Relationships.Application": "[1.0.0, )", "Backbone.Modules.Relationships.Module": "[1.0.0, )", "Backbone.Modules.Synchronization.Application": "[1.0.0, )", "Backbone.Modules.Synchronization.Module": "[1.0.0, )", @@ -1820,17 +1819,11 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Relationships.Application": { + "Backbone.Modules.Relationships.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.BuildingBlocks.Domain": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Common": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Relationships.Domain": "[1.0.0, )" } }, "Backbone.Modules.Relationships.Common": { @@ -1858,7 +1851,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Relationships.Application": "[1.0.0, )", + "Backbone.Modules.Relationships.Abstractions": "[1.0.0, )", "Backbone.Modules.Relationships.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1882,12 +1875,15 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Relationships.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Relationships.Abstractions": "[1.0.0, )", "Backbone.Modules.Relationships.Common": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", "Backbone.Modules.Relationships.Domain": "[1.0.0, )", "Backbone.Modules.Relationships.Infrastructure": "[1.0.0, )", "Backbone.Modules.Relationships.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Relationships.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs b/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs index 169b10225a..c30b139410 100644 --- a/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs +++ b/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs @@ -12,7 +12,7 @@ namespace Backbone.Backbone.Tests.ArchUnit; public class VerticalSliceArchitecture { - private static readonly string[] MIGRATED_MODULES = ["Messages", "Tags", "Challenges", "Announcements", "Tokens", "Files", "Quotas", "Devices"]; + private static readonly string[] MIGRATED_MODULES = ["Messages", "Tags", "Challenges", "Announcements", "Tokens", "Files", "Quotas", "Devices", "Relationships"]; [Fact] public void DomainsShouldNotDependOnOuterLayers() @@ -47,6 +47,7 @@ public void InfrastructureShouldNotDependOnModulesOrApis() [InlineData("Files")] [InlineData("Quotas")] [InlineData("Devices")] + [InlineData("Relationships")] public void UseCasesShouldResideInTheirModule(string module) { var useCases = Classes().That().AreAssignableTo(typeof(IBaseRequest)) @@ -70,6 +71,7 @@ public void UseCasesShouldResideInTheirModule(string module) [InlineData("Files")] [InlineData("Quotas")] [InlineData("Devices")] + [InlineData("Relationships")] public void UseCasesShouldNotDependOnAdapters(string module) { Classes().That().Are(UseCases(module)).Should().NotDependOnAnyTypesThat() @@ -92,6 +94,7 @@ public void UseCasesShouldNotDependOnAdapters(string module) [InlineData("Files")] [InlineData("Quotas")] [InlineData("Devices")] + [InlineData("Relationships")] public void ModulesShouldOnlyReferenceTheirOwnImplementationAndOtherContracts(string module) { foreach (var assembly in SolutionAssemblies().Where(assembly => assembly.GetName().Name == $"Backbone.Modules.{module}.Module")) diff --git a/Backbone.Tests.ArchUnit/packages.lock.json b/Backbone.Tests.ArchUnit/packages.lock.json index 18fdfbdc71..f3db0ef5bb 100644 --- a/Backbone.Tests.ArchUnit/packages.lock.json +++ b/Backbone.Tests.ArchUnit/packages.lock.json @@ -1726,7 +1726,6 @@ "Backbone.Modules.Files.Module": "[1.0.0, )", "Backbone.Modules.Messages.Module": "[1.0.0, )", "Backbone.Modules.Quotas.Module": "[1.0.0, )", - "Backbone.Modules.Relationships.Application": "[1.0.0, )", "Backbone.Modules.Relationships.Module": "[1.0.0, )", "Backbone.Modules.Synchronization.Application": "[1.0.0, )", "Backbone.Modules.Synchronization.Module": "[1.0.0, )", @@ -2284,17 +2283,11 @@ "Microsoft.NET.Test.Sdk": "[18.8.1, 18.8.1]" } }, - "Backbone.Modules.Relationships.Application": { + "Backbone.Modules.Relationships.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.BuildingBlocks.Domain": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Common": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Relationships.Domain": "[1.0.0, )" } }, "Backbone.Modules.Relationships.Common": { @@ -2322,7 +2315,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Relationships.Application": "[1.0.0, )", + "Backbone.Modules.Relationships.Abstractions": "[1.0.0, )", "Backbone.Modules.Relationships.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -2346,12 +2339,15 @@ "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Relationships.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Relationships.Abstractions": "[1.0.0, )", "Backbone.Modules.Relationships.Common": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", "Backbone.Modules.Relationships.Domain": "[1.0.0, )", "Backbone.Modules.Relationships.Infrastructure": "[1.0.0, )", "Backbone.Modules.Relationships.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Relationships.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Backbone.slnx b/Backbone.slnx index 026896cad5..f8c3587efc 100644 --- a/Backbone.slnx +++ b/Backbone.slnx @@ -188,7 +188,7 @@ - + @@ -198,7 +198,7 @@ - + diff --git a/Modules/Devices/src/Devices.Contracts/IIdentityStatusProvider.cs b/Modules/Devices/src/Devices.Contracts/IIdentityStatusProvider.cs new file mode 100644 index 0000000000..3423c5f6c5 --- /dev/null +++ b/Modules/Devices/src/Devices.Contracts/IIdentityStatusProvider.cs @@ -0,0 +1,6 @@ +namespace Backbone.Modules.Devices.Contracts; + +public interface IIdentityStatusProvider +{ + Task IsActive(string address, CancellationToken cancellationToken); +} diff --git a/Modules/Devices/src/Devices.Module/ApplicationServiceCollectionExtensions.cs b/Modules/Devices/src/Devices.Module/ApplicationServiceCollectionExtensions.cs index f386805847..e172efa201 100644 --- a/Modules/Devices/src/Devices.Module/ApplicationServiceCollectionExtensions.cs +++ b/Modules/Devices/src/Devices.Module/ApplicationServiceCollectionExtensions.cs @@ -27,6 +27,7 @@ public static void AddApplication(this IServiceCollection services, IConfigurati ); services.AddValidatorsFromAssembly(typeof(Validator).Assembly); services.AddScoped(); + services.AddScoped(); AddEventHandlers(services); } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/IdentityStatusProvider.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/IdentityStatusProvider.cs new file mode 100644 index 0000000000..fbfc8b358a --- /dev/null +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/IdentityStatusProvider.cs @@ -0,0 +1,14 @@ +using Backbone.Modules.Devices.Contracts; +using Backbone.Modules.Devices.Domain.Entities.Identities; +using MediatR; + +namespace Backbone.Modules.Devices.Module.Features.Identities.GetIdentity; + +public class IdentityStatusProvider(IMediator mediator) : IIdentityStatusProvider +{ + public async Task IsActive(string address, CancellationToken cancellationToken) + { + var identity = await mediator.Send(new GetIdentityQuery { Address = address }, cancellationToken); + return identity.Status is IdentityStatus.Active; + } +} diff --git a/Modules/Quotas/test/Quotas.Infrastructure.Tests/packages.lock.json b/Modules/Quotas/test/Quotas.Infrastructure.Tests/packages.lock.json index 32348e7063..3c29665588 100644 --- a/Modules/Quotas/test/Quotas.Infrastructure.Tests/packages.lock.json +++ b/Modules/Quotas/test/Quotas.Infrastructure.Tests/packages.lock.json @@ -936,12 +936,6 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Devices.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Modules.Messages.Abstractions": { "type": "Project", "dependencies": { @@ -1012,23 +1006,11 @@ "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, 10.0.3]" } }, - "Backbone.Modules.Relationships.Application": { + "Backbone.Modules.Relationships.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.BuildingBlocks.Domain": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Common": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" - } - }, - "Backbone.Modules.Relationships.Common": { - "type": "Project", - "dependencies": { - "FluentValidation": "[12.1.1, 12.1.1]" + "Backbone.Modules.Relationships.Domain": "[1.0.0, )" } }, "Backbone.Modules.Relationships.Contracts": { @@ -1050,7 +1032,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Relationships.Application": "[1.0.0, )", + "Backbone.Modules.Relationships.Abstractions": "[1.0.0, )", "Backbone.Modules.Relationships.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1165,16 +1147,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", diff --git a/Modules/Relationships/src/Relationships.Application/Infrastructure/Persistence/Repository/IRelationshipTemplatesRepository.cs b/Modules/Relationships/src/Relationships.Abstractions/IRelationshipTemplatesRepository.cs similarity index 91% rename from Modules/Relationships/src/Relationships.Application/Infrastructure/Persistence/Repository/IRelationshipTemplatesRepository.cs rename to Modules/Relationships/src/Relationships.Abstractions/IRelationshipTemplatesRepository.cs index 1d8dc51bb8..8867f20319 100644 --- a/Modules/Relationships/src/Relationships.Application/Infrastructure/Persistence/Repository/IRelationshipTemplatesRepository.cs +++ b/Modules/Relationships/src/Relationships.Abstractions/IRelationshipTemplatesRepository.cs @@ -2,10 +2,9 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.Persistence.Database; using Backbone.BuildingBlocks.Application.Pagination; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Relationships.Application.RelationshipTemplates.Queries.ListRelationshipTemplates; using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; -namespace Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; +namespace Backbone.Modules.Relationships.Abstractions; public interface IRelationshipTemplatesRepository { diff --git a/Modules/Relationships/src/Relationships.Application/Infrastructure/Persistence/Repository/IRelationshipsRepository.cs b/Modules/Relationships/src/Relationships.Abstractions/IRelationshipsRepository.cs similarity index 94% rename from Modules/Relationships/src/Relationships.Application/Infrastructure/Persistence/Repository/IRelationshipsRepository.cs rename to Modules/Relationships/src/Relationships.Abstractions/IRelationshipsRepository.cs index 7d9258a395..1086455b67 100644 --- a/Modules/Relationships/src/Relationships.Application/Infrastructure/Persistence/Repository/IRelationshipsRepository.cs +++ b/Modules/Relationships/src/Relationships.Abstractions/IRelationshipsRepository.cs @@ -4,7 +4,7 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; -namespace Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; +namespace Backbone.Modules.Relationships.Abstractions; public interface IRelationshipsRepository { diff --git a/Modules/Relationships/src/Relationships.Abstractions/ListRelationshipTemplatesQueryItem.cs b/Modules/Relationships/src/Relationships.Abstractions/ListRelationshipTemplatesQueryItem.cs new file mode 100644 index 0000000000..b844a22850 --- /dev/null +++ b/Modules/Relationships/src/Relationships.Abstractions/ListRelationshipTemplatesQueryItem.cs @@ -0,0 +1,7 @@ +namespace Backbone.Modules.Relationships.Abstractions; + +public class ListRelationshipTemplatesQueryItem +{ + public required string Id { get; set; } + public byte[]? Password { get; set; } +} diff --git a/Modules/Relationships/src/Relationships.Abstractions/Relationships.Abstractions.csproj b/Modules/Relationships/src/Relationships.Abstractions/Relationships.Abstractions.csproj new file mode 100644 index 0000000000..6891d02344 --- /dev/null +++ b/Modules/Relationships/src/Relationships.Abstractions/Relationships.Abstractions.csproj @@ -0,0 +1,6 @@ + + + + + + diff --git a/Modules/Relationships/src/Relationships.Application/packages.lock.json b/Modules/Relationships/src/Relationships.Abstractions/packages.lock.json similarity index 98% rename from Modules/Relationships/src/Relationships.Application/packages.lock.json rename to Modules/Relationships/src/Relationships.Abstractions/packages.lock.json index 9deab4fc1f..e377f20a6c 100644 --- a/Modules/Relationships/src/Relationships.Application/packages.lock.json +++ b/Modules/Relationships/src/Relationships.Abstractions/packages.lock.json @@ -2,16 +2,6 @@ "version": 2, "dependencies": { "net10.0": { - "FluentValidation.DependencyInjectionExtensions": { - "type": "Direct", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "AWSSDK.Core": { "type": "Transitive", "resolved": "4.0.100.9", @@ -740,18 +730,6 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Devices.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Relationships.Common": { - "type": "Project", - "dependencies": { - "FluentValidation": "[12.1.1, 12.1.1]" - } - }, "Backbone.Modules.Relationships.Contracts": { "type": "Project", "dependencies": { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships.Application.csproj b/Modules/Relationships/src/Relationships.Application/Relationships.Application.csproj deleted file mode 100644 index 2c249bc1a0..0000000000 --- a/Modules/Relationships/src/Relationships.Application/Relationships.Application.csproj +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs b/Modules/Relationships/src/Relationships.Application/Relationships/Commands/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs deleted file mode 100644 index 42d0ad5ced..0000000000 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs +++ /dev/null @@ -1,5 +0,0 @@ -using MediatR; - -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.ExecuteHousekeeping; - -public class ExecuteHousekeepingCommand : IRequest; diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/TerminateRelationship/TerminateRelationshipCommand.cs b/Modules/Relationships/src/Relationships.Application/Relationships/Commands/TerminateRelationship/TerminateRelationshipCommand.cs deleted file mode 100644 index ac58580932..0000000000 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/TerminateRelationship/TerminateRelationshipCommand.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Backbone.Modules.Relationships.Application.Relationships.DTOs; -using MediatR; - -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.TerminateRelationship; - -public class TerminateRelationshipCommand : IRequest -{ - public required string RelationshipId { get; init; } -} diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/GetRelationship/GetRelationshipQuery.cs b/Modules/Relationships/src/Relationships.Application/Relationships/Queries/GetRelationship/GetRelationshipQuery.cs deleted file mode 100644 index 3331213f17..0000000000 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/GetRelationship/GetRelationshipQuery.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Backbone.Modules.Relationships.Application.Relationships.DTOs; -using MediatR; - -namespace Backbone.Modules.Relationships.Application.Relationships.Queries.GetRelationship; - -public class GetRelationshipQuery : IRequest -{ - public required string Id { get; init; } -} diff --git a/Modules/Relationships/src/Relationships.Infrastructure.Database.Postgres/MigrationOperations.cs b/Modules/Relationships/src/Relationships.Infrastructure.Database.Postgres/MigrationOperations.cs index 9f77ffad29..0032be26f1 100644 --- a/Modules/Relationships/src/Relationships.Infrastructure.Database.Postgres/MigrationOperations.cs +++ b/Modules/Relationships/src/Relationships.Infrastructure.Database.Postgres/MigrationOperations.cs @@ -1,5 +1,5 @@ using System.Text; -using Backbone.Modules.Relationships.Application.Infrastructure; +using Backbone.Modules.Relationships.Infrastructure.Persistence; using Microsoft.EntityFrameworkCore.Migrations; namespace Backbone.Modules.Relationships.Infrastructure.Database.Postgres; diff --git a/Modules/Relationships/src/Relationships.Infrastructure.Database.Postgres/packages.lock.json b/Modules/Relationships/src/Relationships.Infrastructure.Database.Postgres/packages.lock.json index cdd570e8f7..28e92c92a9 100644 --- a/Modules/Relationships/src/Relationships.Infrastructure.Database.Postgres/packages.lock.json +++ b/Modules/Relationships/src/Relationships.Infrastructure.Database.Postgres/packages.lock.json @@ -730,29 +730,11 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Devices.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Relationships.Application": { + "Backbone.Modules.Relationships.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.BuildingBlocks.Domain": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Common": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" - } - }, - "Backbone.Modules.Relationships.Common": { - "type": "Project", - "dependencies": { - "FluentValidation": "[12.1.1, 12.1.1]" + "Backbone.Modules.Relationships.Domain": "[1.0.0, )" } }, "Backbone.Modules.Relationships.Contracts": { @@ -774,7 +756,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Relationships.Application": "[1.0.0, )", + "Backbone.Modules.Relationships.Abstractions": "[1.0.0, )", "Backbone.Modules.Relationships.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -869,16 +851,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", diff --git a/Modules/Relationships/src/Relationships.Infrastructure.Database.SqlServer/MigrationOperations.cs b/Modules/Relationships/src/Relationships.Infrastructure.Database.SqlServer/MigrationOperations.cs index 7b939f4d3a..f67a19ddf6 100644 --- a/Modules/Relationships/src/Relationships.Infrastructure.Database.SqlServer/MigrationOperations.cs +++ b/Modules/Relationships/src/Relationships.Infrastructure.Database.SqlServer/MigrationOperations.cs @@ -1,5 +1,5 @@ using System.Text; -using Backbone.Modules.Relationships.Application.Infrastructure; +using Backbone.Modules.Relationships.Infrastructure.Persistence; using Microsoft.EntityFrameworkCore.Migrations; namespace Backbone.Modules.Relationships.Infrastructure.Database.SqlServer; diff --git a/Modules/Relationships/src/Relationships.Infrastructure.Database.SqlServer/packages.lock.json b/Modules/Relationships/src/Relationships.Infrastructure.Database.SqlServer/packages.lock.json index cdd570e8f7..28e92c92a9 100644 --- a/Modules/Relationships/src/Relationships.Infrastructure.Database.SqlServer/packages.lock.json +++ b/Modules/Relationships/src/Relationships.Infrastructure.Database.SqlServer/packages.lock.json @@ -730,29 +730,11 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Devices.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Relationships.Application": { + "Backbone.Modules.Relationships.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.BuildingBlocks.Domain": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Common": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" - } - }, - "Backbone.Modules.Relationships.Common": { - "type": "Project", - "dependencies": { - "FluentValidation": "[12.1.1, 12.1.1]" + "Backbone.Modules.Relationships.Domain": "[1.0.0, )" } }, "Backbone.Modules.Relationships.Contracts": { @@ -774,7 +756,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Relationships.Application": "[1.0.0, )", + "Backbone.Modules.Relationships.Abstractions": "[1.0.0, )", "Backbone.Modules.Relationships.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -869,16 +851,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", diff --git a/Modules/Relationships/src/Relationships.Application/Infrastructure/ConstraintNames.cs b/Modules/Relationships/src/Relationships.Infrastructure/Persistence/ConstraintNames.cs similarity index 71% rename from Modules/Relationships/src/Relationships.Application/Infrastructure/ConstraintNames.cs rename to Modules/Relationships/src/Relationships.Infrastructure/Persistence/ConstraintNames.cs index 4417d2ca54..939a2584f1 100644 --- a/Modules/Relationships/src/Relationships.Application/Infrastructure/ConstraintNames.cs +++ b/Modules/Relationships/src/Relationships.Infrastructure/Persistence/ConstraintNames.cs @@ -1,4 +1,4 @@ -namespace Backbone.Modules.Relationships.Application.Infrastructure; +namespace Backbone.Modules.Relationships.Infrastructure.Persistence; public class ConstraintNames { diff --git a/Modules/Relationships/src/Relationships.Infrastructure/Persistence/Database/Repository/RelationshipTemplatesRepository.cs b/Modules/Relationships/src/Relationships.Infrastructure/Persistence/Database/Repository/RelationshipTemplatesRepository.cs index ceb0530fdb..0ba376b940 100644 --- a/Modules/Relationships/src/Relationships.Infrastructure/Persistence/Database/Repository/RelationshipTemplatesRepository.cs +++ b/Modules/Relationships/src/Relationships.Infrastructure/Persistence/Database/Repository/RelationshipTemplatesRepository.cs @@ -3,8 +3,7 @@ using Backbone.BuildingBlocks.Application.Extensions; using Backbone.BuildingBlocks.Application.Pagination; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Relationships.Application.RelationshipTemplates.Queries.ListRelationshipTemplates; +using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; using Backbone.Modules.Relationships.Infrastructure.Extensions; using Backbone.Tooling.Extensions; diff --git a/Modules/Relationships/src/Relationships.Infrastructure/Persistence/Database/Repository/RelationshipsRepository.cs b/Modules/Relationships/src/Relationships.Infrastructure/Persistence/Database/Repository/RelationshipsRepository.cs index 3772de88c2..8ccca1f141 100644 --- a/Modules/Relationships/src/Relationships.Infrastructure/Persistence/Database/Repository/RelationshipsRepository.cs +++ b/Modules/Relationships/src/Relationships.Infrastructure/Persistence/Database/Repository/RelationshipsRepository.cs @@ -1,11 +1,11 @@ +using Backbone.Modules.Relationships.Infrastructure.Persistence; using System.Linq.Expressions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.Persistence.Database; using Backbone.BuildingBlocks.Application.Extensions; using Backbone.BuildingBlocks.Application.Pagination; using Backbone.BuildingBlocks.Domain.Exceptions; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Relationships.Application.Infrastructure; -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Domain; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using Backbone.Modules.Relationships.Infrastructure.Extensions; diff --git a/Modules/Relationships/src/Relationships.Infrastructure/Persistence/IServiceCollectionExtensions.cs b/Modules/Relationships/src/Relationships.Infrastructure/Persistence/IServiceCollectionExtensions.cs index 5c08635945..ff4ca5910d 100644 --- a/Modules/Relationships/src/Relationships.Infrastructure/Persistence/IServiceCollectionExtensions.cs +++ b/Modules/Relationships/src/Relationships.Infrastructure/Persistence/IServiceCollectionExtensions.cs @@ -1,5 +1,5 @@ using Backbone.BuildingBlocks.Infrastructure.Persistence.Database; -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Infrastructure.Persistence.Database; using Backbone.Modules.Relationships.Infrastructure.Persistence.Database.Repository; using Microsoft.Extensions.DependencyInjection; diff --git a/Modules/Relationships/src/Relationships.Infrastructure/Relationships.Infrastructure.csproj b/Modules/Relationships/src/Relationships.Infrastructure/Relationships.Infrastructure.csproj index bf0e430d9a..d4618ac0a6 100644 --- a/Modules/Relationships/src/Relationships.Infrastructure/Relationships.Infrastructure.csproj +++ b/Modules/Relationships/src/Relationships.Infrastructure/Relationships.Infrastructure.csproj @@ -8,7 +8,7 @@ - + diff --git a/Modules/Relationships/src/Relationships.Infrastructure/packages.lock.json b/Modules/Relationships/src/Relationships.Infrastructure/packages.lock.json index 98659a45ae..6e85379c85 100644 --- a/Modules/Relationships/src/Relationships.Infrastructure/packages.lock.json +++ b/Modules/Relationships/src/Relationships.Infrastructure/packages.lock.json @@ -766,29 +766,11 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Devices.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Relationships.Application": { + "Backbone.Modules.Relationships.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.BuildingBlocks.Domain": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Common": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" - } - }, - "Backbone.Modules.Relationships.Common": { - "type": "Project", - "dependencies": { - "FluentValidation": "[12.1.1, 12.1.1]" + "Backbone.Modules.Relationships.Domain": "[1.0.0, )" } }, "Backbone.Modules.Relationships.Contracts": { @@ -893,16 +875,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", diff --git a/Modules/Relationships/src/Relationships.Application/ApplicationConfiguration.cs b/Modules/Relationships/src/Relationships.Module/ApplicationConfiguration.cs similarity index 85% rename from Modules/Relationships/src/Relationships.Application/ApplicationConfiguration.cs rename to Modules/Relationships/src/Relationships.Module/ApplicationConfiguration.cs index a0d694ae15..c63356b3da 100644 --- a/Modules/Relationships/src/Relationships.Application/ApplicationConfiguration.cs +++ b/Modules/Relationships/src/Relationships.Module/ApplicationConfiguration.cs @@ -1,7 +1,7 @@ using System.ComponentModel.DataAnnotations; using Backbone.BuildingBlocks.Application; -namespace Backbone.Modules.Relationships.Application; +namespace Backbone.Modules.Relationships.Module; public class ApplicationConfiguration { diff --git a/Modules/Relationships/src/Relationships.Application/ApplicationErrors.cs b/Modules/Relationships/src/Relationships.Module/ApplicationErrors.cs similarity index 94% rename from Modules/Relationships/src/Relationships.Application/ApplicationErrors.cs rename to Modules/Relationships/src/Relationships.Module/ApplicationErrors.cs index 9782c0b896..77c9c469c1 100644 --- a/Modules/Relationships/src/Relationships.Application/ApplicationErrors.cs +++ b/Modules/Relationships/src/Relationships.Module/ApplicationErrors.cs @@ -1,6 +1,6 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -namespace Backbone.Modules.Relationships.Application; +namespace Backbone.Modules.Relationships.Module; public static class ApplicationErrors { diff --git a/Modules/Relationships/src/Relationships.Application/Extensions/IServiceCollectionExtensions.cs b/Modules/Relationships/src/Relationships.Module/ApplicationServiceCollectionExtensions.cs similarity index 75% rename from Modules/Relationships/src/Relationships.Application/Extensions/IServiceCollectionExtensions.cs rename to Modules/Relationships/src/Relationships.Module/ApplicationServiceCollectionExtensions.cs index f52ab6ecf6..daaf573734 100644 --- a/Modules/Relationships/src/Relationships.Application/Extensions/IServiceCollectionExtensions.cs +++ b/Modules/Relationships/src/Relationships.Module/ApplicationServiceCollectionExtensions.cs @@ -1,13 +1,14 @@ using System.Reflection; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Application.MediatR; -using Backbone.Modules.Relationships.Application.RelationshipTemplates.Commands.CreateRelationshipTemplate; +using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.CreateRelationshipTemplate; using FluentValidation; using Microsoft.Extensions.DependencyInjection; +using Swashbuckle.AspNetCore.SwaggerGen; -namespace Backbone.Modules.Relationships.Application.Extensions; +namespace Backbone.Modules.Relationships.Module; -public static class IServiceCollectionExtensions +internal static class ApplicationServiceCollectionExtensions { extension(IServiceCollection services) { @@ -23,6 +24,7 @@ public void AddApplication() services.AddValidatorsFromAssembly(typeof(Validator).Assembly); services.AddEventHandlers(); + services.Configure(options => options.OperationFilter()); } private void AddEventHandlers() diff --git a/Modules/Relationships/src/Relationships.Application/DomainEvents/Incoming/FeatureFlagsOfIdentityChanged/FeatureFlagsOfIdentityChangedDomainEventHandler.cs b/Modules/Relationships/src/Relationships.Module/Features/DomainEvents/FeatureFlagsOfIdentityChanged/Handler.cs similarity index 90% rename from Modules/Relationships/src/Relationships.Application/DomainEvents/Incoming/FeatureFlagsOfIdentityChanged/FeatureFlagsOfIdentityChangedDomainEventHandler.cs rename to Modules/Relationships/src/Relationships.Module/Features/DomainEvents/FeatureFlagsOfIdentityChanged/Handler.cs index 4ff4296711..174a7dfb91 100644 --- a/Modules/Relationships/src/Relationships.Application/DomainEvents/Incoming/FeatureFlagsOfIdentityChanged/FeatureFlagsOfIdentityChangedDomainEventHandler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/DomainEvents/FeatureFlagsOfIdentityChanged/Handler.cs @@ -1,14 +1,14 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Devices.Contracts.DomainEvents; -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Contracts.DomainEvents; -using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; +using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using Backbone.Modules.Relationships.Domain.DomainEvents; using Backbone.Tooling.Extensions; -namespace Backbone.Modules.Relationships.Application.DomainEvents.Incoming.FeatureFlagsOfIdentityChanged; +namespace Backbone.Modules.Relationships.Module.Features.DomainEvents.FeatureFlagsOfIdentityChanged; public class FeatureFlagsOfIdentityChangedDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Relationships/src/Relationships.Application/DomainEvents/Incoming/IdentityDeleted/IdentityDeletedDomainEventHandler.cs b/Modules/Relationships/src/Relationships.Module/Features/DomainEvents/IdentityDeleted/Handler.cs similarity index 90% rename from Modules/Relationships/src/Relationships.Application/DomainEvents/Incoming/IdentityDeleted/IdentityDeletedDomainEventHandler.cs rename to Modules/Relationships/src/Relationships.Module/Features/DomainEvents/IdentityDeleted/Handler.cs index f5be9f8eaf..8e18f708dd 100644 --- a/Modules/Relationships/src/Relationships.Application/DomainEvents/Incoming/IdentityDeleted/IdentityDeletedDomainEventHandler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/DomainEvents/IdentityDeleted/Handler.cs @@ -1,12 +1,12 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.Modules.Devices.Contracts.DomainEvents; -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Contracts.DomainEvents; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using Backbone.Modules.Relationships.Domain.DomainEvents; using Backbone.Tooling.Extensions; -namespace Backbone.Modules.Relationships.Application.DomainEvents.Incoming.IdentityDeleted; +namespace Backbone.Modules.Relationships.Module.Features.DomainEvents.IdentityDeleted; public class IdentityDeletedDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Relationships/src/Relationships.Application/DomainEvents/Incoming/IdentityDeletionCancelled/IdentityDeletionCancelledDomainEventHandler.cs b/Modules/Relationships/src/Relationships.Module/Features/DomainEvents/IdentityDeletionCancelled/Handler.cs similarity index 90% rename from Modules/Relationships/src/Relationships.Application/DomainEvents/Incoming/IdentityDeletionCancelled/IdentityDeletionCancelledDomainEventHandler.cs rename to Modules/Relationships/src/Relationships.Module/Features/DomainEvents/IdentityDeletionCancelled/Handler.cs index 65d737e4c6..421f5fd14b 100644 --- a/Modules/Relationships/src/Relationships.Application/DomainEvents/Incoming/IdentityDeletionCancelled/IdentityDeletionCancelledDomainEventHandler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/DomainEvents/IdentityDeletionCancelled/Handler.cs @@ -1,12 +1,12 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.Modules.Devices.Contracts.DomainEvents; -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Contracts.DomainEvents; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using Backbone.Modules.Relationships.Domain.DomainEvents; using Backbone.Tooling.Extensions; -namespace Backbone.Modules.Relationships.Application.DomainEvents.Incoming.IdentityDeletionCancelled; +namespace Backbone.Modules.Relationships.Module.Features.DomainEvents.IdentityDeletionCancelled; public class IdentityDeletionCancelledDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Relationships/src/Relationships.Application/DomainEvents/Incoming/IdentityToBeDeleted/IdentityToBeDeletedDomainEventHandler.cs b/Modules/Relationships/src/Relationships.Module/Features/DomainEvents/IdentityToBeDeleted/Handler.cs similarity index 91% rename from Modules/Relationships/src/Relationships.Application/DomainEvents/Incoming/IdentityToBeDeleted/IdentityToBeDeletedDomainEventHandler.cs rename to Modules/Relationships/src/Relationships.Module/Features/DomainEvents/IdentityToBeDeleted/Handler.cs index 0102f904de..8ff8811ad4 100644 --- a/Modules/Relationships/src/Relationships.Application/DomainEvents/Incoming/IdentityToBeDeleted/IdentityToBeDeletedDomainEventHandler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/DomainEvents/IdentityToBeDeleted/Handler.cs @@ -1,12 +1,12 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.Modules.Devices.Contracts.DomainEvents; -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Contracts.DomainEvents; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using Backbone.Modules.Relationships.Domain.DomainEvents; using Backbone.Tooling.Extensions; -namespace Backbone.Modules.Relationships.Application.DomainEvents.Incoming.IdentityToBeDeleted; +namespace Backbone.Modules.Relationships.Module.Features.DomainEvents.IdentityToBeDeleted; public class IdentityToBeDeletedDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Relationships/src/Relationships.Application/Identities/IdentityDeleter.cs b/Modules/Relationships/src/Relationships.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs similarity index 67% rename from Modules/Relationships/src/Relationships.Application/Identities/IdentityDeleter.cs rename to Modules/Relationships/src/Relationships.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs index cc11a11497..6331986657 100644 --- a/Modules/Relationships/src/Relationships.Application/Identities/IdentityDeleter.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs @@ -1,12 +1,12 @@ -using Backbone.BuildingBlocks.Application.Identities; +using Backbone.BuildingBlocks.Application.Identities; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Relationships.Application.Relationships.Commands.DecomposeAndAnonymizeRelationshipsOfIdentity; -using Backbone.Modules.Relationships.Application.RelationshipTemplates.Commands.AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity; -using Backbone.Modules.Relationships.Application.RelationshipTemplates.Commands.AnonymizeRelationshipTemplatesForIdentity; -using Backbone.Modules.Relationships.Application.RelationshipTemplates.Commands.DeleteRelationshipTemplatesOfIdentity; +using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity; +using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplatesForIdentity; +using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplatesOfIdentity; +using Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeAndAnonymizeRelationshipsOfIdentity; using MediatR; -namespace Backbone.Modules.Relationships.Application.Identities; +namespace Backbone.Modules.Relationships.Module.Features.Identities.DeleteIdentity; public class IdentityDeleter : IIdentityDeleter { diff --git a/Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Endpoint.cs new file mode 100644 index 0000000000..eaac44c318 --- /dev/null +++ b/Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Endpoint.cs @@ -0,0 +1,27 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Relationships.Module.Features.PublicRelationshipTemplateReferences.ListPublicRelationshipTemplateReferences; + +internal static class Endpoint +{ + public static IEndpointRouteBuilder MapListPublicRelationshipTemplateReferencesEndpoint(this IEndpointRouteBuilder endpoints) + { + endpoints.MapGet("api/poc/PublicRelationshipTemplateReferences", Handle) + .RequireAuthorization("OpenIddict.Validation.AspNetCore") + .ExcludeFromDescription() + .WithMinimalApiErrorHandling(); + return endpoints; + } + + private static async Task Handle(IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new ListPublicRelationshipTemplateReferencesQuery(), cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Handler.cs new file mode 100644 index 0000000000..e84e2c89fd --- /dev/null +++ b/Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Handler.cs @@ -0,0 +1,16 @@ +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; +using MediatR; +using Microsoft.Extensions.Configuration; + +namespace Backbone.Modules.Relationships.Module.Features.PublicRelationshipTemplateReferences.ListPublicRelationshipTemplateReferences; + +public class Handler(IUserContext userContext, IConfiguration configuration) + : IRequestHandler> +{ + public Task> Handle(ListPublicRelationshipTemplateReferencesQuery request, CancellationToken cancellationToken) + { + var definitions = new Dictionary>(); + configuration.GetSection("Modules:Relationships:PublicRelationshipTemplateReferences").Bind(definitions); + return Task.FromResult(definitions.GetValueOrDefault(userContext.GetClientId()) ?? []); + } +} diff --git a/Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Query.cs b/Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Query.cs new file mode 100644 index 0000000000..e75f5fcc95 --- /dev/null +++ b/Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Query.cs @@ -0,0 +1,5 @@ +using MediatR; + +namespace Backbone.Modules.Relationships.Module.Features.PublicRelationshipTemplateReferences.ListPublicRelationshipTemplateReferences; + +public class ListPublicRelationshipTemplateReferencesQuery : IRequest>; diff --git a/Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Response.cs b/Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Response.cs new file mode 100644 index 0000000000..585cf0ce28 --- /dev/null +++ b/Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Response.cs @@ -0,0 +1,15 @@ +using System.ComponentModel.DataAnnotations; + +namespace Backbone.Modules.Relationships.Module.Features.PublicRelationshipTemplateReferences.ListPublicRelationshipTemplateReferences; + +public class PublicRelationshipTemplateReferenceDefinition +{ + [Required] + public string Title { get; set; } = string.Empty; + + [Required] + public string Description { get; set; } = string.Empty; + + [Required] + public string TruncatedReference { get; set; } = string.Empty; +} diff --git a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentityCommand.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Command.cs similarity index 54% rename from Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentityCommand.cs rename to Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Command.cs index 91aef0dbe0..08155e04c6 100644 --- a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentityCommand.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Relationships.Application.RelationshipTemplates.Commands.AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity; +namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity; public class AnonymizeRelationshipTemplateAllocationsAllocatedByIdentityCommand : IRequest { diff --git a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Handler.cs similarity index 84% rename from Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Handler.cs rename to Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Handler.cs index adab188796..093e1f0f5e 100644 --- a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Handler.cs @@ -1,9 +1,9 @@ -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; using MediatR; using Microsoft.Extensions.Options; -namespace Backbone.Modules.Relationships.Application.RelationshipTemplates.Commands.AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity; +namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity; public class Handler : IRequestHandler { diff --git a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Validator.cs similarity index 74% rename from Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Validator.cs rename to Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Validator.cs index 0461f069aa..9f59c69aa1 100644 --- a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Validator.cs @@ -2,7 +2,7 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; using FluentValidation; -namespace Backbone.Modules.Relationships.Application.RelationshipTemplates.Commands.AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity; +namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity; public class Validator : AbstractValidator { diff --git a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/AnonymizeRelationshipTemplatesForIdentity/AnonymizeRelationshipTemplatesForIdentityCommand.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplatesForIdentity/Command.cs similarity index 54% rename from Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/AnonymizeRelationshipTemplatesForIdentity/AnonymizeRelationshipTemplatesForIdentityCommand.cs rename to Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplatesForIdentity/Command.cs index 45bb29aace..42f2d8dd18 100644 --- a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/AnonymizeRelationshipTemplatesForIdentity/AnonymizeRelationshipTemplatesForIdentityCommand.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplatesForIdentity/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Relationships.Application.RelationshipTemplates.Commands.AnonymizeRelationshipTemplatesForIdentity; +namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplatesForIdentity; public class AnonymizeRelationshipTemplatesForIdentityCommand : IRequest { diff --git a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/AnonymizeRelationshipTemplatesForIdentity/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplatesForIdentity/Handler.cs similarity index 85% rename from Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/AnonymizeRelationshipTemplatesForIdentity/Handler.cs rename to Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplatesForIdentity/Handler.cs index d0378a25d6..85f8708ba1 100644 --- a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/AnonymizeRelationshipTemplatesForIdentity/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplatesForIdentity/Handler.cs @@ -1,10 +1,10 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; using MediatR; using Microsoft.Extensions.Options; -namespace Backbone.Modules.Relationships.Application.RelationshipTemplates.Commands.AnonymizeRelationshipTemplatesForIdentity; +namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplatesForIdentity; public class Handler : IRequestHandler { diff --git a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/AnonymizeRelationshipTemplatesForIdentity/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplatesForIdentity/Validator.cs similarity index 75% rename from Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/AnonymizeRelationshipTemplatesForIdentity/Validator.cs rename to Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplatesForIdentity/Validator.cs index f68d8dfe19..40d624105b 100644 --- a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/AnonymizeRelationshipTemplatesForIdentity/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplatesForIdentity/Validator.cs @@ -2,7 +2,7 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; using FluentValidation; -namespace Backbone.Modules.Relationships.Application.RelationshipTemplates.Commands.AnonymizeRelationshipTemplatesForIdentity; +namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplatesForIdentity; public class Validator : AbstractValidator { diff --git a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/CreateRelationshipTemplate/CreateRelationshipTemplateCommand.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Command.cs similarity index 80% rename from Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/CreateRelationshipTemplate/CreateRelationshipTemplateCommand.cs rename to Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Command.cs index 9286243582..b5d45156c2 100644 --- a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/CreateRelationshipTemplate/CreateRelationshipTemplateCommand.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Command.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.Attributes; using MediatR; -namespace Backbone.Modules.Relationships.Application.RelationshipTemplates.Commands.CreateRelationshipTemplate; +namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.CreateRelationshipTemplate; [ApplyQuotasForMetrics("NumberOfRelationshipTemplates")] public class CreateRelationshipTemplateCommand : IRequest diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Endpoint.cs new file mode 100644 index 0000000000..a151db3497 --- /dev/null +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Endpoint.cs @@ -0,0 +1,29 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.CreateRelationshipTemplate; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapCreateRelationshipTemplateEndpoint(this RouteGroupBuilder group) + { + group.MapPost("", Handle) + .Produces>(StatusCodes.Status201Created) + .Produces(StatusCodes.Status400BadRequest); + return group; + } + + private static async Task Handle([FromBody] CreateRelationshipTemplateCommand request, HttpContext context, IMediator mediator, CancellationToken cancellationToken) + { + if (request.Content == null) + throw new BadHttpRequestException("Content is required."); + + var response = await mediator.Send(request, cancellationToken); + return EnvelopeHttpResults.CreatedAtRoute("GetRelationshipTemplate", new { id = response.Id, v = context.Request.RouteValues["v"] }, response); + } +} diff --git a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/CreateRelationshipTemplate/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Handler.cs similarity index 87% rename from Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/CreateRelationshipTemplate/Handler.cs rename to Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Handler.cs index 728e0bfff5..ce9e4ed8e6 100644 --- a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/CreateRelationshipTemplate/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Handler.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; using MediatR; -namespace Backbone.Modules.Relationships.Application.RelationshipTemplates.Commands.CreateRelationshipTemplate; +namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.CreateRelationshipTemplate; public class Handler : IRequestHandler { diff --git a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/CreateRelationshipTemplate/CreateRelationshipTemplateResponse.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Response.cs similarity index 78% rename from Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/CreateRelationshipTemplate/CreateRelationshipTemplateResponse.cs rename to Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Response.cs index 24e0f51436..1efc64813f 100644 --- a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/CreateRelationshipTemplate/CreateRelationshipTemplateResponse.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Response.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; -namespace Backbone.Modules.Relationships.Application.RelationshipTemplates.Commands.CreateRelationshipTemplate; +namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.CreateRelationshipTemplate; public class CreateRelationshipTemplateResponse { diff --git a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/CreateRelationshipTemplate/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Validator.cs similarity index 92% rename from Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/CreateRelationshipTemplate/Validator.cs rename to Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Validator.cs index e5faf6e9b9..b90ff3f662 100644 --- a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/CreateRelationshipTemplate/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Validator.cs @@ -3,11 +3,11 @@ using Backbone.BuildingBlocks.Application.FluentValidation; using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; -using Backbone.Tooling; using Backbone.Tooling.Extensions; +using Backbone.Tooling; using FluentValidation; -namespace Backbone.Modules.Relationships.Application.RelationshipTemplates.Commands.CreateRelationshipTemplate; +namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.CreateRelationshipTemplate; public class Validator : AbstractValidator { diff --git a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/DeleteRelationshipTemplate/DeleteRelationshipTemplateCommand.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Command.cs similarity index 53% rename from Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/DeleteRelationshipTemplate/DeleteRelationshipTemplateCommand.cs rename to Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Command.cs index 1dd0639fe7..d1c6bf4ca3 100644 --- a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/DeleteRelationshipTemplate/DeleteRelationshipTemplateCommand.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Relationships.Application.RelationshipTemplates.Commands.DeleteRelationshipTemplate; +namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplate; public class DeleteRelationshipTemplateCommand : IRequest { diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Endpoint.cs new file mode 100644 index 0000000000..a8bb368a17 --- /dev/null +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Endpoint.cs @@ -0,0 +1,27 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplate; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapDeleteRelationshipTemplateEndpoint(this RouteGroupBuilder group) + { + group.MapDelete("{id}", Handle) + .Produces(StatusCodes.Status204NoContent) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status404NotFound); + return group; + } + + private static async Task Handle([FromRoute] string id, IMediator mediator, CancellationToken cancellationToken) + { + await mediator.Send(new DeleteRelationshipTemplateCommand { Id = id }, cancellationToken); + return Results.NoContent(); + } +} diff --git a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/DeleteRelationshipTemplate/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Handler.cs similarity index 86% rename from Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/DeleteRelationshipTemplate/Handler.cs rename to Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Handler.cs index 5d00ad33c8..5a4db31756 100644 --- a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/DeleteRelationshipTemplate/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Handler.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; using MediatR; -namespace Backbone.Modules.Relationships.Application.RelationshipTemplates.Commands.DeleteRelationshipTemplate; +namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplate; public class Handler : IRequestHandler { diff --git a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/DeleteRelationshipTemplate/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Validator.cs similarity index 77% rename from Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/DeleteRelationshipTemplate/Validator.cs rename to Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Validator.cs index 932550ed9a..64cf1d913d 100644 --- a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/DeleteRelationshipTemplate/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Validator.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; using FluentValidation; -namespace Backbone.Modules.Relationships.Application.RelationshipTemplates.Commands.DeleteRelationshipTemplate; +namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplate; public class Validator : AbstractValidator { diff --git a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/DeleteRelationshipTemplatesOfIdentity/DeleteRelationshipTemplatesOfIdentityCommand.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/Command.cs similarity index 54% rename from Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/DeleteRelationshipTemplatesOfIdentity/DeleteRelationshipTemplatesOfIdentityCommand.cs rename to Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/Command.cs index 3b352dfd0f..861f3a37f0 100644 --- a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/DeleteRelationshipTemplatesOfIdentity/DeleteRelationshipTemplatesOfIdentityCommand.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Relationships.Application.RelationshipTemplates.Commands.DeleteRelationshipTemplatesOfIdentity; +namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplatesOfIdentity; public class DeleteRelationshipTemplatesOfIdentityCommand : IRequest { diff --git a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/DeleteRelationshipTemplatesOfIdentity/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/Handler.cs similarity index 77% rename from Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/DeleteRelationshipTemplatesOfIdentity/Handler.cs rename to Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/Handler.cs index 4b5b3456d8..b94f382a36 100644 --- a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/DeleteRelationshipTemplatesOfIdentity/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/Handler.cs @@ -1,8 +1,8 @@ -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; using MediatR; -namespace Backbone.Modules.Relationships.Application.RelationshipTemplates.Commands.DeleteRelationshipTemplatesOfIdentity; +namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplatesOfIdentity; public class Handler : IRequestHandler { diff --git a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/DeleteRelationshipTemplatesOfIdentity/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/Validator.cs similarity index 75% rename from Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/DeleteRelationshipTemplatesOfIdentity/Validator.cs rename to Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/Validator.cs index f89b7fce40..c0423498d4 100644 --- a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Commands/DeleteRelationshipTemplatesOfIdentity/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/Validator.cs @@ -2,7 +2,7 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; using FluentValidation; -namespace Backbone.Modules.Relationships.Application.RelationshipTemplates.Commands.DeleteRelationshipTemplatesOfIdentity; +namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplatesOfIdentity; public class Validator : AbstractValidator { diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Endpoint.cs new file mode 100644 index 0000000000..8e8e93190d --- /dev/null +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Endpoint.cs @@ -0,0 +1,29 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using Backbone.Modules.Relationships.Module.Features.Shared; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.GetRelationshipTemplate; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapGetRelationshipTemplateEndpoint(this RouteGroupBuilder group) + { + group.MapGet("{id}", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status404NotFound) + .WithMetadata(new RouteNameMetadata("GetRelationshipTemplate")); + return group; + } + + private static async Task Handle([FromRoute] string id, [FromQuery] Base64QueryValue? password, IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new GetRelationshipTemplateQuery { Id = id, Password = password?.Value }, cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Queries/GetRelationshipTemplate/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Handler.cs similarity index 87% rename from Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Queries/GetRelationshipTemplate/Handler.cs rename to Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Handler.cs index 19b9ac55df..4c5c011d62 100644 --- a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Queries/GetRelationshipTemplate/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Handler.cs @@ -1,11 +1,11 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Relationships.Application.Relationships.DTOs; +using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; +using Backbone.Modules.Relationships.Module.Features.Shared; using MediatR; -namespace Backbone.Modules.Relationships.Application.RelationshipTemplates.Queries.GetRelationshipTemplate; +namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.GetRelationshipTemplate; public class Handler : IRequestHandler { diff --git a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Queries/GetRelationshipTemplate/GetRelationshipTemplateQuery.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Query.cs similarity index 50% rename from Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Queries/GetRelationshipTemplate/GetRelationshipTemplateQuery.cs rename to Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Query.cs index b431f1d378..be9faa4e82 100644 --- a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Queries/GetRelationshipTemplate/GetRelationshipTemplateQuery.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Query.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Relationships.Application.Relationships.DTOs; +using Backbone.Modules.Relationships.Module.Features.Shared; using MediatR; -namespace Backbone.Modules.Relationships.Application.RelationshipTemplates.Queries.GetRelationshipTemplate; +namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.GetRelationshipTemplate; public class GetRelationshipTemplateQuery : IRequest { diff --git a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Queries/GetRelationshipTemplate/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Validator.cs similarity index 83% rename from Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Queries/GetRelationshipTemplate/Validator.cs rename to Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Validator.cs index d64dc56198..982aa91993 100644 --- a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Queries/GetRelationshipTemplate/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Validator.cs @@ -3,7 +3,7 @@ using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; using FluentValidation; -namespace Backbone.Modules.Relationships.Application.RelationshipTemplates.Queries.GetRelationshipTemplate; +namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.GetRelationshipTemplate; public class Validator : AbstractValidator { diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Endpoint.cs new file mode 100644 index 0000000000..4e574bc0fb --- /dev/null +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Endpoint.cs @@ -0,0 +1,39 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; +using Backbone.BuildingBlocks.Application.Pagination; +using Backbone.Modules.Relationships.Abstractions; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; +using Microsoft.Extensions.Options; +using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; + +namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.ListRelationshipTemplates; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapListRelationshipTemplatesEndpoint(this RouteGroupBuilder group) + { + group.MapGet("", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest); + return group; + } + + private static async Task Handle([FromQuery(Name = "PageNumber")] int? pageNumber, [FromQuery(Name = "PageSize")] int? pageSize, + [FromQuery] string[]? ids, HttpRequest request, IMediator mediator, IOptions options, CancellationToken cancellationToken) + { + var queryItems = TemplateQueryItems.Read(request.Query); + if (queryItems.Count == 0) + queryItems = (ids ?? []).Select(id => new ListRelationshipTemplatesQueryItem { Id = id }).ToList(); + var paginationFilter = new PaginationFilter { PageNumber = pageNumber ?? 1, PageSize = pageSize ?? options.Value.Pagination.DefaultPageSize }; + if (paginationFilter.PageSize > options.Value.Pagination.MaxPageSize) + throw new ApplicationException(GenericApplicationErrors.Validation.InvalidPageSize(options.Value.Pagination.MaxPageSize)); + + var response = await mediator.Send(new ListRelationshipTemplatesQuery { PaginationFilter = paginationFilter, QueryItems = queryItems }, cancellationToken); + return EnvelopeHttpResults.Paged(response); + } +} diff --git a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Queries/ListRelationshipTemplates/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Handler.cs similarity index 84% rename from Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Queries/ListRelationshipTemplates/Handler.cs rename to Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Handler.cs index 4f3a43b853..f8d855fb81 100644 --- a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Queries/ListRelationshipTemplates/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Handler.cs @@ -1,8 +1,8 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Relationships.Abstractions; using MediatR; -namespace Backbone.Modules.Relationships.Application.RelationshipTemplates.Queries.ListRelationshipTemplates; +namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.ListRelationshipTemplates; public class Handler : IRequestHandler { diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/OpenApiOperationFilter.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/OpenApiOperationFilter.cs new file mode 100644 index 0000000000..443db9589c --- /dev/null +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/OpenApiOperationFilter.cs @@ -0,0 +1,23 @@ +using Backbone.Modules.Relationships.Abstractions; +using Microsoft.OpenApi; +using Swashbuckle.AspNetCore.SwaggerGen; + +namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.ListRelationshipTemplates; + +internal sealed class OpenApiOperationFilter : IOperationFilter +{ + public void Apply(OpenApiOperation operation, OperationFilterContext context) + { + if (context.MethodInfo.DeclaringType != typeof(Endpoint)) + return; + + // The legacy complex array is read from HttpRequest and still belongs in the public API description. + operation.Parameters ??= []; + operation.Parameters.Add(new OpenApiParameter + { + Name = "templates", + In = ParameterLocation.Query, + Schema = context.SchemaGenerator.GenerateSchema(typeof(ListRelationshipTemplatesQueryItem[]), context.SchemaRepository) + }); + } +} diff --git a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Queries/ListRelationshipTemplates/ListRelationshipTemplatesQuery.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Query.cs similarity index 56% rename from Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Queries/ListRelationshipTemplates/ListRelationshipTemplatesQuery.cs rename to Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Query.cs index bd87d0b5c5..4f2e7a4f90 100644 --- a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Queries/ListRelationshipTemplates/ListRelationshipTemplatesQuery.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Query.cs @@ -1,7 +1,8 @@ using Backbone.BuildingBlocks.Application.Pagination; +using Backbone.Modules.Relationships.Abstractions; using MediatR; -namespace Backbone.Modules.Relationships.Application.RelationshipTemplates.Queries.ListRelationshipTemplates; +namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.ListRelationshipTemplates; public class ListRelationshipTemplatesQuery : IRequest { @@ -9,8 +10,3 @@ public class ListRelationshipTemplatesQuery : IRequest QueryItems { get; init; } } -public class ListRelationshipTemplatesQueryItem -{ - public required string Id { get; set; } - public byte[]? Password { get; set; } -} diff --git a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Queries/ListRelationshipTemplates/ListRelationshipTemplatesResponse.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Response.cs similarity index 78% rename from Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Queries/ListRelationshipTemplates/ListRelationshipTemplatesResponse.cs rename to Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Response.cs index c8cfd1e364..abbd0a9618 100644 --- a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Queries/ListRelationshipTemplates/ListRelationshipTemplatesResponse.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Response.cs @@ -1,9 +1,9 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.Persistence.Database; using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.Modules.Relationships.Application.Relationships.DTOs; using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; +using Backbone.Modules.Relationships.Module.Features.Shared; -namespace Backbone.Modules.Relationships.Application.RelationshipTemplates.Queries.ListRelationshipTemplates; +namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.ListRelationshipTemplates; public class ListRelationshipTemplatesResponse : PagedResponse { diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/TemplateQueryItems.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/TemplateQueryItems.cs new file mode 100644 index 0000000000..e49e06efbd --- /dev/null +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/TemplateQueryItems.cs @@ -0,0 +1,33 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.Modules.Relationships.Abstractions; +using Microsoft.AspNetCore.Http; + +namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.ListRelationshipTemplates; + +internal static class TemplateQueryItems +{ + public static List Read(IQueryCollection query) + { + var items = new List(); + // Preserve the GenericArrayModelBinder's dotted keys and contiguous indices. + for (var i = 0; ; i++) + { + var hasId = query.TryGetValue($"templates.{i}.id", out var id); + var hasPassword = query.TryGetValue($"templates.{i}.password", out var password); + if (!hasId && !hasPassword) + break; + if (!hasId) + throw new BadHttpRequestException("A template id is required."); + + byte[]? decodedPassword = null; + if (hasPassword) + { + if (!Base64QueryValue.TryParse(password.ToString(), out var value)) + throw new BadHttpRequestException("The template password is not valid Base64."); + decodedPassword = password.ToString().Length == 0 ? [] : value.Value; + } + items.Add(new ListRelationshipTemplatesQueryItem { Id = id.ToString(), Password = decodedPassword }); + } + return items; + } +} diff --git a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Queries/ListRelationshipTemplates/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Validator.cs similarity index 86% rename from Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Queries/ListRelationshipTemplates/Validator.cs rename to Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Validator.cs index 1ec7c21e2c..b34baf42d4 100644 --- a/Modules/Relationships/src/Relationships.Application/RelationshipTemplates/Queries/ListRelationshipTemplates/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Validator.cs @@ -1,9 +1,10 @@ using Backbone.BuildingBlocks.Application.Extensions; using Backbone.BuildingBlocks.Application.FluentValidation; +using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; using FluentValidation; -namespace Backbone.Modules.Relationships.Application.RelationshipTemplates.Queries.ListRelationshipTemplates; +namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.ListRelationshipTemplates; // ReSharper disable once UnusedMember.Global public class Validator : AbstractValidator diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/AcceptRelationship/AcceptRelationshipCommand.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Command.cs similarity index 77% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/AcceptRelationship/AcceptRelationshipCommand.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Command.cs index 6fb9721f88..738aec198c 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/AcceptRelationship/AcceptRelationshipCommand.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Command.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.Attributes; using MediatR; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.AcceptRelationship; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.AcceptRelationship; [ApplyQuotasForMetrics("NumberOfRelationships")] public class AcceptRelationshipCommand : IRequest diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Endpoint.cs new file mode 100644 index 0000000000..58bdd6a3d2 --- /dev/null +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Endpoint.cs @@ -0,0 +1,27 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Relationships.Module.Features.Relationships.AcceptRelationship; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapAcceptRelationshipEndpoint(this RouteGroupBuilder group) + { + group.MapPut("{id}/Accept", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status404NotFound); + return group; + } + + private static async Task Handle([FromRoute] string id, [FromBody] AcceptRelationshipRequest request, IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new AcceptRelationshipCommand { RelationshipId = id, CreationResponseContent = request.CreationResponseContent }, cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/AcceptRelationship/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Handler.cs similarity index 88% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/AcceptRelationship/Handler.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Handler.cs index 6bf91bf761..c4997b55e8 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/AcceptRelationship/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Handler.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using MediatR; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.AcceptRelationship; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.AcceptRelationship; public class Handler : IRequestHandler { diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Request.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Request.cs new file mode 100644 index 0000000000..4087a08dc0 --- /dev/null +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Request.cs @@ -0,0 +1,6 @@ +namespace Backbone.Modules.Relationships.Module.Features.Relationships.AcceptRelationship; + +public class AcceptRelationshipRequest +{ + public byte[]? CreationResponseContent { get; set; } = []; +} diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/AcceptRelationship/AcceptRelationshipResponse.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Response.cs similarity index 58% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/AcceptRelationship/AcceptRelationshipResponse.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Response.cs index 2da15def8b..268bbb5b51 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/AcceptRelationship/AcceptRelationshipResponse.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Response.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Relationships.Application.Relationships.DTOs; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; +using Backbone.Modules.Relationships.Module.Features.Shared; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.AcceptRelationship; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.AcceptRelationship; public class AcceptRelationshipResponse : RelationshipMetadataDTO { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/AcceptRelationship/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Validator.cs similarity index 78% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/AcceptRelationship/Validator.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Validator.cs index 542c249fe6..a36fd0c870 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/AcceptRelationship/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Validator.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using FluentValidation; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.AcceptRelationship; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.AcceptRelationship; public class Validator : AbstractValidator { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/AcceptRelationshipReactivation/AcceptRelationshipReactivationCommand.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Command.cs similarity index 62% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/AcceptRelationshipReactivation/AcceptRelationshipReactivationCommand.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Command.cs index ccb6f3c83b..91718a4698 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/AcceptRelationshipReactivation/AcceptRelationshipReactivationCommand.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.AcceptRelationshipReactivation; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.AcceptRelationshipReactivation; public class AcceptRelationshipReactivationCommand : IRequest { diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Endpoint.cs new file mode 100644 index 0000000000..d24553bace --- /dev/null +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Endpoint.cs @@ -0,0 +1,27 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Relationships.Module.Features.Relationships.AcceptRelationshipReactivation; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapAcceptRelationshipReactivationEndpoint(this RouteGroupBuilder group) + { + group.MapPut("{id}/Reactivate/Accept", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status404NotFound); + return group; + } + + private static async Task Handle([FromRoute] string id, IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new AcceptRelationshipReactivationCommand { RelationshipId = id }, cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/AcceptRelationshipReactivation/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Handler.cs similarity index 87% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/AcceptRelationshipReactivation/Handler.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Handler.cs index 93e6d13e13..66483015ae 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/AcceptRelationshipReactivation/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Handler.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using MediatR; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.AcceptRelationshipReactivation; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.AcceptRelationshipReactivation; public class Handler : IRequestHandler { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/AcceptRelationshipReactivation/AcceptRelationshipReactivationResponse.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Response.cs similarity index 59% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/AcceptRelationshipReactivation/AcceptRelationshipReactivationResponse.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Response.cs index edb292d7ba..adff6acf31 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/AcceptRelationshipReactivation/AcceptRelationshipReactivationResponse.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Response.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Relationships.Application.Relationships.DTOs; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; +using Backbone.Modules.Relationships.Module.Features.Shared; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.AcceptRelationshipReactivation; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.AcceptRelationshipReactivation; public class AcceptRelationshipReactivationResponse : RelationshipMetadataDTO { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/AcceptRelationshipReactivation/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Validator.cs similarity index 77% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/AcceptRelationshipReactivation/Validator.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Validator.cs index 05ff9096a0..43016ebf89 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/AcceptRelationshipReactivation/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Validator.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using FluentValidation; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.AcceptRelationshipReactivation; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.AcceptRelationshipReactivation; public class Validator : AbstractValidator { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/CanEstablishRelationship/CanEstablishRelationshipQueryValidator.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/CanEstablishRelationshipQueryValidator.cs similarity index 78% rename from Modules/Relationships/src/Relationships.Application/Relationships/Queries/CanEstablishRelationship/CanEstablishRelationshipQueryValidator.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/CanEstablishRelationshipQueryValidator.cs index 988c5ed6a2..b3f569dd4f 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/CanEstablishRelationship/CanEstablishRelationshipQueryValidator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/CanEstablishRelationshipQueryValidator.cs @@ -1,7 +1,7 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; using FluentValidation; -namespace Backbone.Modules.Relationships.Application.Relationships.Queries.CanEstablishRelationship; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.CanEstablishRelationship; // ReSharper disable once UnusedType.Global public class CanEstablishRelationshipQueryValidator : AbstractValidator diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Endpoint.cs new file mode 100644 index 0000000000..becb0e029d --- /dev/null +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Endpoint.cs @@ -0,0 +1,29 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using Backbone.Modules.Devices.Contracts; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Relationships.Module.Features.Relationships.CanEstablishRelationship; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapCanEstablishRelationshipEndpoint(this RouteGroupBuilder group) + { + group.MapGet("CanCreate", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest); + return group; + } + + private static async Task Handle([FromQuery(Name = "peer")] string peerAddress, IIdentityStatusProvider identities, IMediator mediator, CancellationToken cancellationToken) + { + var response = !await identities.IsActive(peerAddress, cancellationToken) + ? new CanEstablishRelationshipResponse { CanCreate = false, Code = ApplicationErrors.Relationship.PeerIsToBeDeleted().Code } + : await mediator.Send(new CanEstablishRelationshipQuery { PeerAddress = peerAddress }, cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/CanEstablishRelationship/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Handler.cs similarity index 85% rename from Modules/Relationships/src/Relationships.Application/Relationships/Queries/CanEstablishRelationship/Handler.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Handler.cs index f9b34f74be..1c53d7cffc 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/CanEstablishRelationship/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Handler.cs @@ -1,9 +1,9 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using MediatR; -namespace Backbone.Modules.Relationships.Application.Relationships.Queries.CanEstablishRelationship; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.CanEstablishRelationship; public class Handler : IRequestHandler { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/CanEstablishRelationship/CanEstablishRelationshipQuery.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Query.cs similarity index 62% rename from Modules/Relationships/src/Relationships.Application/Relationships/Queries/CanEstablishRelationship/CanEstablishRelationshipQuery.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Query.cs index b29b232d84..7c38ea9d2f 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/CanEstablishRelationship/CanEstablishRelationshipQuery.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Query.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Relationships.Application.Relationships.Queries.CanEstablishRelationship; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.CanEstablishRelationship; public class CanEstablishRelationshipQuery : IRequest { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/CanEstablishRelationship/CanEstablishRelationshipResponse.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Response.cs similarity index 58% rename from Modules/Relationships/src/Relationships.Application/Relationships/Queries/CanEstablishRelationship/CanEstablishRelationshipResponse.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Response.cs index 8d161eee77..8ed4b4521d 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/CanEstablishRelationship/CanEstablishRelationshipResponse.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Response.cs @@ -1,4 +1,4 @@ -namespace Backbone.Modules.Relationships.Application.Relationships.Queries.CanEstablishRelationship; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.CanEstablishRelationship; public class CanEstablishRelationshipResponse { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/CreateRelationship/CreateRelationshipCommand.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Command.cs similarity index 76% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/CreateRelationship/CreateRelationshipCommand.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Command.cs index 1511d13779..041773d342 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/CreateRelationship/CreateRelationshipCommand.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Command.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.Attributes; using MediatR; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.CreateRelationship; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.CreateRelationship; [ApplyQuotasForMetrics("NumberOfRelationships")] public class CreateRelationshipCommand : IRequest diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Endpoint.cs new file mode 100644 index 0000000000..7854b95ea4 --- /dev/null +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Endpoint.cs @@ -0,0 +1,37 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using Backbone.Modules.Devices.Contracts; +using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.GetRelationshipTemplate; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; +using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; + +namespace Backbone.Modules.Relationships.Module.Features.Relationships.CreateRelationship; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapCreateRelationshipEndpoint(this RouteGroupBuilder group) + { + group.MapPost("", Handle) + .Produces>(StatusCodes.Status201Created) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status404NotFound); + return group; + } + + private static async Task Handle([FromBody] CreateRelationshipCommand request, IIdentityStatusProvider identities, IMediator mediator, CancellationToken cancellationToken) + { + if (request.RelationshipTemplateId == null) + throw new BadHttpRequestException("RelationshipTemplateId is required."); + + var template = await mediator.Send(new GetRelationshipTemplateQuery { Id = request.RelationshipTemplateId }, cancellationToken); + if (!await identities.IsActive(template.CreatedBy, cancellationToken)) + throw new ApplicationException(ApplicationErrors.Relationship.PeerIsToBeDeleted()); + + var response = await mediator.Send(request, cancellationToken); + return EnvelopeHttpResults.Created("", response); + } +} diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/CreateRelationship/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Handler.cs similarity index 93% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/CreateRelationship/Handler.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Handler.cs index 3fbdec379e..d4e628222e 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/CreateRelationship/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Handler.cs @@ -1,12 +1,12 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; +using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; +using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using MediatR; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.CreateRelationship; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.CreateRelationship; public class Handler : IRequestHandler { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/CreateRelationship/CreateRelationshipResponse.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Response.cs similarity index 59% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/CreateRelationship/CreateRelationshipResponse.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Response.cs index 35cb6f5a5e..4e4b3252f5 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/CreateRelationship/CreateRelationshipResponse.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Response.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Relationships.Application.Relationships.DTOs; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; +using Backbone.Modules.Relationships.Module.Features.Shared; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.CreateRelationship; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.CreateRelationship; public class CreateRelationshipResponse : RelationshipMetadataDTO { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/CreateRelationship/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Validator.cs similarity index 86% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/CreateRelationship/Validator.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Validator.cs index 2f49bec75c..ddb95bd783 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/CreateRelationship/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Validator.cs @@ -4,7 +4,7 @@ using Backbone.Tooling.Extensions; using FluentValidation; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.CreateRelationship; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.CreateRelationship; // ReSharper disable once UnusedMember.Global public class Validator : AbstractValidator diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/DecomposeAndAnonymizeRelationshipsOfIdentity/DecomposeAndAnonymizeRelationshipsOfIdentityCommand.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeAndAnonymizeRelationshipsOfIdentity/Command.cs similarity index 55% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/DecomposeAndAnonymizeRelationshipsOfIdentity/DecomposeAndAnonymizeRelationshipsOfIdentityCommand.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeAndAnonymizeRelationshipsOfIdentity/Command.cs index a4b753dcd7..f664eaf954 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/DecomposeAndAnonymizeRelationshipsOfIdentity/DecomposeAndAnonymizeRelationshipsOfIdentityCommand.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeAndAnonymizeRelationshipsOfIdentity/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.DecomposeAndAnonymizeRelationshipsOfIdentity; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeAndAnonymizeRelationshipsOfIdentity; public class DecomposeAndAnonymizeRelationshipsOfIdentityCommand : IRequest { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/DecomposeAndAnonymizeRelationshipsOfIdentity/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeAndAnonymizeRelationshipsOfIdentity/Handler.cs similarity index 87% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/DecomposeAndAnonymizeRelationshipsOfIdentity/Handler.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeAndAnonymizeRelationshipsOfIdentity/Handler.cs index 1b9466b4c3..492a599534 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/DecomposeAndAnonymizeRelationshipsOfIdentity/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeAndAnonymizeRelationshipsOfIdentity/Handler.cs @@ -1,9 +1,9 @@ -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using MediatR; using Microsoft.Extensions.Options; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.DecomposeAndAnonymizeRelationshipsOfIdentity; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeAndAnonymizeRelationshipsOfIdentity; public class Handler : IRequestHandler { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/DecomposeAndAnonymizeRelationshipsOfIdentity/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeAndAnonymizeRelationshipsOfIdentity/Validator.cs similarity index 76% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/DecomposeAndAnonymizeRelationshipsOfIdentity/Validator.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeAndAnonymizeRelationshipsOfIdentity/Validator.cs index 9ab2ca73f8..6e12e4740f 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/DecomposeAndAnonymizeRelationshipsOfIdentity/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeAndAnonymizeRelationshipsOfIdentity/Validator.cs @@ -2,7 +2,7 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; using FluentValidation; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.DecomposeAndAnonymizeRelationshipsOfIdentity; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeAndAnonymizeRelationshipsOfIdentity; public class Validator : AbstractValidator { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/DecomposeRelationship/DecomposeRelationshipCommand.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Command.cs similarity index 62% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/DecomposeRelationship/DecomposeRelationshipCommand.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Command.cs index 76744640f8..b36f731871 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/DecomposeRelationship/DecomposeRelationshipCommand.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.DecomposeRelationship; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeRelationship; public class DecomposeRelationshipCommand : IRequest { diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Endpoint.cs new file mode 100644 index 0000000000..f46fbdc3a4 --- /dev/null +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Endpoint.cs @@ -0,0 +1,27 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeRelationship; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapDecomposeRelationshipEndpoint(this RouteGroupBuilder group) + { + group.MapPut("{id}/Decompose", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status404NotFound); + return group; + } + + private static async Task Handle([FromRoute] string id, IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new DecomposeRelationshipCommand { RelationshipId = id }, cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/DecomposeRelationship/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Handler.cs similarity index 87% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/DecomposeRelationship/Handler.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Handler.cs index 3981d7ad1b..245713e267 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/DecomposeRelationship/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Handler.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using MediatR; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.DecomposeRelationship; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeRelationship; public class Handler : IRequestHandler { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/DecomposeRelationship/DecomposeRelationshipResponse.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Response.cs similarity index 58% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/DecomposeRelationship/DecomposeRelationshipResponse.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Response.cs index 24ee0c04b7..a956898c74 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/DecomposeRelationship/DecomposeRelationshipResponse.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Response.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Relationships.Application.Relationships.DTOs; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; +using Backbone.Modules.Relationships.Module.Features.Shared; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.DecomposeRelationship; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeRelationship; public class DecomposeRelationshipResponse : RelationshipMetadataDTO { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/DecomposeRelationship/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Validator.cs similarity index 78% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/DecomposeRelationship/Validator.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Validator.cs index c5dc103636..432b7de5ce 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/DecomposeRelationship/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Validator.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using FluentValidation; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.DecomposeRelationship; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeRelationship; public class Validator : AbstractValidator { diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ExecuteHousekeeping/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ExecuteHousekeeping/Command.cs new file mode 100644 index 0000000000..ba95313041 --- /dev/null +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ExecuteHousekeeping/Command.cs @@ -0,0 +1,5 @@ +using MediatR; + +namespace Backbone.Modules.Relationships.Module.Features.Relationships.ExecuteHousekeeping; + +public class ExecuteHousekeepingCommand : IRequest; diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/ExecuteHousekeeping/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ExecuteHousekeeping/Handler.cs similarity index 85% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/ExecuteHousekeeping/Handler.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/ExecuteHousekeeping/Handler.cs index 34f6cdff29..41ac0eb27b 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/ExecuteHousekeeping/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ExecuteHousekeeping/Handler.cs @@ -1,10 +1,10 @@ -using Backbone.BuildingBlocks.Application.Housekeeping; -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; +using Backbone.BuildingBlocks.Application.Housekeeping; +using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; +using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using MediatR; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.ExecuteHousekeeping; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.ExecuteHousekeeping; public class Handler : IRequestHandler { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/GetPeerOfActiveIdentityInRelationship/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Handler.cs similarity index 84% rename from Modules/Relationships/src/Relationships.Application/Relationships/Queries/GetPeerOfActiveIdentityInRelationship/Handler.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Handler.cs index 89087832e5..eaa0129f6c 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/GetPeerOfActiveIdentityInRelationship/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Handler.cs @@ -1,9 +1,9 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using MediatR; -namespace Backbone.Modules.Relationships.Application.Relationships.Queries.GetPeerOfActiveIdentityInRelationship; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.GetPeerOfActiveIdentityInRelationship; public class Handler : IRequestHandler { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/GetPeerOfActiveIdentityInRelationship/GetPeerOfActiveIdentityInRelationshipQuery.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Query.cs similarity index 61% rename from Modules/Relationships/src/Relationships.Application/Relationships/Queries/GetPeerOfActiveIdentityInRelationship/GetPeerOfActiveIdentityInRelationshipQuery.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Query.cs index 10704c76e2..a3cd6a6990 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/GetPeerOfActiveIdentityInRelationship/GetPeerOfActiveIdentityInRelationshipQuery.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Query.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Relationships.Application.Relationships.Queries.GetPeerOfActiveIdentityInRelationship; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.GetPeerOfActiveIdentityInRelationship; public class GetPeerOfActiveIdentityInRelationshipQuery : IRequest { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/GetPeerOfActiveIdentityInRelationship/GetPeerOfActiveIdentityInRelationshipResponse.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Response.cs similarity index 50% rename from Modules/Relationships/src/Relationships.Application/Relationships/Queries/GetPeerOfActiveIdentityInRelationship/GetPeerOfActiveIdentityInRelationshipResponse.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Response.cs index 523cb7ece3..d3583287fa 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/GetPeerOfActiveIdentityInRelationship/GetPeerOfActiveIdentityInRelationshipResponse.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Response.cs @@ -1,4 +1,4 @@ -namespace Backbone.Modules.Relationships.Application.Relationships.Queries.GetPeerOfActiveIdentityInRelationship; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.GetPeerOfActiveIdentityInRelationship; public class GetPeerOfActiveIdentityInRelationshipResponse { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/GetPeerOfActiveIdentityInRelationship/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Validator.cs similarity index 76% rename from Modules/Relationships/src/Relationships.Application/Relationships/Queries/GetPeerOfActiveIdentityInRelationship/Validator.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Validator.cs index 2177f0c2ed..206470bf34 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/GetPeerOfActiveIdentityInRelationship/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Validator.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using FluentValidation; -namespace Backbone.Modules.Relationships.Application.Relationships.Queries.GetPeerOfActiveIdentityInRelationship; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.GetPeerOfActiveIdentityInRelationship; public class Validator : AbstractValidator { diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Endpoint.cs new file mode 100644 index 0000000000..ce0baea5c5 --- /dev/null +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Endpoint.cs @@ -0,0 +1,28 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using Backbone.Modules.Relationships.Module.Features.Shared; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Relationships.Module.Features.Relationships.GetRelationship; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapGetRelationshipEndpoint(this RouteGroupBuilder group) + { + group.MapGet("{id}", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status404NotFound); + return group; + } + + private static async Task Handle([FromRoute] string id, IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new GetRelationshipQuery { Id = id }, cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/GetRelationship/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Handler.cs similarity index 81% rename from Modules/Relationships/src/Relationships.Application/Relationships/Queries/GetRelationship/Handler.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Handler.cs index e6cec94f31..ae479c65f8 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/GetRelationship/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Handler.cs @@ -1,11 +1,11 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Relationships.Application.Relationships.DTOs; +using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; +using Backbone.Modules.Relationships.Module.Features.Shared; using MediatR; -namespace Backbone.Modules.Relationships.Application.Relationships.Queries.GetRelationship; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.GetRelationship; public class Handler : IRequestHandler { diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Query.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Query.cs new file mode 100644 index 0000000000..d0284d6603 --- /dev/null +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Query.cs @@ -0,0 +1,9 @@ +using Backbone.Modules.Relationships.Module.Features.Shared; +using MediatR; + +namespace Backbone.Modules.Relationships.Module.Features.Relationships.GetRelationship; + +public class GetRelationshipQuery : IRequest +{ + public required string Id { get; init; } +} diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/GetRelationship/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Validator.cs similarity index 78% rename from Modules/Relationships/src/Relationships.Application/Relationships/Queries/GetRelationship/Validator.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Validator.cs index 509791937c..328a8d1dfd 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/GetRelationship/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Validator.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using FluentValidation; -namespace Backbone.Modules.Relationships.Application.Relationships.Queries.GetRelationship; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.GetRelationship; public class Validator : AbstractValidator { diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Endpoint.cs new file mode 100644 index 0000000000..917ccd096b --- /dev/null +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Endpoint.cs @@ -0,0 +1,35 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; +using Backbone.BuildingBlocks.Application.Pagination; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; +using Microsoft.Extensions.Options; +using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; + +namespace Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationships; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapListRelationshipsEndpoint(this RouteGroupBuilder group) + { + group.MapGet("", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest); + return group; + } + + private static async Task Handle([FromQuery(Name = "PageNumber")] int? pageNumber, [FromQuery(Name = "PageSize")] int? pageSize, + [FromQuery] string[]? ids, IMediator mediator, IOptions options, CancellationToken cancellationToken) + { + var paginationFilter = new PaginationFilter { PageNumber = pageNumber ?? 1, PageSize = pageSize ?? options.Value.Pagination.DefaultPageSize }; + if (paginationFilter.PageSize > options.Value.Pagination.MaxPageSize) + throw new ApplicationException(GenericApplicationErrors.Validation.InvalidPageSize(options.Value.Pagination.MaxPageSize)); + + var response = await mediator.Send(new ListRelationshipsQuery { PaginationFilter = paginationFilter, Ids = (ids ?? []).ToList() }, cancellationToken); + return EnvelopeHttpResults.Paged(response); + } +} diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/ListRelationships/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Handler.cs similarity index 85% rename from Modules/Relationships/src/Relationships.Application/Relationships/Queries/ListRelationships/Handler.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Handler.cs index a971a9b9f9..3092da1ca8 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/ListRelationships/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Handler.cs @@ -1,9 +1,9 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using MediatR; -namespace Backbone.Modules.Relationships.Application.Relationships.Queries.ListRelationships; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationships; public class Handler : IRequestHandler { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/ListRelationships/ListRelationshipsQuery.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Query.cs similarity index 74% rename from Modules/Relationships/src/Relationships.Application/Relationships/Queries/ListRelationships/ListRelationshipsQuery.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Query.cs index d6ef7a3538..1ea7be2ca3 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/ListRelationships/ListRelationshipsQuery.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Query.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.Pagination; using MediatR; -namespace Backbone.Modules.Relationships.Application.Relationships.Queries.ListRelationships; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationships; public class ListRelationshipsQuery : IRequest { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/ListRelationships/ListRelationshipsResponse.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Response.cs similarity index 78% rename from Modules/Relationships/src/Relationships.Application/Relationships/Queries/ListRelationships/ListRelationshipsResponse.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Response.cs index 0364f6b7e5..9056f83e60 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/ListRelationships/ListRelationshipsResponse.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Response.cs @@ -1,9 +1,9 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.Persistence.Database; using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.Modules.Relationships.Application.Relationships.DTOs; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; +using Backbone.Modules.Relationships.Module.Features.Shared; -namespace Backbone.Modules.Relationships.Application.Relationships.Queries.ListRelationships; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationships; public class ListRelationshipsResponse : PagedResponse { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/ListRelationships/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Validator.cs similarity index 89% rename from Modules/Relationships/src/Relationships.Application/Relationships/Queries/ListRelationships/Validator.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Validator.cs index b331294c83..10e266f99e 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/ListRelationships/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Validator.cs @@ -4,7 +4,7 @@ using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using FluentValidation; -namespace Backbone.Modules.Relationships.Application.Relationships.Queries.ListRelationships; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationships; // ReSharper disable once UnusedMember.Global public class Validator : AbstractValidator diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/ListRelationshipsOfIdentity/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Handler.cs similarity index 80% rename from Modules/Relationships/src/Relationships.Application/Relationships/Queries/ListRelationshipsOfIdentity/Handler.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Handler.cs index cc49b40796..99ff3c0b79 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/ListRelationshipsOfIdentity/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Handler.cs @@ -1,8 +1,8 @@ -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using MediatR; -namespace Backbone.Modules.Relationships.Application.Relationships.Queries.ListRelationshipsOfIdentity; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationshipsOfIdentity; public class Handler : IRequestHandler { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/ListRelationshipsOfIdentity/ListRelationshipsOfIdentityQuery.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Query.cs similarity index 62% rename from Modules/Relationships/src/Relationships.Application/Relationships/Queries/ListRelationshipsOfIdentity/ListRelationshipsOfIdentityQuery.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Query.cs index acff3c6260..459a41434c 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/ListRelationshipsOfIdentity/ListRelationshipsOfIdentityQuery.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Query.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Relationships.Application.Relationships.Queries.ListRelationshipsOfIdentity; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationshipsOfIdentity; public class ListRelationshipsOfIdentityQuery : IRequest { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/ListRelationshipsOfIdentity/ListRelationshipsOfIdentityResponse.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Response.cs similarity index 76% rename from Modules/Relationships/src/Relationships.Application/Relationships/Queries/ListRelationshipsOfIdentity/ListRelationshipsOfIdentityResponse.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Response.cs index 44b767be9a..0bb0ac9ca3 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/ListRelationshipsOfIdentity/ListRelationshipsOfIdentityResponse.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Response.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.CQRS.BaseClasses; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; -namespace Backbone.Modules.Relationships.Application.Relationships.Queries.ListRelationshipsOfIdentity; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationshipsOfIdentity; public class ListRelationshipsOfIdentityResponse : CollectionResponseBase { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/ListRelationshipsOfIdentity/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Validator.cs similarity index 77% rename from Modules/Relationships/src/Relationships.Application/Relationships/Queries/ListRelationshipsOfIdentity/Validator.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Validator.cs index 104aaf513e..bc6cce6411 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Queries/ListRelationshipsOfIdentity/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Validator.cs @@ -2,7 +2,7 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; using FluentValidation; -namespace Backbone.Modules.Relationships.Application.Relationships.Queries.ListRelationshipsOfIdentity; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationshipsOfIdentity; public class Validator : AbstractValidator { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RejectRelationship/RejectRelationshipCommand.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Command.cs similarity index 69% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/RejectRelationship/RejectRelationshipCommand.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Command.cs index 08d3982e50..60512a0351 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RejectRelationship/RejectRelationshipCommand.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.RejectRelationship; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.RejectRelationship; public class RejectRelationshipCommand : IRequest { diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Endpoint.cs new file mode 100644 index 0000000000..cc3cb8dae8 --- /dev/null +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Endpoint.cs @@ -0,0 +1,27 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Relationships.Module.Features.Relationships.RejectRelationship; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapRejectRelationshipEndpoint(this RouteGroupBuilder group) + { + group.MapPut("{id}/Reject", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status404NotFound); + return group; + } + + private static async Task Handle([FromRoute] string id, [FromBody] RejectRelationshipRequest request, IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new RejectRelationshipCommand { RelationshipId = id, CreationResponseContent = request.CreationResponseContent }, cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RejectRelationship/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Handler.cs similarity index 89% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/RejectRelationship/Handler.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Handler.cs index 4ef9c31e3d..fa609b332c 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RejectRelationship/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Handler.cs @@ -1,11 +1,11 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using MediatR; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.RejectRelationship; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.RejectRelationship; public class Handler : IRequestHandler { diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Request.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Request.cs new file mode 100644 index 0000000000..ccba53c306 --- /dev/null +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Request.cs @@ -0,0 +1,6 @@ +namespace Backbone.Modules.Relationships.Module.Features.Relationships.RejectRelationship; + +public class RejectRelationshipRequest +{ + public byte[]? CreationResponseContent { get; set; } = []; +} diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RejectRelationship/RejectRelationshipResponse.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Response.cs similarity index 58% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/RejectRelationship/RejectRelationshipResponse.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Response.cs index 9a8b24a99e..8e64f55e65 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RejectRelationship/RejectRelationshipResponse.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Response.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Relationships.Application.Relationships.DTOs; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; +using Backbone.Modules.Relationships.Module.Features.Shared; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.RejectRelationship; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.RejectRelationship; public class RejectRelationshipResponse : RelationshipMetadataDTO { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RejectRelationship/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Validator.cs similarity index 78% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/RejectRelationship/Validator.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Validator.cs index 3f6e917965..da86109dc2 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RejectRelationship/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Validator.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using FluentValidation; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.RejectRelationship; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.RejectRelationship; public class Validator : AbstractValidator { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RejectRelationshipReactivation/RejectRelationshipReactivationCommand.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Command.cs similarity index 62% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/RejectRelationshipReactivation/RejectRelationshipReactivationCommand.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Command.cs index 3dc9d732e4..60971f45df 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RejectRelationshipReactivation/RejectRelationshipReactivationCommand.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.RejectRelationshipReactivation; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.RejectRelationshipReactivation; public class RejectRelationshipReactivationCommand : IRequest { diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Endpoint.cs new file mode 100644 index 0000000000..8b61058f8b --- /dev/null +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Endpoint.cs @@ -0,0 +1,27 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Relationships.Module.Features.Relationships.RejectRelationshipReactivation; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapRejectRelationshipReactivationEndpoint(this RouteGroupBuilder group) + { + group.MapPut("{id}/Reactivate/Reject", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status404NotFound); + return group; + } + + private static async Task Handle([FromRoute] string id, IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new RejectRelationshipReactivationCommand { RelationshipId = id }, cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RejectRelationshipReactivation/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Handler.cs similarity index 87% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/RejectRelationshipReactivation/Handler.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Handler.cs index 11eae87c60..353da7beed 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RejectRelationshipReactivation/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Handler.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using MediatR; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.RejectRelationshipReactivation; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.RejectRelationshipReactivation; public class Handler : IRequestHandler { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RejectRelationshipReactivation/RejectRelationshipReactivationResponse.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Response.cs similarity index 59% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/RejectRelationshipReactivation/RejectRelationshipReactivationResponse.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Response.cs index f8be111b8a..71c6be3cbd 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RejectRelationshipReactivation/RejectRelationshipReactivationResponse.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Response.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Relationships.Application.Relationships.DTOs; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; +using Backbone.Modules.Relationships.Module.Features.Shared; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.RejectRelationshipReactivation; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.RejectRelationshipReactivation; public class RejectRelationshipReactivationResponse : RelationshipMetadataDTO { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RejectRelationshipReactivation/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Validator.cs similarity index 77% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/RejectRelationshipReactivation/Validator.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Validator.cs index 3d85bfd0fa..bb122bb130 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RejectRelationshipReactivation/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Validator.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using FluentValidation; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.RejectRelationshipReactivation; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.RejectRelationshipReactivation; public class Validator : AbstractValidator { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RequestRelationshipReactivation/RequestRelationshipReactivationCommand.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Command.cs similarity index 62% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/RequestRelationshipReactivation/RequestRelationshipReactivationCommand.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Command.cs index 2890725e74..138517fcba 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RequestRelationshipReactivation/RequestRelationshipReactivationCommand.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.RequestRelationshipReactivation; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.RequestRelationshipReactivation; public class RequestRelationshipReactivationCommand : IRequest { diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Endpoint.cs new file mode 100644 index 0000000000..b44b573f82 --- /dev/null +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Endpoint.cs @@ -0,0 +1,27 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Relationships.Module.Features.Relationships.RequestRelationshipReactivation; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapRequestRelationshipReactivationEndpoint(this RouteGroupBuilder group) + { + group.MapPut("{id}/Reactivate", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status404NotFound); + return group; + } + + private static async Task Handle([FromRoute] string id, IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new RequestRelationshipReactivationCommand { RelationshipId = id }, cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RequestRelationshipReactivation/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Handler.cs similarity index 87% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/RequestRelationshipReactivation/Handler.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Handler.cs index f4019b90d7..8a52e5c3eb 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RequestRelationshipReactivation/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Handler.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using MediatR; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.RequestRelationshipReactivation; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.RequestRelationshipReactivation; public class Handler : IRequestHandler { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RequestRelationshipReactivation/RequestRelationshipReactivationResponse.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Response.cs similarity index 59% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/RequestRelationshipReactivation/RequestRelationshipReactivationResponse.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Response.cs index c974bb541c..273c088487 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RequestRelationshipReactivation/RequestRelationshipReactivationResponse.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Response.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Relationships.Application.Relationships.DTOs; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; +using Backbone.Modules.Relationships.Module.Features.Shared; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.RequestRelationshipReactivation; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.RequestRelationshipReactivation; public class RequestRelationshipReactivationResponse : RelationshipMetadataDTO { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RequestRelationshipReactivation/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Validator.cs similarity index 77% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/RequestRelationshipReactivation/Validator.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Validator.cs index e1d4e53523..1efc2169c9 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RequestRelationshipReactivation/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Validator.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using FluentValidation; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.RequestRelationshipReactivation; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.RequestRelationshipReactivation; public class Validator : AbstractValidator { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RevokeRelationship/RevokeRelationshipCommand.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Command.cs similarity index 69% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/RevokeRelationship/RevokeRelationshipCommand.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Command.cs index 7cf9fd9bdd..4ad26c622f 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RevokeRelationship/RevokeRelationshipCommand.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.RevokeRelationship; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.RevokeRelationship; public class RevokeRelationshipCommand : IRequest { diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Endpoint.cs new file mode 100644 index 0000000000..dc7b27a397 --- /dev/null +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Endpoint.cs @@ -0,0 +1,27 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Relationships.Module.Features.Relationships.RevokeRelationship; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapRevokeRelationshipEndpoint(this RouteGroupBuilder group) + { + group.MapPut("{id}/Revoke", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status404NotFound); + return group; + } + + private static async Task Handle([FromRoute] string id, [FromBody] RevokeRelationshipRequest request, IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new RevokeRelationshipCommand { RelationshipId = id, CreationResponseContent = request.CreationResponseContent }, cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RevokeRelationship/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Handler.cs similarity index 88% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/RevokeRelationship/Handler.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Handler.cs index c49d0fad2e..6ffcdca538 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RevokeRelationship/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Handler.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using MediatR; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.RevokeRelationship; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.RevokeRelationship; public class Handler : IRequestHandler { diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Request.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Request.cs new file mode 100644 index 0000000000..083580428a --- /dev/null +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Request.cs @@ -0,0 +1,6 @@ +namespace Backbone.Modules.Relationships.Module.Features.Relationships.RevokeRelationship; + +public class RevokeRelationshipRequest +{ + public byte[]? CreationResponseContent { get; set; } = []; +} diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RevokeRelationship/RevokeRelationshipResponse.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Response.cs similarity index 58% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/RevokeRelationship/RevokeRelationshipResponse.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Response.cs index 3ba4766c0d..d81d4ae400 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RevokeRelationship/RevokeRelationshipResponse.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Response.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Relationships.Application.Relationships.DTOs; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; +using Backbone.Modules.Relationships.Module.Features.Shared; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.RevokeRelationship; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.RevokeRelationship; public class RevokeRelationshipResponse : RelationshipMetadataDTO { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RevokeRelationship/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Validator.cs similarity index 78% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/RevokeRelationship/Validator.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Validator.cs index 25fcb4e3f1..8b761adac6 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RevokeRelationship/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Validator.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using FluentValidation; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.RevokeRelationship; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.RevokeRelationship; public class Validator : AbstractValidator { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RevokeRelationshipReactivation/RevokeRelationshipReactivationCommand.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Command.cs similarity index 62% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/RevokeRelationshipReactivation/RevokeRelationshipReactivationCommand.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Command.cs index 93e6a73351..db0a42e0c0 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RevokeRelationshipReactivation/RevokeRelationshipReactivationCommand.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Command.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.RevokeRelationshipReactivation; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.RevokeRelationshipReactivation; public class RevokeRelationshipReactivationCommand : IRequest { diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Endpoint.cs new file mode 100644 index 0000000000..ca543d8f78 --- /dev/null +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Endpoint.cs @@ -0,0 +1,27 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Relationships.Module.Features.Relationships.RevokeRelationshipReactivation; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapRevokeRelationshipReactivationEndpoint(this RouteGroupBuilder group) + { + group.MapPut("{id}/Reactivate/Revoke", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status404NotFound); + return group; + } + + private static async Task Handle([FromRoute] string id, IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new RevokeRelationshipReactivationCommand { RelationshipId = id }, cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RevokeRelationshipReactivation/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Handler.cs similarity index 87% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/RevokeRelationshipReactivation/Handler.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Handler.cs index 15aff5c097..34a8c242d7 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RevokeRelationshipReactivation/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Handler.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; +using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using MediatR; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.RevokeRelationshipReactivation; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.RevokeRelationshipReactivation; public class Handler : IRequestHandler { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RevokeRelationshipReactivation/RevokeRelationshipReactivationResponse.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Response.cs similarity index 58% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/RevokeRelationshipReactivation/RevokeRelationshipReactivationResponse.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Response.cs index 70f33d3ffa..25184126e1 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RevokeRelationshipReactivation/RevokeRelationshipReactivationResponse.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Response.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Relationships.Application.Relationships.DTOs; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; +using Backbone.Modules.Relationships.Module.Features.Shared; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.RevokeRelationshipReactivation; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.RevokeRelationshipReactivation; public class RevokeRelationshipReactivationResponse : RelationshipMetadataDTO { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RevokeRelationshipReactivation/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Validator.cs similarity index 77% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/RevokeRelationshipReactivation/Validator.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Validator.cs index 7fe487e393..57a6f29546 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/RevokeRelationshipReactivation/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Validator.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using FluentValidation; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.RevokeRelationshipReactivation; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.RevokeRelationshipReactivation; public class Validator : AbstractValidator { diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Command.cs new file mode 100644 index 0000000000..959a81751e --- /dev/null +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Command.cs @@ -0,0 +1,9 @@ +using Backbone.Modules.Relationships.Module.Features.Shared; +using MediatR; + +namespace Backbone.Modules.Relationships.Module.Features.Relationships.TerminateRelationship; + +public class TerminateRelationshipCommand : IRequest +{ + public required string RelationshipId { get; init; } +} diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Endpoint.cs new file mode 100644 index 0000000000..f46601254f --- /dev/null +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Endpoint.cs @@ -0,0 +1,28 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.API; +using Backbone.Modules.Relationships.Module.Features.Shared; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Relationships.Module.Features.Relationships.TerminateRelationship; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapTerminateRelationshipEndpoint(this RouteGroupBuilder group) + { + group.MapPut("{id}/Terminate", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status404NotFound); + return group; + } + + private static async Task Handle([FromRoute] string id, IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new TerminateRelationshipCommand { RelationshipId = id }, cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/TerminateRelationship/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Handler.cs similarity index 78% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/TerminateRelationship/Handler.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Handler.cs index 66d8238ccc..bb7937bcf9 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/TerminateRelationship/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Handler.cs @@ -1,11 +1,11 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Relationships.Application.Relationships.DTOs; +using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; +using Backbone.Modules.Relationships.Module.Features.Shared; using MediatR; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.TerminateRelationship; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.TerminateRelationship; public class Handler : IRequestHandler { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/TerminateRelationship/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Validator.cs similarity index 78% rename from Modules/Relationships/src/Relationships.Application/Relationships/Commands/TerminateRelationship/Validator.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Validator.cs index 12cf238326..e14470000b 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/Commands/TerminateRelationship/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Validator.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using FluentValidation; -namespace Backbone.Modules.Relationships.Application.Relationships.Commands.TerminateRelationship; +namespace Backbone.Modules.Relationships.Module.Features.Relationships.TerminateRelationship; public class Validator : AbstractValidator { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/DTOs/RelationshipAuditLogEntryDTO.cs b/Modules/Relationships/src/Relationships.Module/Features/Shared/RelationshipAuditLogEntryDTO.cs similarity index 91% rename from Modules/Relationships/src/Relationships.Application/Relationships/DTOs/RelationshipAuditLogEntryDTO.cs rename to Modules/Relationships/src/Relationships.Module/Features/Shared/RelationshipAuditLogEntryDTO.cs index fb5c0be333..a24461aebf 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/DTOs/RelationshipAuditLogEntryDTO.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Shared/RelationshipAuditLogEntryDTO.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; -namespace Backbone.Modules.Relationships.Application.Relationships.DTOs; +namespace Backbone.Modules.Relationships.Module.Features.Shared; public class RelationshipAuditLogEntryDTO { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/DTOs/RelationshipDTO.cs b/Modules/Relationships/src/Relationships.Module/Features/Shared/RelationshipDTO.cs similarity index 86% rename from Modules/Relationships/src/Relationships.Application/Relationships/DTOs/RelationshipDTO.cs rename to Modules/Relationships/src/Relationships.Module/Features/Shared/RelationshipDTO.cs index 26a1334148..3f112a68de 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/DTOs/RelationshipDTO.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Shared/RelationshipDTO.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; -namespace Backbone.Modules.Relationships.Application.Relationships.DTOs; +namespace Backbone.Modules.Relationships.Module.Features.Shared; public class RelationshipDTO : RelationshipMetadataDTO { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/DTOs/RelationshipMetadataDTO.cs b/Modules/Relationships/src/Relationships.Module/Features/Shared/RelationshipMetadataDTO.cs similarity index 96% rename from Modules/Relationships/src/Relationships.Application/Relationships/DTOs/RelationshipMetadataDTO.cs rename to Modules/Relationships/src/Relationships.Module/Features/Shared/RelationshipMetadataDTO.cs index 912871e644..eaff5fc576 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/DTOs/RelationshipMetadataDTO.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Shared/RelationshipMetadataDTO.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; -namespace Backbone.Modules.Relationships.Application.Relationships.DTOs; +namespace Backbone.Modules.Relationships.Module.Features.Shared; public class RelationshipMetadataDTO { diff --git a/Modules/Relationships/src/Relationships.Application/Relationships/DTOs/RelationshipTemplateDTO.cs b/Modules/Relationships/src/Relationships.Module/Features/Shared/RelationshipTemplateDTO.cs similarity index 93% rename from Modules/Relationships/src/Relationships.Application/Relationships/DTOs/RelationshipTemplateDTO.cs rename to Modules/Relationships/src/Relationships.Module/Features/Shared/RelationshipTemplateDTO.cs index fe7d1f351a..cad50d43f2 100644 --- a/Modules/Relationships/src/Relationships.Application/Relationships/DTOs/RelationshipTemplateDTO.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Shared/RelationshipTemplateDTO.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; -namespace Backbone.Modules.Relationships.Application.Relationships.DTOs; +namespace Backbone.Modules.Relationships.Module.Features.Shared; public class RelationshipTemplateDTO { diff --git a/Modules/Relationships/src/Relationships.Module/Relationships.Module.csproj b/Modules/Relationships/src/Relationships.Module/Relationships.Module.csproj index 99f3492b8e..a412106fc8 100644 --- a/Modules/Relationships/src/Relationships.Module/Relationships.Module.csproj +++ b/Modules/Relationships/src/Relationships.Module/Relationships.Module.csproj @@ -3,7 +3,9 @@ - + + + @@ -12,6 +14,7 @@ + diff --git a/Modules/Relationships/src/Relationships.Module/RelationshipsEndpointExtensions.cs b/Modules/Relationships/src/Relationships.Module/RelationshipsEndpointExtensions.cs new file mode 100644 index 0000000000..bd31d0ccbe --- /dev/null +++ b/Modules/Relationships/src/Relationships.Module/RelationshipsEndpointExtensions.cs @@ -0,0 +1,53 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.Modules.Relationships.Module.Features.PublicRelationshipTemplateReferences.ListPublicRelationshipTemplateReferences; +using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.CreateRelationshipTemplate; +using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplate; +using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.GetRelationshipTemplate; +using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.ListRelationshipTemplates; +using Backbone.Modules.Relationships.Module.Features.Relationships.AcceptRelationship; +using Backbone.Modules.Relationships.Module.Features.Relationships.AcceptRelationshipReactivation; +using Backbone.Modules.Relationships.Module.Features.Relationships.CanEstablishRelationship; +using Backbone.Modules.Relationships.Module.Features.Relationships.CreateRelationship; +using Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeRelationship; +using Backbone.Modules.Relationships.Module.Features.Relationships.GetRelationship; +using Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationships; +using Backbone.Modules.Relationships.Module.Features.Relationships.RejectRelationship; +using Backbone.Modules.Relationships.Module.Features.Relationships.RejectRelationshipReactivation; +using Backbone.Modules.Relationships.Module.Features.Relationships.RequestRelationshipReactivation; +using Backbone.Modules.Relationships.Module.Features.Relationships.RevokeRelationship; +using Backbone.Modules.Relationships.Module.Features.Relationships.RevokeRelationshipReactivation; +using Backbone.Modules.Relationships.Module.Features.Relationships.TerminateRelationship; +using Microsoft.AspNetCore.Routing; +using OpenIddict.Validation.AspNetCore; + +namespace Backbone.Modules.Relationships.Module; + +public static class RelationshipsEndpointExtensions +{ + public static IEndpointRouteBuilder MapRelationshipsEndpoints(this IEndpointRouteBuilder endpoints) + { + var relationships = endpoints.MapVersionedEndpointGroup("Relationships", "Relationships", 2, OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme); + relationships.MapGetRelationshipEndpoint(); + relationships.MapAcceptRelationshipEndpoint(); + relationships.MapRejectRelationshipEndpoint(); + relationships.MapRevokeRelationshipEndpoint(); + relationships.MapTerminateRelationshipEndpoint(); + relationships.MapRequestRelationshipReactivationEndpoint(); + relationships.MapRevokeRelationshipReactivationEndpoint(); + relationships.MapAcceptRelationshipReactivationEndpoint(); + relationships.MapRejectRelationshipReactivationEndpoint(); + relationships.MapDecomposeRelationshipEndpoint(); + relationships.MapCreateRelationshipEndpoint(); + relationships.MapCanEstablishRelationshipEndpoint(); + relationships.MapListRelationshipsEndpoint(); + + var relationshipTemplates = endpoints.MapVersionedEndpointGroup("RelationshipTemplates", "RelationshipTemplates", 2, OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme); + relationshipTemplates.MapGetRelationshipTemplateEndpoint(); + relationshipTemplates.MapCreateRelationshipTemplateEndpoint(); + relationshipTemplates.MapDeleteRelationshipTemplateEndpoint(); + relationshipTemplates.MapListRelationshipTemplatesEndpoint(); + + endpoints.MapListPublicRelationshipTemplateReferencesEndpoint(); + return endpoints; + } +} diff --git a/Modules/Relationships/src/Relationships.Application/Extensions/IEventBusExtensions.cs b/Modules/Relationships/src/Relationships.Module/RelationshipsEventBusExtensions.cs similarity index 64% rename from Modules/Relationships/src/Relationships.Application/Extensions/IEventBusExtensions.cs rename to Modules/Relationships/src/Relationships.Module/RelationshipsEventBusExtensions.cs index a02be7c131..b0e1ef63f2 100644 --- a/Modules/Relationships/src/Relationships.Application/Extensions/IEventBusExtensions.cs +++ b/Modules/Relationships/src/Relationships.Module/RelationshipsEventBusExtensions.cs @@ -1,13 +1,13 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.Modules.Devices.Contracts.DomainEvents; -using Backbone.Modules.Relationships.Application.DomainEvents.Incoming.FeatureFlagsOfIdentityChanged; -using Backbone.Modules.Relationships.Application.DomainEvents.Incoming.IdentityDeleted; -using Backbone.Modules.Relationships.Application.DomainEvents.Incoming.IdentityDeletionCancelled; -using Backbone.Modules.Relationships.Application.DomainEvents.Incoming.IdentityToBeDeleted; +using Backbone.Modules.Relationships.Module.Features.DomainEvents.FeatureFlagsOfIdentityChanged; +using Backbone.Modules.Relationships.Module.Features.DomainEvents.IdentityDeleted; +using Backbone.Modules.Relationships.Module.Features.DomainEvents.IdentityDeletionCancelled; +using Backbone.Modules.Relationships.Module.Features.DomainEvents.IdentityToBeDeleted; -namespace Backbone.Modules.Relationships.Application.Extensions; +namespace Backbone.Modules.Relationships.Module; -public static class IEventBusExtensions +internal static class RelationshipsEventBusExtensions { public static async Task AddRelationshipsDomainEventSubscriptions(this IEventBus eventBus) { diff --git a/Modules/Relationships/src/Relationships.Module/RelationshipsModule.cs b/Modules/Relationships/src/Relationships.Module/RelationshipsModule.cs index 4017d55ae6..a9f4d2b378 100644 --- a/Modules/Relationships/src/Relationships.Module/RelationshipsModule.cs +++ b/Modules/Relationships/src/Relationships.Module/RelationshipsModule.cs @@ -1,10 +1,8 @@ using Backbone.BuildingBlocks.API.Extensions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Module; -using Backbone.Modules.Relationships.Application; -using Backbone.Modules.Relationships.Application.Extensions; -using Backbone.Modules.Relationships.Infrastructure; using Backbone.Modules.Relationships.Infrastructure.Persistence; +using Backbone.Modules.Relationships.Infrastructure; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; diff --git a/Modules/Relationships/src/Relationships.Module/packages.lock.json b/Modules/Relationships/src/Relationships.Module/packages.lock.json index f9953526f6..ec9d77cd3f 100644 --- a/Modules/Relationships/src/Relationships.Module/packages.lock.json +++ b/Modules/Relationships/src/Relationships.Module/packages.lock.json @@ -2,6 +2,16 @@ "version": 2, "dependencies": { "net10.0": { + "FluentValidation.DependencyInjectionExtensions": { + "type": "Direct", + "requested": "[12.1.1, 12.1.1]", + "resolved": "12.1.1", + "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", + "dependencies": { + "FluentValidation": "12.1.1", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" + } + }, "ReHackt.Extensions.Options.Validation": { "type": "Direct", "requested": "[10.0.1, 10.0.1]", @@ -1245,17 +1255,11 @@ "Polly": "[8.7.0, 8.7.0]" } }, - "Backbone.Modules.Relationships.Application": { + "Backbone.Modules.Relationships.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.BuildingBlocks.Domain": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Common": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Relationships.Domain": "[1.0.0, )" } }, "Backbone.Modules.Relationships.Common": { @@ -1283,7 +1287,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Relationships.Application": "[1.0.0, )", + "Backbone.Modules.Relationships.Abstractions": "[1.0.0, )", "Backbone.Modules.Relationships.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1450,16 +1454,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", diff --git a/Modules/Relationships/test/Relationships.Application.Tests/GlobalUsings.cs b/Modules/Relationships/test/Relationships.Application.Tests/GlobalUsings.cs deleted file mode 100644 index 4885bc61c3..0000000000 --- a/Modules/Relationships/test/Relationships.Application.Tests/GlobalUsings.cs +++ /dev/null @@ -1 +0,0 @@ -global using Backbone.Modules.Relationships.Application.Tests.TestHelpers; diff --git a/Modules/Relationships/test/Relationships.Infrastructure.Tests/packages.lock.json b/Modules/Relationships/test/Relationships.Infrastructure.Tests/packages.lock.json index 91a0f4dbf4..5bbc499d00 100644 --- a/Modules/Relationships/test/Relationships.Infrastructure.Tests/packages.lock.json +++ b/Modules/Relationships/test/Relationships.Infrastructure.Tests/packages.lock.json @@ -927,29 +927,11 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Devices.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Relationships.Application": { + "Backbone.Modules.Relationships.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.BuildingBlocks.Domain": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Common": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" - } - }, - "Backbone.Modules.Relationships.Common": { - "type": "Project", - "dependencies": { - "FluentValidation": "[12.1.1, 12.1.1]" + "Backbone.Modules.Relationships.Domain": "[1.0.0, )" } }, "Backbone.Modules.Relationships.Contracts": { @@ -971,7 +953,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Relationships.Application": "[1.0.0, )", + "Backbone.Modules.Relationships.Abstractions": "[1.0.0, )", "Backbone.Modules.Relationships.Domain": "[1.0.0, )", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", @@ -1089,16 +1071,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", diff --git a/Modules/Relationships/test/Relationships.Application.Tests/DomainEvents/Incoming/IdentityDeleted/IdentityDeletedDomainEventHandler.Tests.cs b/Modules/Relationships/test/Relationships.Module.Tests/DomainEvents/Incoming/IdentityDeleted/IdentityDeletedDomainEventHandler.Tests.cs similarity index 88% rename from Modules/Relationships/test/Relationships.Application.Tests/DomainEvents/Incoming/IdentityDeleted/IdentityDeletedDomainEventHandler.Tests.cs rename to Modules/Relationships/test/Relationships.Module.Tests/DomainEvents/Incoming/IdentityDeleted/IdentityDeletedDomainEventHandler.Tests.cs index 97c0cae851..b315ceb22c 100644 --- a/Modules/Relationships/test/Relationships.Application.Tests/DomainEvents/Incoming/IdentityDeleted/IdentityDeletedDomainEventHandler.Tests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/DomainEvents/Incoming/IdentityDeleted/IdentityDeletedDomainEventHandler.Tests.cs @@ -1,14 +1,14 @@ using System.Linq.Expressions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.Modules.Devices.Contracts.DomainEvents; -using Backbone.Modules.Relationships.Application.DomainEvents.Incoming.IdentityDeleted; -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Relationships.Application.Tests.TestHelpers; +using Backbone.Modules.Relationships.Module.Features.DomainEvents.IdentityDeleted; +using Backbone.Modules.Relationships.Abstractions; +using Backbone.Modules.Relationships.Module.Tests.TestHelpers; using Backbone.Modules.Relationships.Contracts.DomainEvents; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using FakeItEasy; -namespace Backbone.Modules.Relationships.Application.Tests.DomainEvents.Incoming.IdentityDeleted; +namespace Backbone.Modules.Relationships.Module.Tests.DomainEvents.Incoming.IdentityDeleted; public class IdentityDeletedDomainEventHandlerTests : AbstractTestsBase { diff --git a/Modules/Relationships/test/Relationships.Application.Tests/DomainEvents/Incoming/IdentityDeletionCancelled/IdentityDeletionCancelledDomainEventHandler.Tests.cs b/Modules/Relationships/test/Relationships.Module.Tests/DomainEvents/Incoming/IdentityDeletionCancelled/IdentityDeletionCancelledDomainEventHandler.Tests.cs similarity index 88% rename from Modules/Relationships/test/Relationships.Application.Tests/DomainEvents/Incoming/IdentityDeletionCancelled/IdentityDeletionCancelledDomainEventHandler.Tests.cs rename to Modules/Relationships/test/Relationships.Module.Tests/DomainEvents/Incoming/IdentityDeletionCancelled/IdentityDeletionCancelledDomainEventHandler.Tests.cs index bf0e541688..2521aa31a4 100644 --- a/Modules/Relationships/test/Relationships.Application.Tests/DomainEvents/Incoming/IdentityDeletionCancelled/IdentityDeletionCancelledDomainEventHandler.Tests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/DomainEvents/Incoming/IdentityDeletionCancelled/IdentityDeletionCancelledDomainEventHandler.Tests.cs @@ -1,14 +1,14 @@ using System.Linq.Expressions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.Modules.Devices.Contracts.DomainEvents; -using Backbone.Modules.Relationships.Application.DomainEvents.Incoming.IdentityDeletionCancelled; -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Relationships.Application.Tests.TestHelpers; +using Backbone.Modules.Relationships.Module.Features.DomainEvents.IdentityDeletionCancelled; +using Backbone.Modules.Relationships.Abstractions; +using Backbone.Modules.Relationships.Module.Tests.TestHelpers; using Backbone.Modules.Relationships.Contracts.DomainEvents; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using FakeItEasy; -namespace Backbone.Modules.Relationships.Application.Tests.DomainEvents.Incoming.IdentityDeletionCancelled; +namespace Backbone.Modules.Relationships.Module.Tests.DomainEvents.Incoming.IdentityDeletionCancelled; public class IdentityDeletionCancelledDomainEventHandlerTests : AbstractTestsBase { diff --git a/Modules/Relationships/test/Relationships.Application.Tests/DomainEvents/Incoming/IdentityToBeDeleted/IdentityToBeDeletedDomainEventHandler.Tests.cs b/Modules/Relationships/test/Relationships.Module.Tests/DomainEvents/Incoming/IdentityToBeDeleted/IdentityToBeDeletedDomainEventHandler.Tests.cs similarity index 89% rename from Modules/Relationships/test/Relationships.Application.Tests/DomainEvents/Incoming/IdentityToBeDeleted/IdentityToBeDeletedDomainEventHandler.Tests.cs rename to Modules/Relationships/test/Relationships.Module.Tests/DomainEvents/Incoming/IdentityToBeDeleted/IdentityToBeDeletedDomainEventHandler.Tests.cs index 5c67ec0c92..d18fed5ee4 100644 --- a/Modules/Relationships/test/Relationships.Application.Tests/DomainEvents/Incoming/IdentityToBeDeleted/IdentityToBeDeletedDomainEventHandler.Tests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/DomainEvents/Incoming/IdentityToBeDeleted/IdentityToBeDeletedDomainEventHandler.Tests.cs @@ -1,14 +1,14 @@ using System.Linq.Expressions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.Modules.Devices.Contracts.DomainEvents; -using Backbone.Modules.Relationships.Application.DomainEvents.Incoming.IdentityToBeDeleted; -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Relationships.Application.Tests.TestHelpers; +using Backbone.Modules.Relationships.Module.Features.DomainEvents.IdentityToBeDeleted; +using Backbone.Modules.Relationships.Abstractions; +using Backbone.Modules.Relationships.Module.Tests.TestHelpers; using Backbone.Modules.Relationships.Contracts.DomainEvents; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using FakeItEasy; -namespace Backbone.Modules.Relationships.Application.Tests.DomainEvents.Incoming.IdentityToBeDeleted; +namespace Backbone.Modules.Relationships.Module.Tests.DomainEvents.Incoming.IdentityToBeDeleted; public class IdentityToBeDeletedDomainEventHandlerTests : AbstractTestsBase { diff --git a/Modules/Relationships/test/Relationships.Module.Tests/GlobalUsings.cs b/Modules/Relationships/test/Relationships.Module.Tests/GlobalUsings.cs new file mode 100644 index 0000000000..144d4a63f0 --- /dev/null +++ b/Modules/Relationships/test/Relationships.Module.Tests/GlobalUsings.cs @@ -0,0 +1 @@ +global using Backbone.Modules.Relationships.Module.Tests.TestHelpers; diff --git a/Modules/Relationships/test/Relationships.Application.Tests/Identities/IdentityDeleter.Tests.cs b/Modules/Relationships/test/Relationships.Module.Tests/Identities/IdentityDeleter.Tests.cs similarity index 79% rename from Modules/Relationships/test/Relationships.Application.Tests/Identities/IdentityDeleter.Tests.cs rename to Modules/Relationships/test/Relationships.Module.Tests/Identities/IdentityDeleter.Tests.cs index 261f3b1bd3..eb5a914858 100644 --- a/Modules/Relationships/test/Relationships.Application.Tests/Identities/IdentityDeleter.Tests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/Identities/IdentityDeleter.Tests.cs @@ -1,13 +1,13 @@ using Backbone.BuildingBlocks.Application.Identities; -using Backbone.Modules.Relationships.Application.Identities; -using Backbone.Modules.Relationships.Application.Relationships.Commands.DecomposeAndAnonymizeRelationshipsOfIdentity; -using Backbone.Modules.Relationships.Application.RelationshipTemplates.Commands.AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity; -using Backbone.Modules.Relationships.Application.RelationshipTemplates.Commands.AnonymizeRelationshipTemplatesForIdentity; -using Backbone.Modules.Relationships.Application.RelationshipTemplates.Commands.DeleteRelationshipTemplatesOfIdentity; +using Backbone.Modules.Relationships.Module.Features.Identities.DeleteIdentity; +using Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeAndAnonymizeRelationshipsOfIdentity; +using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity; +using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplatesForIdentity; +using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplatesOfIdentity; using FakeItEasy; using MediatR; -namespace Backbone.Modules.Relationships.Application.Tests.Identities; +namespace Backbone.Modules.Relationships.Module.Tests.Identities; public class IdentityDeleterTests : AbstractTestsBase { diff --git a/Modules/Relationships/test/Relationships.Application.Tests/RelationshipTemplates/Commands/CreateRelationshipTemplate/Validator.Tests.cs b/Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Commands/CreateRelationshipTemplate/Validator.Tests.cs similarity index 93% rename from Modules/Relationships/test/Relationships.Application.Tests/RelationshipTemplates/Commands/CreateRelationshipTemplate/Validator.Tests.cs rename to Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Commands/CreateRelationshipTemplate/Validator.Tests.cs index 8ab003371a..fb0b1d37d3 100644 --- a/Modules/Relationships/test/Relationships.Application.Tests/RelationshipTemplates/Commands/CreateRelationshipTemplate/Validator.Tests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Commands/CreateRelationshipTemplate/Validator.Tests.cs @@ -1,8 +1,8 @@ -using Backbone.Modules.Relationships.Application.RelationshipTemplates.Commands.CreateRelationshipTemplate; +using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.CreateRelationshipTemplate; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Relationships.Application.Tests.RelationshipTemplates.Commands.CreateRelationshipTemplate; +namespace Backbone.Modules.Relationships.Module.Tests.RelationshipTemplates.Commands.CreateRelationshipTemplate; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Relationships/test/Relationships.Application.Tests/RelationshipTemplates/Commands/DeleteRelationshipTemplatesOfIdentity/Handler.Tests.cs b/Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Commands/DeleteRelationshipTemplatesOfIdentity/Handler.Tests.cs similarity index 71% rename from Modules/Relationships/test/Relationships.Application.Tests/RelationshipTemplates/Commands/DeleteRelationshipTemplatesOfIdentity/Handler.Tests.cs rename to Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Commands/DeleteRelationshipTemplatesOfIdentity/Handler.Tests.cs index 89f8877442..54a6f5fc58 100644 --- a/Modules/Relationships/test/Relationships.Application.Tests/RelationshipTemplates/Commands/DeleteRelationshipTemplatesOfIdentity/Handler.Tests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Commands/DeleteRelationshipTemplatesOfIdentity/Handler.Tests.cs @@ -1,10 +1,10 @@ using System.Linq.Expressions; -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Relationships.Application.RelationshipTemplates.Commands.DeleteRelationshipTemplatesOfIdentity; +using Backbone.Modules.Relationships.Abstractions; +using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplatesOfIdentity; using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; using FakeItEasy; -namespace Backbone.Modules.Relationships.Application.Tests.RelationshipTemplates.Commands.DeleteRelationshipTemplatesOfIdentity; +namespace Backbone.Modules.Relationships.Module.Tests.RelationshipTemplates.Commands.DeleteRelationshipTemplatesOfIdentity; public class HandlerTests : AbstractTestsBase { diff --git a/Modules/Relationships/test/Relationships.Application.Tests/RelationshipTemplates/Queries/ListRelationshipTemplates/Validator.Tests.cs b/Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Queries/ListRelationshipTemplates/Validator.Tests.cs similarity index 87% rename from Modules/Relationships/test/Relationships.Application.Tests/RelationshipTemplates/Queries/ListRelationshipTemplates/Validator.Tests.cs rename to Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Queries/ListRelationshipTemplates/Validator.Tests.cs index 09b8ac71b5..d0be687cca 100644 --- a/Modules/Relationships/test/Relationships.Application.Tests/RelationshipTemplates/Queries/ListRelationshipTemplates/Validator.Tests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Queries/ListRelationshipTemplates/Validator.Tests.cs @@ -1,10 +1,11 @@ +using Backbone.Modules.Relationships.Abstractions; using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.Modules.Relationships.Application.RelationshipTemplates.Queries.ListRelationshipTemplates; +using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.ListRelationshipTemplates; using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Relationships.Application.Tests.RelationshipTemplates.Queries.ListRelationshipTemplates; +namespace Backbone.Modules.Relationships.Module.Tests.RelationshipTemplates.Queries.ListRelationshipTemplates; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Relationships/test/Relationships.Application.Tests/Relationships.Application.Tests.csproj b/Modules/Relationships/test/Relationships.Module.Tests/Relationships.Module.Tests.csproj similarity index 84% rename from Modules/Relationships/test/Relationships.Application.Tests/Relationships.Application.Tests.csproj rename to Modules/Relationships/test/Relationships.Module.Tests/Relationships.Module.Tests.csproj index c99579b485..40899a3fc7 100644 --- a/Modules/Relationships/test/Relationships.Application.Tests/Relationships.Application.Tests.csproj +++ b/Modules/Relationships/test/Relationships.Module.Tests/Relationships.Module.Tests.csproj @@ -15,7 +15,7 @@ - + diff --git a/Modules/Relationships/test/Relationships.Application.Tests/Relationships/Commands/DecomposeAndAnonymizeRelationshipsOfIdentity/Handler.Tests.cs b/Modules/Relationships/test/Relationships.Module.Tests/Relationships/Commands/DecomposeAndAnonymizeRelationshipsOfIdentity/Handler.Tests.cs similarity index 72% rename from Modules/Relationships/test/Relationships.Application.Tests/Relationships/Commands/DecomposeAndAnonymizeRelationshipsOfIdentity/Handler.Tests.cs rename to Modules/Relationships/test/Relationships.Module.Tests/Relationships/Commands/DecomposeAndAnonymizeRelationshipsOfIdentity/Handler.Tests.cs index c43f8c62af..f1294ba8e8 100644 --- a/Modules/Relationships/test/Relationships.Application.Tests/Relationships/Commands/DecomposeAndAnonymizeRelationshipsOfIdentity/Handler.Tests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/Relationships/Commands/DecomposeAndAnonymizeRelationshipsOfIdentity/Handler.Tests.cs @@ -1,10 +1,10 @@ -using Backbone.Modules.Relationships.Application.Infrastructure.Persistence.Repository; -using Backbone.Modules.Relationships.Application.Relationships.Commands.DecomposeAndAnonymizeRelationshipsOfIdentity; +using Backbone.Modules.Relationships.Abstractions; +using Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeAndAnonymizeRelationshipsOfIdentity; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using FakeItEasy; using Microsoft.Extensions.Options; -namespace Backbone.Modules.Relationships.Application.Tests.Relationships.Commands.DecomposeAndAnonymizeRelationshipsOfIdentity; +namespace Backbone.Modules.Relationships.Module.Tests.Relationships.Commands.DecomposeAndAnonymizeRelationshipsOfIdentity; public class HandlerTests : AbstractTestsBase { diff --git a/Modules/Relationships/test/Relationships.Application.Tests/Relationships/Queries/ListRelationships/ListRelationshipsValidator.Tests.cs b/Modules/Relationships/test/Relationships.Module.Tests/Relationships/Queries/ListRelationships/ListRelationshipsValidator.Tests.cs similarity index 90% rename from Modules/Relationships/test/Relationships.Application.Tests/Relationships/Queries/ListRelationships/ListRelationshipsValidator.Tests.cs rename to Modules/Relationships/test/Relationships.Module.Tests/Relationships/Queries/ListRelationships/ListRelationshipsValidator.Tests.cs index 8e46db10e9..594f74b6a6 100644 --- a/Modules/Relationships/test/Relationships.Application.Tests/Relationships/Queries/ListRelationships/ListRelationshipsValidator.Tests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/Relationships/Queries/ListRelationships/ListRelationshipsValidator.Tests.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.Modules.Relationships.Application.Relationships.Queries.ListRelationships; +using Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationships; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Relationships.Application.Tests.Relationships.Queries.ListRelationships; +namespace Backbone.Modules.Relationships.Module.Tests.Relationships.Queries.ListRelationships; public class ListRelationshipsValidatorTests : AbstractTestsBase { diff --git a/Modules/Relationships/test/Relationships.Application.Tests/TestHelpers/TestData.cs b/Modules/Relationships/test/Relationships.Module.Tests/TestHelpers/TestData.cs similarity index 96% rename from Modules/Relationships/test/Relationships.Application.Tests/TestHelpers/TestData.cs rename to Modules/Relationships/test/Relationships.Module.Tests/TestHelpers/TestData.cs index 98fc4f0209..890e84f852 100644 --- a/Modules/Relationships/test/Relationships.Application.Tests/TestHelpers/TestData.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/TestHelpers/TestData.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; -namespace Backbone.Modules.Relationships.Application.Tests.TestHelpers; +namespace Backbone.Modules.Relationships.Module.Tests.TestHelpers; public static class TestData { diff --git a/Modules/Relationships/test/Relationships.Application.Tests/packages.lock.json b/Modules/Relationships/test/Relationships.Module.Tests/packages.lock.json similarity index 59% rename from Modules/Relationships/test/Relationships.Application.Tests/packages.lock.json rename to Modules/Relationships/test/Relationships.Module.Tests/packages.lock.json index 8bb741a7f8..a08a72e3ae 100644 --- a/Modules/Relationships/test/Relationships.Application.Tests/packages.lock.json +++ b/Modules/Relationships/test/Relationships.Module.Tests/packages.lock.json @@ -38,6 +38,22 @@ "xunit.v3.core.mtp-v2": "[3.2.2]" } }, + "Asp.Versioning.Abstractions": { + "type": "Transitive", + "resolved": "10.1.0", + "contentHash": "RwdgC5O0baZ4pt30pAKKPQHq2CV4unBKA4HWoTeu7NY9ZwXM0dWYGf1Ipc5GK0eFBe9cMeqz4pGpPncMz4/ZNQ==", + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.0" + } + }, + "Asp.Versioning.Http": { + "type": "Transitive", + "resolved": "10.0.1", + "contentHash": "g0ayV/9ho3tGgooC6eF5p1063I1WzlxFJDYQrigcGnW+mLvui6eXrcW5hzTHhQREroUR3ZwXQrIN2SAIoi+KDw==", + "dependencies": { + "Asp.Versioning.Abstractions": "10.1.0" + } + }, "AWSSDK.Core": { "type": "Transitive", "resolved": "4.0.100.9", @@ -66,16 +82,6 @@ "System.Memory.Data": "1.0.2" } }, - "Azure.Identity": { - "type": "Transitive", - "resolved": "1.17.1", - "contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Microsoft.Identity.Client": "4.78.0", - "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" - } - }, "Azure.Storage.Common": { "type": "Transitive", "resolved": "12.28.0", @@ -250,6 +256,25 @@ "Microsoft.AspNetCore.Cryptography.Internal": "10.0.10" } }, + "Microsoft.AspNetCore.DataProtection": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "5sfrNrBShTlJeXvWNxjPS7ilLY4H6MICZPMZr/2vjoDoBH5Z8sQYJwbhulqfXh4yIpxIto0TcmOQHOElvpq+iQ==", + "dependencies": { + "Microsoft.AspNetCore.Cryptography.Internal": "10.0.10", + "Microsoft.AspNetCore.DataProtection.Abstractions": "10.0.10", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", + "Microsoft.Extensions.Logging.Abstractions": "10.0.10", + "Microsoft.Extensions.Options": "10.0.10", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "Microsoft.AspNetCore.DataProtection.Abstractions": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "q2RNx0N/qrsU+JgbPE78I9pu5ekwguitAFVoeE1NCgxtkUTguvf7oTzBnn42zSQxuugJ4fmj0RSarob8Rvorrg==" + }, "Microsoft.Azure.Amqp": { "type": "Transitive", "resolved": "2.7.0", @@ -260,6 +285,11 @@ "resolved": "10.0.9", "contentHash": "Aq7M8lG6BrHeatqKqncVm9m55ec34k6nnfPRLe/PvGg+b/pAsRM2ejofeKmCLjTXMa+5NGXm382f8CG/D5WDow==" }, + "Microsoft.Bcl.Cryptography": { + "type": "Transitive", + "resolved": "10.0.2", + "contentHash": "LG9Yll3B5aNpxv0+D47g6LiOiKBIlodhcHdQwcYzo8VeexFLGqx5ymetmA2aBRyo9cCcWsQWrFsdbsr8LvmWDw==" + }, "Microsoft.CodeCoverage": { "type": "Transitive", "resolved": "18.8.1", @@ -267,22 +297,34 @@ }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", + "dependencies": { + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" + } + }, + "Microsoft.Data.SqlClient.Extensions.Abstractions": { + "type": "Transitive", + "resolved": "7.0.2", + "contentHash": "Zx7z61fG2Nc6LdDn4jA7b5Aj1ABrljkOPRE31RvVUdjF6IgbG60leDUhMCafsnWFgaheiK3iqpLe+kbf5Z5L8Q==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)" } }, + "Microsoft.Data.SqlClient.Internal.Logging": { + "type": "Transitive", + "resolved": "7.0.2", + "contentHash": "iqgYBbGSVy/DIYWjzmQOa964Kn4rs4wW5vg2IamqVK0fQqfTiILVR5hMK27XWqoyONtAZs+VxH354cPJBtSnbg==" + }, "Microsoft.Data.SqlClient.SNI.runtime": { "type": "Transitive", "resolved": "6.0.2", @@ -329,6 +371,21 @@ "Microsoft.SqlServer.Types": "160.1000.6" } }, + "Microsoft.Extensions.AmbientMetadata.Application": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "/FYCIyhRLrDwIg29tB/21/Rp7XMaEP/gWR5Cxyi4GgWcN/v/XXUpU52yhQux0s2SQy1Z0C1wnhptCMvLaaT45Q==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.10", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10" + } + }, + "Microsoft.Extensions.ApiDescription.Server": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "NCWCGiwRwje8773yzPQhvucYnnfeR+ZoB1VRIrIMp4uaeUNw7jvEPHij3HIbwCDuNCrNcphA00KSAR9yD9qmbg==" + }, "Microsoft.Extensions.Caching.Abstractions": { "type": "Transitive", "resolved": "10.0.10", @@ -399,6 +456,14 @@ "Microsoft.Extensions.FileProviders.Physical": "10.0.10" } }, + "Microsoft.Extensions.DependencyInjection.AutoActivation": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "LXwOAsnrflu2ln+Bxj7y3Zc/Pn4HquCCRzW81oOIuRsM8F75TxwA/ZpSFZ5E1+YkVpndz7BcHY4ThFSjjA4vbQ==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10" + } + }, "Microsoft.Extensions.DependencyModel": { "type": "Transitive", "resolved": "10.0.10", @@ -423,6 +488,14 @@ "Microsoft.Extensions.Options": "10.0.10" } }, + "Microsoft.Extensions.Diagnostics.ExceptionSummarization": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "tXmzwQeWgiycaLOtvSFnz0TPkJxXTyZrkwSVPTr83FgSiMj3BD/8eIbvrpGi5rzc2AgfKyegKo1ntJlJFey1Zg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10" + } + }, "Microsoft.Extensions.Diagnostics.HealthChecks": { "type": "Transitive", "resolved": "10.0.10", @@ -462,6 +535,48 @@ "resolved": "10.0.10", "contentHash": "jSOCVxEwCd4Aq925kJVz1kSO1EpX2OHYKL04qVREXkDU7Ce3pVDdHPYm+fEy8y/th2kJf/DAstRHpJAqoNWP8w==" }, + "Microsoft.Extensions.Http": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "DuEBLw2y7ZBfilnaJtlge8f2M49932v43t7j1InceXVjcZzxNrSEkobYXdgZkXuPFnFbKcbWpAS+fZgYEW1BhA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", + "Microsoft.Extensions.Diagnostics": "10.0.10", + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.Extensions.Logging.Abstractions": "10.0.10", + "Microsoft.Extensions.Options": "10.0.10" + } + }, + "Microsoft.Extensions.Http.Diagnostics": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "2pYnolFkigH7N6A5WHdGx93iZ8dIhrBnu4ZkjvB6RwbHzYmIy/iXVe12pdrViNDdeBSmKZ5FA9YP/xhwLT7q7A==", + "dependencies": { + "Microsoft.Extensions.Http": "10.0.10", + "Microsoft.Extensions.Telemetry": "10.8.0" + } + }, + "Microsoft.Extensions.Http.Polly": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "ceKyX9V/C+mtapMfXQ0ClKRkxDHAW2AAJoDgTcsh7UdOteCQKB5wRTFgHJ82Lh/3O+UlPA47LRGEZkRxtz/lCA==", + "dependencies": { + "Microsoft.Extensions.Http": "10.0.10", + "Polly": "7.2.4", + "Polly.Extensions.Http": "3.0.0" + } + }, + "Microsoft.Extensions.Http.Resilience": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "XtbZyYVxSNn1Aj2Z0PA8yauS12hPszTWDZ3GtZ5Vww7Ai3d8Pm841jMBnTvoTf1t9mRf3eSB38V5KUWxH6/4oQ==", + "dependencies": { + "Microsoft.Extensions.Http.Diagnostics": "10.8.0", + "Microsoft.Extensions.ObjectPool": "10.0.10", + "Microsoft.Extensions.Resilience": "10.8.0" + } + }, "Microsoft.Extensions.Logging.Configuration": { "type": "Transitive", "resolved": "10.0.10", @@ -545,6 +660,31 @@ "resolved": "10.0.10", "contentHash": "5wu/GrYVd8mG2DVUw3vFJzF+O336TyTGg/Kmcgw9bfwYhCoFiV5lR5QeEmKecJyrW4W54nMfD3p3589E8a7czQ==" }, + "Microsoft.Extensions.Resilience": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "RH/gv0ZcCnQ3d30lxb8+T2o661TwZq/K5eMwp488goQLX1QYqWN3i8L8XlN9DhrqP2Zcf0EtsWaKpJO3yHDUTw==", + "dependencies": { + "Microsoft.Extensions.Diagnostics": "10.0.10", + "Microsoft.Extensions.Diagnostics.ExceptionSummarization": "10.8.0", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10", + "Microsoft.Extensions.Telemetry.Abstractions": "10.8.0", + "Polly.Extensions": "8.4.2", + "Polly.RateLimiting": "8.4.2" + } + }, + "Microsoft.Extensions.Telemetry": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "IIWjDZguUJt6yNld9J4V88xuOUzpC76wBwfnRJLRmacmyTTl9jA8+KP5PuHPi7CKz/Vk/q+lQYmobiopuzapzA==", + "dependencies": { + "Microsoft.Extensions.AmbientMetadata.Application": "10.8.0", + "Microsoft.Extensions.DependencyInjection.AutoActivation": "10.8.0", + "Microsoft.Extensions.Logging.Configuration": "10.0.10", + "Microsoft.Extensions.ObjectPool": "10.0.10", + "Microsoft.Extensions.Telemetry.Abstractions": "10.8.0" + } + }, "Microsoft.Extensions.Telemetry.Abstractions": { "type": "Transitive", "resolved": "10.8.0", @@ -575,50 +715,57 @@ }, "Microsoft.IdentityModel.Abstractions": { "type": "Transitive", - "resolved": "8.14.0", - "contentHash": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==" + "resolved": "8.19.2", + "contentHash": "HJbo/lnSfNHUfphPRT910poQc4T2/9+8svFLvzuaYHGAOJ2Tu+oEDqpX0BVP3BJ4OuUM1kylEKyaiX2fCAK3Cw==" }, "Microsoft.IdentityModel.JsonWebTokens": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "3Izi75UCUssvo8LPx3OVnEeZay58qaFicrtSnbtUt7q8qQi0gy46gh4V8VUTkMVMKXV6VMyjBVmeNNgeCUJuIw==", + "resolved": "8.19.2", + "contentHash": "ui3fuBT4fs8kdKfBthI4NzLYIBIneEVS8UrL1JVBzAn80UiKmngBBi0BEByE7n/9c+EElcfFlCMFFTqpkBSLNA==", "dependencies": { - "Microsoft.IdentityModel.Tokens": "7.7.1" + "Microsoft.IdentityModel.Tokens": "8.19.2" } }, "Microsoft.IdentityModel.Logging": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "BZNgSq/o8gsKExdYoBKPR65fdsxW0cTF8PsdqB8y011AGUJJW300S/ZIsEUD0+sOmGc003Gwv3FYbjrVjvsLNQ==", + "resolved": "8.19.2", + "contentHash": "r5YLDIxGOnkVJHrqXv/iD1FM1CgGrQOdriXuvuWvTPmKbnGANhEysq9XKmN6IHjf2a+9bAGEpnoRBsAQlvJU5w==", "dependencies": { - "Microsoft.IdentityModel.Abstractions": "7.7.1" + "Microsoft.IdentityModel.Abstractions": "8.19.2" } }, "Microsoft.IdentityModel.Protocols": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "h+fHHBGokepmCX+QZXJk4Ij8OApCb2n2ktoDkNX5CXteXsOxTHMNgjPGpAwdJMFvAL7TtGarUnk3o97NmBq2QQ==", + "resolved": "8.19.2", + "contentHash": "sGxSsSrZXNmca6D+jHH2rVRyo2nNRd/g4H9CFbPmLLq0xgoH1U0orLWE5minfijw7+zq49tBs7txenbfAErRoQ==", "dependencies": { - "Microsoft.IdentityModel.Tokens": "7.7.1" + "Microsoft.IdentityModel.Tokens": "8.19.2" } }, "Microsoft.IdentityModel.Protocols.OpenIdConnect": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "yT2Hdj8LpPbcT9C9KlLVxXl09C8zjFaVSaApdOwuecMuoV4s6Sof/mnTDz/+F/lILPIBvrWugR9CC7iRVZgbfQ==", + "resolved": "8.16.0", + "contentHash": "h4yVXyJsEBBX5lg2G5ftMsi5JzcNEGAzrNphA6DQ6eOd8P0s+cDCOyPwVTYLePZvJL5unbPvYIvzrbTXzFjXnQ==", "dependencies": { - "Microsoft.IdentityModel.Protocols": "7.7.1", - "System.IdentityModel.Tokens.Jwt": "7.7.1" + "Microsoft.IdentityModel.Protocols": "8.16.0", + "System.IdentityModel.Tokens.Jwt": "8.16.0" } }, "Microsoft.IdentityModel.Tokens": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "fQ0VVCba75lknUHGldi3iTKAYUQqbzp1Un8+d9cm9nON0Gs8NAkXddNg8iaUB0qi/ybtAmNWizTR4avdkCJ9pQ==", + "resolved": "8.19.2", + "contentHash": "GtPC1S02uH1gOO4fQ+zRysIicKmEXaYFP8PIkdJYXqMyruYhopre4ozVHp0XiDSA0+GJvOZH9prxCPvgBMg4Ww==", "dependencies": { - "Microsoft.IdentityModel.Logging": "7.7.1" + "Microsoft.Bcl.Cryptography": "10.0.2", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.IdentityModel.Logging": "8.19.2" } }, + "Microsoft.OpenApi": { + "type": "Transitive", + "resolved": "2.7.5", + "contentHash": "0FA67RSnRM4tcBKqiqVu/HPdZ9+QOKbmeRjxRUGTCjPU4C0bmUhd97Dso7Yild5P7nOV6GxJ2xrK0Kv/O9xp0w==" + }, "Microsoft.SqlServer.Server": { "type": "Transitive", "resolved": "1.0.0", @@ -706,11 +853,257 @@ "Microsoft.Extensions.Logging.Abstractions": "10.0.0" } }, + "OpenIddict": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "Dih/QGs3ptgvsioSOdvn/6KMy3el5ImMimp/9SV9VX/FqTT6CxBOGoxaukfJeVqgcxQrgge1vQvFp3kWtgOKGg==", + "dependencies": { + "OpenIddict.Abstractions": "7.6.0", + "OpenIddict.Client": "7.6.0", + "OpenIddict.Client.SystemIntegration": "7.6.0", + "OpenIddict.Client.SystemNetHttp": "7.6.0", + "OpenIddict.Client.WebIntegration": "7.6.0", + "OpenIddict.Core": "7.6.0", + "OpenIddict.Server": "7.6.0", + "OpenIddict.Validation": "7.6.0", + "OpenIddict.Validation.ServerIntegration": "7.6.0", + "OpenIddict.Validation.SystemNetHttp": "7.6.0" + } + }, + "OpenIddict.Abstractions": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "Fp2MUvm6wwsqk6+ieUM/3MTMlbCL1zwSXixM0xC22FgKcl5EQB7E0vV38IRI/rSF8UGgvC/AOjMOF6FoFyks8g==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", + "Microsoft.Extensions.Primitives": "10.0.10", + "Microsoft.IdentityModel.Tokens": "8.19.2" + } + }, + "OpenIddict.Client": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "X+Sg1wRKeVOeayJuZ4/0M74zXRENvXOAl2JRPF4MaEOoS9Pj6WCWMLriWS0wwEC1ODxQmLaG3tYZfcdC9hU40g==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.IdentityModel.JsonWebTokens": "8.19.2", + "Microsoft.IdentityModel.Protocols": "8.19.2", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.Client.AspNetCore": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "XjEj75mTkvMn1sj4jONWLTRK6KzeY/Hou8218nwLnJnqYmKJ1th7UDfadNTb530KSC+WPLxfvi7grzIv0xzebw==", + "dependencies": { + "OpenIddict.Client": "7.6.0" + } + }, + "OpenIddict.Client.DataProtection": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ZVhuFSzPbAaZkiRRrr77oyJnciWhytPnTZ1ByaCGfDx1b977crbcJww2asfkMpgNzcbWWAR6SgcS05hklsQflw==", + "dependencies": { + "Microsoft.AspNetCore.DataProtection": "10.0.10", + "OpenIddict.Client": "7.6.0", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "OpenIddict.Client.SystemIntegration": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "yqnyQH6CG46+y2Rp4UcIOXNcWgDvITW43PULI9sr6xYCS34J/kO6GU6fhwOGUfUJjRdOis3Xj00WwUZxZUQ5ZQ==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", + "OpenIddict.Client": "7.6.0" + } + }, + "OpenIddict.Client.SystemNetHttp": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "HsiL7rCRCFd7D1uvi6+HLmlkw9ykbLsEJ1GJMttuLB3/C8/LcqX+wHxr1W/GXl2YXhleNMW21I5AeVtGnfd9tg==", + "dependencies": { + "Microsoft.Extensions.Http.Polly": "10.0.10", + "Microsoft.Extensions.Http.Resilience": "10.8.0", + "OpenIddict.Client": "7.6.0" + } + }, + "OpenIddict.Client.WebIntegration": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "vJzIkHZwjB8vp6Hhxa8s9ruh/L+ZgpJUszGVP+kQQoqDQ8yZygbl0xWKuAHQ4OCIk3FTeSib9xH8uetm47YPgg==", + "dependencies": { + "OpenIddict.Client": "7.6.0", + "OpenIddict.Client.SystemNetHttp": "7.6.0" + } + }, + "OpenIddict.EntityFrameworkCore.Models": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "DrWB0dLfsg3mZhWABAlqSZKXin4Q4Pn8V4S7/1JxP5T/7Ncl0y45rM9L2EWv/zdydaiTOFKi4jRDBZAgBxUjaQ==" + }, + "OpenIddict.Server": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "0c7wlRYcP2Smgjp3PWyyojZ972H26otp6irW/WAFEbg4ZylcUvtlw0lkrCr/K8s5lAnYZwrpyzguwrJhXGKPVg==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.IdentityModel.JsonWebTokens": "8.19.2", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.Server.AspNetCore": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "m2Hk2R4gaTlEYBvNHz2fvIr38p1agiR2nW2gi5WMgSByFHxeEK5uhxqVGdSB2kEHRtp9kza/zBWBgIM4TdcVqw==", + "dependencies": { + "OpenIddict.Server": "7.6.0" + } + }, + "OpenIddict.Server.DataProtection": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ScGEt6uNuk2MZ/6DzVAMi/QegZulkvYKPRMrRu5/8/uI8P5o5XbEhEvancFx9YmBHL1uGE8SIByfTfxJx8kefA==", + "dependencies": { + "Microsoft.AspNetCore.DataProtection": "10.0.10", + "OpenIddict.Server": "7.6.0", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "OpenIddict.Validation": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ovzLQJ31uWZpgLdRVuD9Gmu8wxvhvbXW32MFTglFblhfqRwj/hMcEGOo8hdl+ir3QpDr9NUDAORA+v3S7xc6IA==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.IdentityModel.JsonWebTokens": "8.19.2", + "Microsoft.IdentityModel.Protocols": "8.19.2", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.Validation.AspNetCore": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "oby5/Ymdxd+g1TGtyTGrcK5J3/NSI80aw2CJgULwwIxraiCjiIfexrBjCxkPchWqPNFe6aAdGJ/Jz6amHNfrzg==", + "dependencies": { + "OpenIddict.Validation": "7.6.0" + } + }, + "OpenIddict.Validation.DataProtection": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ckC2xcPeJ/kLSyJXNOmpmFLnA1qM6zC8RR5d2pUtoToA6caMikebkL3NmRjBgxBRVvFmi7x9lMJ7+YmrI+uAlg==", + "dependencies": { + "Microsoft.AspNetCore.DataProtection": "10.0.10", + "OpenIddict.Validation": "7.6.0", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "OpenIddict.Validation.ServerIntegration": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "0bHhKsMV45UMPM5Phh51+g/tMUJNRzOWe6p/5opKeMQV8XoO3y3J9o/ZbfZ0j4qTTbQ7pqzEKSZaS4cGs0B3nQ==", + "dependencies": { + "OpenIddict.Server": "7.6.0", + "OpenIddict.Validation": "7.6.0" + } + }, + "OpenIddict.Validation.SystemNetHttp": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "N3MHlVaik22apnhxCTsqP6TjwRB/h874+5ks/m1+wKmOWqMyJ5UjIaZCvUOrDSMtDiEVted8qkjEJRzjAe0rGQ==", + "dependencies": { + "Microsoft.Extensions.Http.Polly": "10.0.10", + "Microsoft.Extensions.Http.Resilience": "10.8.0", + "OpenIddict.Validation": "7.6.0" + } + }, + "OpenTelemetry": { + "type": "Transitive", + "resolved": "1.18.0", + "contentHash": "13AKxycK+olOLe061MjliPTNBR/DUkjyRr0b9zwUhKyMjFS8lXS7G31R85rkbM55up2YFmdykWdAw2giBDJpiQ==", + "dependencies": { + "Microsoft.Extensions.Configuration.EnvironmentVariables": "10.0.0", + "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Configuration": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "1.18.0" + } + }, + "OpenTelemetry.Api.ProviderBuilderExtensions": { + "type": "Transitive", + "resolved": "1.18.0", + "contentHash": "io6A6PJFp3vIObRGf6oPjdHsdglkinXt/0SpTDJHrVnsLxUtOzwh/QwTsnhBJ43wJ6QcGMkyNzsSSY8XEB1Q5Q==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "OpenTelemetry.Api": "1.18.0" + } + }, "Polly.Core": { "type": "Transitive", "resolved": "8.7.0", "contentHash": "BS2t+nsBer16PIebCEPNBK5fgMisADQyRCd7K+BgkMWpFmSaiYE+rVVNpFhGRqUkJmNSLmw0uCNzHHWfgml28Q==" }, + "Polly.Extensions": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "GZ9vRVmR0jV2JtZavt+pGUsQ1O1cuRKG7R7VOZI6ZDy9y6RNPvRvXK1tuS4ffUrv8L0FTea59oEuQzgS0R7zSA==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "Polly.Core": "8.4.2" + } + }, + "Polly.Extensions.Http": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "drrG+hB3pYFY7w1c3BD+lSGYvH2oIclH8GRSehgfyP5kjnFnHKQuuBhuHLv+PWyFuaTDyk/vfRpnxOzd11+J8g==", + "dependencies": { + "Polly": "7.1.0" + } + }, + "Polly.RateLimiting": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "ehTImQ/eUyO07VYW2WvwSmU9rRH200SKJ/3jku9rOkyWE0A2JxNFmAVms8dSn49QLSjmjFRRSgfNyOgr/2PSmA==", + "dependencies": { + "Polly.Core": "8.4.2", + "System.Threading.RateLimiting": "8.0.0" + } + }, + "runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "A8v6PGmk+UGbfWo5Ixup0lPM4swuSwOiayJExZwKIOjTlFFQIsu3QnDXECosBEyrWSPryxBVrdqtJyhK3BaupQ==", + "dependencies": { + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": "4.4.0" + } + }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, + "Serilog.Extensions.Logging": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "vx0kABKl2dWbBhhqAfTOk53/i8aV/5VaT3a6il9gn72Wqs2pM7EK2OB6No6xdqK2IaY6Zf9gdjLuK9BVa2rT+Q==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.0", + "Serilog": "4.2.0" + } + }, "SQLitePCLRaw.bundle_e_sqlite3": { "type": "Transitive", "resolved": "2.1.11", @@ -733,6 +1126,27 @@ "SQLitePCLRaw.core": "2.1.11" } }, + "Swashbuckle.AspNetCore.Swagger": { + "type": "Transitive", + "resolved": "10.2.3", + "contentHash": "1jUUs3WQnrS0FUtaZPLSy1yYMEwS1zlvDmvQ2/eldPHUANX0LJSLVZecCMgSMdeGiRqeaRrIXLtSz++TCiTMww==", + "dependencies": { + "Microsoft.OpenApi": "2.7.5" + } + }, + "Swashbuckle.AspNetCore.SwaggerGen": { + "type": "Transitive", + "resolved": "10.2.3", + "contentHash": "y7t4coDRAeFYChmvlMRiH2OjbiRrm9AVIDgt17fQfs3x9PVAI5PiwWYOhg+4F13R4Q36WDc9lqfoOnNa3tNbGg==", + "dependencies": { + "Swashbuckle.AspNetCore.Swagger": "10.2.3" + } + }, + "Swashbuckle.AspNetCore.SwaggerUI": { + "type": "Transitive", + "resolved": "10.2.3", + "contentHash": "nthWONRs/FJ4yyG206g1cC52WEG8EqrjuMWjGdR+5XG7lbjFto6NqcI9EMICgVFom/UivIjUVwI76ZHbHwTPfQ==" + }, "System.ClientModel": { "type": "Transitive", "resolved": "1.14.0", @@ -751,11 +1165,11 @@ }, "System.Configuration.ConfigurationManager": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "vPinosRgEk1CGjohbv0pDuz6gPprkWo5xvBTjOJjks5JOgOEWvPndq5NngGxiTcBcy1+k9GwzZ1c3Bp2fU5ezw==", + "resolved": "9.0.13", + "contentHash": "GbBrJq9S/gYpHzm7Pxx6Y5tDyfSfyxW6tlP5oiKJV38uf19Wp+GIIAnWfyL1zmNiz1+EjwVapw2WkBFvvqKQzg==", "dependencies": { - "System.Diagnostics.EventLog": "9.0.11", - "System.Security.Cryptography.ProtectedData": "9.0.11" + "System.Diagnostics.EventLog": "9.0.13", + "System.Security.Cryptography.ProtectedData": "9.0.13" } }, "System.Diagnostics.EventLog": { @@ -765,11 +1179,11 @@ }, "System.IdentityModel.Tokens.Jwt": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "rQkO1YbAjLwnDJSMpRhRtrc6XwIcEOcUvoEcge+evurpzSZM3UNK+MZfD3sKyTlYsvknZ6eJjSBfnmXqwOsT9Q==", + "resolved": "8.16.0", + "contentHash": "rrs2u7DRMXQG2yh0oVyF/vLwosfRv20Ld2iEpYcKwQWXHjfV+gFXNQsQ9p008kR9Ou4pxBs68Q6/9zC8Gi1wjg==", "dependencies": { - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Tokens": "7.7.1" + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Tokens": "8.16.0" } }, "System.IO.Hashing": { @@ -792,13 +1206,21 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "System.Security.Cryptography.ProtectedData": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "s8yUYuYYu+PAwvBdhLG1KyrGrk9gkYeuPxfAsXsTqqWyepwSyEw8hAaflW4nO98NG52YpYI1am2+9o+79h2RtQ==" + "resolved": "9.0.13", + "contentHash": "t8S9IDpjJKsLpLkeBdW8cWtcPyYqrGu93Dej1RO6WwuL/lkFSqWlan3rMJfortqz1mRIh+sys2AFsSA6jWJ3Jg==" + }, + "System.Security.Cryptography.Xml": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "Mz6Y+s+uMQKj1H2BUF0OhlmaOQkLgSG34/IrUaBDirYBQ6bgwcFvO/XtXWcoDlBLFoFB0uKqDNhybHOd+fQK1A==", + "dependencies": { + "System.Security.Cryptography.Pkcs": "10.0.10" + } }, "System.Threading.RateLimiting": { "type": "Transitive", @@ -862,6 +1284,33 @@ "xunit.v3.runner.common": "[3.2.2]" } }, + "Backbone.BuildingBlocks.API": { + "type": "Project", + "dependencies": { + "Asp.Versioning.Mvc": "[10.0.1, 10.0.1]", + "Asp.Versioning.Mvc.ApiExplorer": "[10.0.1, 10.0.1]", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Module": "[1.0.0, )", + "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", + "Backbone.Tooling": "[1.0.0, )", + "DotNetDiag.HealthChecks.NpgSql": "[10.0.10, 10.0.10]", + "DotNetDiag.HealthChecks.SqlServer": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.Relational": "[10.0.10, 10.0.10]", + "OpenTelemetry.Exporter.OpenTelemetryProtocol": "[1.18.0, )", + "OpenTelemetry.Extensions.Hosting": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.AspNetCore": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.EntityFrameworkCore": "[1.18.0-beta.1, )", + "OpenTelemetry.Instrumentation.Http": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.Runtime": "[1.18.0, 1.18.0]", + "Polly": "[8.7.0, 8.7.0]", + "Serilog.Enrichers.Sensitive": "[2.1.0, 2.1.0]", + "Serilog.Extensions.Hosting": "[10.0.0, 10.0.0]", + "Swashbuckle.AspNetCore": "[10.2.3, 10.2.3]", + "System.Data.SqlClient": "[4.9.1, 4.9.1]" + } + }, "Backbone.BuildingBlocks.Application": { "type": "Project", "dependencies": { @@ -919,6 +1368,15 @@ "Serilog": "[4.4.0, 4.4.0]" } }, + "Backbone.BuildingBlocks.Module": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Microsoft.Extensions.Configuration.Abstractions": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[10.0.10, 10.0.10]", + "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" + } + }, "Backbone.Common.Infrastructure": { "type": "Project", "dependencies": { @@ -936,23 +1394,58 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, + "Backbone.Modules.Devices.Abstractions": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Domain": "[1.0.0, )" + } + }, "Backbone.Modules.Devices.Contracts": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Domain": "[1.0.0, )" } }, - "Backbone.Modules.Relationships.Application": { + "Backbone.Modules.Devices.Domain": { "type": "Project", "dependencies": { - "Backbone.BuildingBlocks.Application": "[1.0.0, )", - "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Domain": "[1.0.0, )", + "Backbone.DevelopmentKit.Identity": "[1.0.0, )", "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Common": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Domain": "[1.0.0, )", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Tooling": "[1.0.0, )", + "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]" + } + }, + "Backbone.Modules.Devices.Infrastructure": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", + "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", + "FirebaseAdmin": "[3.6.0, 3.6.0]", + "JWT": "[11.1.0, 11.1.0]", + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.Relational": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.DependencyInjection": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Identity.Core": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Identity.Stores": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Logging": "[10.0.10, 10.0.10]", + "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, 10.0.3]", + "OpenIddict.AspNetCore": "[7.6.0, 7.6.0]", + "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", + "Polly": "[8.7.0, 8.7.0]" + } + }, + "Backbone.Modules.Relationships.Abstractions": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Application": "[1.0.0, )", + "Backbone.Modules.Relationships.Domain": "[1.0.0, )" } }, "Backbone.Modules.Relationships.Common": { @@ -975,6 +1468,47 @@ "Backbone.Tooling": "[1.0.0, )" } }, + "Backbone.Modules.Relationships.Infrastructure": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", + "Backbone.Modules.Relationships.Abstractions": "[1.0.0, )", + "Backbone.Modules.Relationships.Domain": "[1.0.0, )", + "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", + "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, 10.0.3]" + } + }, + "Backbone.Modules.Relationships.Infrastructure.Database.Postgres": { + "type": "Project", + "dependencies": { + "Backbone.Modules.Relationships.Infrastructure": "[1.0.0, )" + } + }, + "Backbone.Modules.Relationships.Infrastructure.Database.SqlServer": { + "type": "Project", + "dependencies": { + "Backbone.Modules.Relationships.Infrastructure": "[1.0.0, )" + } + }, + "Backbone.Modules.Relationships.Module": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.API": "[1.0.0, )", + "Backbone.BuildingBlocks.Module": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Relationships.Abstractions": "[1.0.0, )", + "Backbone.Modules.Relationships.Common": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", + "Backbone.Modules.Relationships.Domain": "[1.0.0, )", + "Backbone.Modules.Relationships.Infrastructure": "[1.0.0, )", + "Backbone.Modules.Relationships.Infrastructure.Database.Postgres": "[1.0.0, )", + "Backbone.Modules.Relationships.Infrastructure.Database.SqlServer": "[1.0.0, )", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" + } + }, "Backbone.Tooling": { "type": "Project", "dependencies": { @@ -996,6 +1530,24 @@ "Shouldly": "[4.3.0, 4.3.0]" } }, + "Asp.Versioning.Mvc": { + "type": "CentralTransitive", + "requested": "[10.0.1, 10.0.1]", + "resolved": "10.0.1", + "contentHash": "OqoFPKKxXkNmw62H3CgXkPrf1L4PPwwyYr9QMP6itt/khKTIayqaHhK6F2e3jt6KHc4s23cWAUbu+Z5GPEeMaw==", + "dependencies": { + "Asp.Versioning.Http": "10.0.1" + } + }, + "Asp.Versioning.Mvc.ApiExplorer": { + "type": "CentralTransitive", + "requested": "[10.0.1, 10.0.1]", + "resolved": "10.0.1", + "contentHash": "ylPZe+LheFp0pt2tSMq2pPeGAkMLqWVOn5+1/xOB/eUj889n9b35Sny08bSQ0ziAGIFjp3BBTXaYsWJjRoFV4A==", + "dependencies": { + "Asp.Versioning.Mvc": "10.0.1" + } + }, "Autofac": { "type": "CentralTransitive", "requested": "[9.3.2, 9.3.2]", @@ -1032,12 +1584,44 @@ "Azure.Storage.Common": "12.28.0" } }, + "BouncyCastle.Cryptography": { + "type": "CentralTransitive", + "requested": "[2.7.0, 2.7.0]", + "resolved": "2.7.0", + "contentHash": "U+12df8UEWHgBi04YVf/Lgi2dy3SItlIYvHjjEVa/BngCQIzDCDRBk50DDByCfDvSbe5pRNFr3b7UrVK2kMcLw==" + }, + "CSharpFunctionalExtensions": { + "type": "CentralTransitive", + "requested": "[3.7.0, 3.7.0]", + "resolved": "3.7.0", + "contentHash": "eMZp8tc88O96eEFutiIskF3LE8lFY3fjbNRGfNa1ca0CD9sB8A00r5ltyYDih/7UFdJdVbhVq7tGeHI8xj6DlQ==" + }, "Dapper": { "type": "CentralTransitive", "requested": "[2.1.79, 2.1.79]", "resolved": "2.1.79", "contentHash": "8YijbzgTfmqmQOnVNorYM6K++pxqnW3nJ4aC1sRHzxUA2CcuoJ9gsTem3kgBnPRMc38zZHl4Esb6hAezXIEEuw==" }, + "DotNetDiag.HealthChecks.NpgSql": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "lxb6wQ1YC/TpvZMVgbyeLP5dYOg/RJWLg1xlR+I0FeyfyMmukppKdwzBOrKRtZ8FHG3nV9xrVTaPdwRw0yL4Vw==", + "dependencies": { + "Microsoft.Extensions.Diagnostics.HealthChecks": "10.0.9", + "Npgsql": "10.0.3" + } + }, + "DotNetDiag.HealthChecks.SqlServer": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "6t2HP5VQR0GZDJiw8iZvzOTRC+84irUeaUuWvcqcnc4K5Mzrn/A9V0ucoyjySXOF1vGkdTHjlJMknJVYC9c2Hg==", + "dependencies": { + "Microsoft.Data.SqlClient": "7.0.2", + "Microsoft.Extensions.Diagnostics.HealthChecks": "10.0.9" + } + }, "EFCore.BulkExtensions.Core": { "type": "CentralTransitive", "requested": "[10.0.1, 10.0.1]", @@ -1071,6 +1655,16 @@ "NetTopologySuite.IO.SqlServerBytes": "2.1.0" } }, + "FirebaseAdmin": { + "type": "CentralTransitive", + "requested": "[3.6.0, 3.6.0]", + "resolved": "3.6.0", + "contentHash": "aP8UWyQYACDOZqnHN9WB77TS0DlB8kVj8/HB7evUaAhAgPJQ9y4NmISJ3kkYkWBG5va3PHvYN5H+ZDBhABSEFQ==", + "dependencies": { + "Google.Api.Gax.Rest": "4.13.1", + "Google.Apis.Auth": "1.73.0" + } + }, "FluentValidation": { "type": "CentralTransitive", "requested": "[12.1.1, 12.1.1]", @@ -1107,6 +1701,15 @@ "Google.Apis.Storage.v1": "[1.74.0.4115, 2.0.0)" } }, + "JWT": { + "type": "CentralTransitive", + "requested": "[11.1.0, 11.1.0]", + "resolved": "11.1.0", + "contentHash": "GbmNr2WUyY3Ma0rwuvmTDnE5tIV8gFNDWeua9Fn54HwrpvGfwQzi7HtEAnMgI4quf4MuJr0iwPkt9sKrNCq1Tg==", + "dependencies": { + "Newtonsoft.Json": "13.0.4" + } + }, "MediatR": { "type": "CentralTransitive", "requested": "[12.5.0, 12.5.0]", @@ -1123,6 +1726,16 @@ "resolved": "2.0.1", "contentHash": "FYv95bNT4UwcNA+G/J1oX5OpRiSUxteXaUt2BJbRSdRNiIUNbggJF69wy6mnk2wYToaanpdXZdCwVylt96MpwQ==" }, + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "/ZV8RMWbWob1ZGsF5f1wVJNNlFLPKCf2ba834PpQiNhirVQ/ksup5SujtuUsvByHEZgv+9dmjC/4Xdi75axmXQ==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "10.0.10", + "Microsoft.Extensions.Identity.Stores": "10.0.10" + } + }, "Microsoft.Data.Sqlite.Core": { "type": "CentralTransitive", "requested": "[10.0.10, 10.0.10]", @@ -1338,6 +1951,17 @@ "Microsoft.Extensions.Options": "10.0.10" } }, + "Microsoft.Extensions.Identity.Stores": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "WMG/9wPJPnwU2w1R/WPLO/RL2UpGpBhw9z6odAAUkFdZypzzXl620FJWEoPpuBUq6Q4GYgMg0FQVRCO6gO4MQQ==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "10.0.10", + "Microsoft.Extensions.Identity.Core": "10.0.10", + "Microsoft.Extensions.Logging": "10.0.10" + } + }, "Microsoft.Extensions.Logging": { "type": "CentralTransitive", "requested": "[10.0.10, 10.0.10]", @@ -1379,12 +2003,109 @@ "Npgsql": "10.0.3" } }, + "OpenIddict.AspNetCore": { + "type": "CentralTransitive", + "requested": "[7.6.0, 7.6.0]", + "resolved": "7.6.0", + "contentHash": "FblhXU1SzSjL1nPsK5kqi+uMofNYLg1gwBU/qqc8diOafTv/6jLOhpCzzk+wISR8OnkS7H3oFMcTjy8aaTm8ww==", + "dependencies": { + "OpenIddict": "7.6.0", + "OpenIddict.Client.AspNetCore": "7.6.0", + "OpenIddict.Client.DataProtection": "7.6.0", + "OpenIddict.Server.AspNetCore": "7.6.0", + "OpenIddict.Server.DataProtection": "7.6.0", + "OpenIddict.Validation.AspNetCore": "7.6.0", + "OpenIddict.Validation.DataProtection": "7.6.0" + } + }, + "OpenIddict.Core": { + "type": "CentralTransitive", + "requested": "[7.6.0, 7.6.0]", + "resolved": "7.6.0", + "contentHash": "LJQ+GsSY6Nfw5FZ4NzCvL2kwYU1GNz6ygiUNGvqcKP0qXwstU59RDAjNKTCGkPPq4TQGnETqr4UsJgyK+AFxeA==", + "dependencies": { + "Microsoft.Extensions.Caching.Memory": "10.0.10", + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.Extensions.Options": "10.0.10", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[7.6.0, 7.6.0]", + "resolved": "7.6.0", + "contentHash": "BWbgvgKbDcg3EuNJvmXtUzeLxg9c4bU+PfDnZetCjGwcnlCsWcASkjVexKKevtUgWxRWJTQFRchMA09OKmOF/w==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "10.0.10", + "OpenIddict.Core": "7.6.0", + "OpenIddict.EntityFrameworkCore.Models": "7.6.0" + } + }, "OpenTelemetry.Api": { "type": "CentralTransitive", "requested": "[1.18.0, )", "resolved": "1.18.0", "contentHash": "Dhzm5oughIY9EWckt2J1yXcEbXpki5WCL2q7prJoYxzH6C7jdkfGtPMTkUVZZ4AhjJKzQnlC+kLSIlmIVwC4Vw==" }, + "OpenTelemetry.Exporter.OpenTelemetryProtocol": { + "type": "CentralTransitive", + "requested": "[1.18.0, )", + "resolved": "1.18.0", + "contentHash": "Et3WAviooKGObZjUZN8d6eTsdJs1YM3ZoN+KlWSAHksTmHG1nyGi9XGo2wb0fkFMWK0g80FOPdR1njg52Dm+aw==", + "dependencies": { + "OpenTelemetry": "1.18.0" + } + }, + "OpenTelemetry.Extensions.Hosting": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "u+JMA82H65MKwMvd2qUpL8C2qE4Jux2nvX9hmy036UK/Apv2YyIRYCttF/vlX6nMPcAKI8BXkscmL4QG3C69fw==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", + "OpenTelemetry": "1.18.0" + } + }, + "OpenTelemetry.Instrumentation.AspNetCore": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "hBiMXE/CGIAHUOpi0gScNkjHB0L9XbCin5lZObL+dMBl4OmpndnHgxP3JZDnnGtU6qOzdeh8TYUV9f6Jgmmhlw==", + "dependencies": { + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[1.18.0-beta.1, )", + "resolved": "1.18.0-beta.1", + "contentHash": "n15cNXxkSl9G6KD41wZYmujjERYOBiIgn2VeesTFhLtHZ+QQQE3baLrCk7UyzidEw/uGObRcW3SKhqpyMpGe1w==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Http": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "/X57peOOa4a+9V4DSVXbuIWdsAxmU5gsxw8lu+gJU0zuewsYhC9f6qdm8GEW0VvqG9e+gxn0HdVR5G3YHcWDTw==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Runtime": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "McuXGjBJDL/Cown2PxfUQysK98MZG7ZDjO/IKUtaAx8t1m0PB0d+QtJC79RFTVipMhRIwjJiULNOp0OGfZbvwg==", + "dependencies": { + "OpenTelemetry.Api": "[1.18.0, 2.0.0)" + } + }, "Polly": { "type": "CentralTransitive", "requested": "[8.7.0, 8.7.0]", @@ -1419,6 +2140,25 @@ "resolved": "4.4.0", "contentHash": "ZC6Le3rr4TVJJjS4KsQAesxeF1EhW9qcZmmG7eP5Y2G3+gTGkJEUXkq4+tZNPtyp05I0wWOxnIjwtxFweJsObw==" }, + "Serilog.Enrichers.Sensitive": { + "type": "CentralTransitive", + "requested": "[2.1.0, 2.1.0]", + "resolved": "2.1.0", + "contentHash": "nlaEYMoHjJqncjQgc0Nv4LOIkAwUt4Nvmx3EMNjY4MKC7QqZs9zB0v/NwFnaWzLF7qztc7mna1bjn20Auohu0g==" + }, + "Serilog.Extensions.Hosting": { + "type": "CentralTransitive", + "requested": "[10.0.0, 10.0.0]", + "resolved": "10.0.0", + "contentHash": "E7juuIc+gzoGxgzFooFgAV8g9BfiSXNKsUok9NmEpyAXg2odkcPsMa/Yo4axkJRlh0se7mkYQ1GXDaBemR+b6w==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Serilog": "4.3.0", + "Serilog.Extensions.Logging": "10.0.0" + } + }, "Shouldly": { "type": "CentralTransitive", "requested": "[4.3.0, 4.3.0]", @@ -1440,25 +2180,45 @@ "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "Swashbuckle.AspNetCore": { + "type": "CentralTransitive", + "requested": "[10.2.3, 10.2.3]", + "resolved": "10.2.3", + "contentHash": "8KNh1RWvofdU6DVLyBs4Z/OpUMnmf8oNvJQc0QxpwySRbi42bwLfdVMMrXZWANg5U5KQGQq1xW6r/hlcqw99tQ==", + "dependencies": { + "Microsoft.Extensions.ApiDescription.Server": "10.0.0", + "Swashbuckle.AspNetCore.Swagger": "10.2.3", + "Swashbuckle.AspNetCore.SwaggerGen": "10.2.3", + "Swashbuckle.AspNetCore.SwaggerUI": "10.2.3" + } + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/linux-arm64": { "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1479,6 +2239,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1494,33 +2269,41 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "SQLitePCLRaw.lib.e_sqlite3": { "type": "CentralTransitive", "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/linux-x64": { "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1541,6 +2324,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1556,33 +2354,41 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "SQLitePCLRaw.lib.e_sqlite3": { "type": "CentralTransitive", "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/osx-arm64": { "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1603,6 +2409,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1618,33 +2439,41 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "SQLitePCLRaw.lib.e_sqlite3": { "type": "CentralTransitive", "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/win-x64": { "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1665,6 +2494,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1680,14 +2524,23 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "SQLitePCLRaw.lib.e_sqlite3": { "type": "CentralTransitive", "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } } } From be7b0cbb683be9a12f9f1fced7c2ef3cabeb9980 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20H=C3=BCgel?= Date: Fri, 2 Oct 2026 11:36:57 +0200 Subject: [PATCH 17/25] refactor: move http stuff into the Endpoint.cs file that's using it --- .../RelationshipTemplates/GET.feature | 38 ++++++++--------- .../RelationshipTemplatesStepDefinitions.cs | 11 +---- .../VerticalSliceArchitecture.cs | 4 +- .../Devices/RegisterDevice/Endpoint.cs | 21 +++++++--- .../Devices/RegisterDevice/Request.cs | 11 ----- .../Identities/CreateIdentity/Endpoint.cs | 19 ++++++++- .../Identities/CreateIdentity/Request.cs | 20 --------- .../Files/ClaimFileOwnership/Endpoint.cs | 9 +++- .../Files/ClaimFileOwnership/Request.cs | 6 --- .../Features/Files/CreateFile/Endpoint.cs | 41 +++++++++++++++---- .../CreateFile/Http/RequestFormParams.cs | 16 -------- .../Http/RequestFormParamsValidator.cs | 17 -------- .../ValidateFileOwnershipToken/Endpoint.cs | 10 +++-- .../Http/RequestBody.cs | 6 --- .../IRelationshipTemplatesRepository.cs | 2 +- .../ListRelationshipTemplatesQueryItem.cs | 7 ---- .../RelationshipTemplatesRepository.cs | 15 +++---- .../ApplicationServiceCollectionExtensions.cs | 2 - .../ListRelationshipTemplates/Endpoint.cs | 8 +--- .../ListRelationshipTemplates/Handler.cs | 2 +- .../OpenApiOperationFilter.cs | 23 ----------- .../ListRelationshipTemplates/Query.cs | 4 +- .../TemplateQueryItems.cs | 33 --------------- .../ListRelationshipTemplates/Validator.cs | 17 ++------ .../AcceptRelationship/Endpoint.cs | 9 +++- .../AcceptRelationship/Request.cs | 6 --- .../RejectRelationship/Endpoint.cs | 9 +++- .../RejectRelationship/Request.cs | 6 --- .../RevokeRelationship/Endpoint.cs | 9 +++- .../RevokeRelationship/Request.cs | 6 --- .../Validator.Tests.cs | 30 +++----------- .../ApplicationServiceCollectionExtensions.cs | 2 - .../Features/Tokens/ListTokens/Endpoint.cs | 5 +-- .../Tokens/ListTokens/ListTokensQueryItem.cs | 17 -------- .../ListTokens/OpenApiOperationFilter.cs | 22 ---------- .../Tokens/UpdateTokenContent/Endpoint.cs | 10 ++++- .../Tokens/UpdateTokenContent/Request.cs | 7 ---- .../RelationshipTemplatesEndpoint.cs | 16 ++------ .../ListRelationshipTemplatesQueryItem.cs | 7 ---- 39 files changed, 158 insertions(+), 345 deletions(-) delete mode 100644 Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Request.cs delete mode 100644 Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Request.cs delete mode 100644 Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Request.cs delete mode 100644 Modules/Files/src/Files.Module/Features/Files/CreateFile/Http/RequestFormParams.cs delete mode 100644 Modules/Files/src/Files.Module/Features/Files/CreateFile/Http/RequestFormParamsValidator.cs delete mode 100644 Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Http/RequestBody.cs delete mode 100644 Modules/Relationships/src/Relationships.Abstractions/ListRelationshipTemplatesQueryItem.cs delete mode 100644 Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/OpenApiOperationFilter.cs delete mode 100644 Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/TemplateQueryItems.cs delete mode 100644 Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Request.cs delete mode 100644 Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Request.cs delete mode 100644 Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Request.cs delete mode 100644 Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/ListTokensQueryItem.cs delete mode 100644 Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/OpenApiOperationFilter.cs delete mode 100644 Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Request.cs delete mode 100644 Sdks/ConsumerApi.Sdk/src/Endpoints/RelationshipTemplates/Types/Requests/ListRelationshipTemplatesQueryItem.cs diff --git a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/Features/RelationshipTemplates/GET.feature b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/Features/RelationshipTemplates/GET.feature index 8fa82d97bd..a097a623b2 100644 --- a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/Features/RelationshipTemplates/GET.feature +++ b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/Features/RelationshipTemplates/GET.feature @@ -22,27 +22,27 @@ User requests Relationship Templates | rt13 | i2 | i3 | password | | rt14 | i2 | i3 | password | When sends a GET request to the /RelationshipTemplates endpoint with the following payloads - | templateName | passwordOnGet | - | rt1 | - | - | rt2 | - | - | rt3 | password | - | rt4 | password | - | rt5 | password | - | rt6 | - | - | rt7 | password | - | rt8 | - | - | rt9 | - | - | rt10 | - | - | rt11 | - | - | rt12 | - | - | rt13 | password | - | rt14 | wordpass | + | templateName | + | rt1 | + | rt2 | + | rt3 | + | rt4 | + | rt5 | + | rt6 | + | rt7 | + | rt8 | + | rt9 | + | rt10 | + | rt11 | + | rt12 | + | rt13 | + | rt14 | Then the response status code is 200 (OK) And the response contains Relationship Template(s) Examples: | activeIdentity | retreivedTemplates | - | i1 | rt1, rt2, rt3, rt4, rt5, rt6, rt7, rt9 | - | i2 | rt1, rt2, rt3, rt4, rt5, rt7, rt8, rt10, rt11, rt12, rt13, rt14 | - | i3 | rt1, rt2, rt3, rt4, rt5, rt7, rt10, rt12, rt13 | - | i4 | rt1, rt2, rt3, rt4, rt5, rt7 | + | i1 | rt1, rt2, rt3, rt4, rt5, rt6, rt9 | + | i2 | rt1, rt2, rt3, rt4, rt7, rt8, rt10, rt11, rt12, rt13, rt14 | + | i3 | rt1, rt2, rt3, rt4, rt10, rt12 | + | i4 | rt1, rt2, rt3, rt4 | diff --git a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/StepDefinitions/RelationshipTemplatesStepDefinitions.cs b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/StepDefinitions/RelationshipTemplatesStepDefinitions.cs index 11cd8317b8..ab9af681e4 100644 --- a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/StepDefinitions/RelationshipTemplatesStepDefinitions.cs +++ b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/StepDefinitions/RelationshipTemplatesStepDefinitions.cs @@ -148,15 +148,9 @@ public async Task WhenISendsAGETRequestToTheRelationshipTemplatesEndpointWithThe var getRequestPayloadSet = table.CreateSet(); - var queryItems = getRequestPayloadSet.Select(payload => - { - var relationshipTemplateId = _relationshipTemplatesContext.CreateRelationshipTemplatesResponses[payload.TemplateName].Id; - var password = payload.PasswordOnGet == "-" ? null : Convert.FromBase64String(payload.PasswordOnGet.Trim()); - - return new ListRelationshipTemplatesQueryItem { Id = relationshipTemplateId, Password = password }; - }).ToList(); + var ids = getRequestPayloadSet.Select(payload => _relationshipTemplatesContext.CreateRelationshipTemplatesResponses[payload.TemplateName].Id); - _responseContext.WhenResponse = _listRelationshipTemplatesResponse = await client.RelationshipTemplates.ListTemplates(queryItems); + _responseContext.WhenResponse = _listRelationshipTemplatesResponse = await client.RelationshipTemplates.ListTemplates(ids); } [When($"{RegexFor.SINGLE_THING} sends a DELETE request to the /RelationshipTemplates/{RegexFor.SINGLE_THING}.Id endpoint")] @@ -204,5 +198,4 @@ file class RelationshipTemplateProperties file class GetRequestPayload { public required string TemplateName { get; set; } - public required string PasswordOnGet { get; set; } } diff --git a/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs b/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs index c30b139410..e1a2657fc0 100644 --- a/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs +++ b/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs @@ -77,8 +77,8 @@ public void UseCasesShouldNotDependOnAdapters(string module) Classes().That().Are(UseCases(module)).Should().NotDependOnAnyTypesThat() .ResideInAssemblyMatching(@"^Backbone\.Modules\.[^.]+\.Infrastructure[^,]*(,|$)") .Check(Backbone.ARCHITECTURE); - // Form DTO validators belong to the HTTP adapter; command/query validators remain independent. - var httpValidators = Classes().That().ResideInNamespaceMatching(@".*\.Http(\.|$)") + // Validators nested in endpoints belong to the HTTP adapter; command/query validators remain independent. + var httpValidators = Classes().That().HaveFullNameMatching(@".*\.Endpoint[+.].*") .And().AreAssignableTo(typeof(IValidator)); Classes().That().Are(UseCases(module)).And().AreNot(httpValidators) .Should().NotDependOnAnyTypesThat().ResideInNamespaceMatching(@"Microsoft\.AspNetCore\..*") diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Endpoint.cs index a393de4b7c..bd2394aa00 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Endpoint.cs @@ -6,6 +6,7 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Routing; +using Backbone.Modules.Devices.Module.Features.Devices.Shared; namespace Backbone.Modules.Devices.Module.Features.Devices.RegisterDevice; @@ -19,19 +20,27 @@ public static RouteGroupBuilder MapRegisterDeviceEndpoint(this RouteGroupBuilder return group; } - private static async Task Handle([FromBody] RegisterDeviceRequest request, IMediator mediator, CancellationToken cancellationToken) + private static async Task Handle([FromBody] RequestBody body, IMediator mediator, CancellationToken cancellationToken) { - if (request.DevicePassword == null || request.SignedChallenge == null || request.SignedChallenge.Challenge == null || request.SignedChallenge.Signature == null) + if (body.DevicePassword == null || body.SignedChallenge == null || body.SignedChallenge.Challenge == null || body.SignedChallenge.Signature == null) throw new BadHttpRequestException("Required request fields must not be null."); var command = new RegisterDeviceCommand { - CommunicationLanguage = request.CommunicationLanguage ?? CommunicationLanguage.DEFAULT_LANGUAGE.Value, - SignedChallenge = request.SignedChallenge, - DevicePassword = request.DevicePassword, - IsBackupDevice = request.IsBackupDevice ?? false + CommunicationLanguage = body.CommunicationLanguage ?? CommunicationLanguage.DEFAULT_LANGUAGE.Value, + SignedChallenge = body.SignedChallenge, + DevicePassword = body.DevicePassword, + IsBackupDevice = body.IsBackupDevice ?? false }; var response = await mediator.Send(command, cancellationToken); return EnvelopeHttpResults.Created("", response); } } + +public class RequestBody +{ + public required string DevicePassword { get; set; } + public string? CommunicationLanguage { get; set; } + public required SignedChallengeDTO SignedChallenge { get; set; } + public bool? IsBackupDevice { get; set; } +} diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Request.cs b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Request.cs deleted file mode 100644 index 858312c212..0000000000 --- a/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Request.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Backbone.Modules.Devices.Module.Features.Devices.Shared; - -namespace Backbone.Modules.Devices.Module.Features.Devices.RegisterDevice; - -public class RegisterDeviceRequest -{ - public required string DevicePassword { get; set; } - public string? CommunicationLanguage { get; set; } - public required SignedChallengeDTO SignedChallenge { get; set; } - public bool? IsBackupDevice { get; set; } -} diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Endpoint.cs index 57c8a481a9..78e57b03ca 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Endpoint.cs @@ -24,7 +24,7 @@ public static RouteGroupBuilder MapCreateIdentityEndpoint(this RouteGroupBuilder return group; } - private static async Task Handle([FromBody] CreateIdentityRequest request, IOAuthClientsRepository clients, IMediator mediator, CancellationToken cancellationToken) + private static async Task Handle([FromBody] RequestBody request, IOAuthClientsRepository clients, IMediator mediator, CancellationToken cancellationToken) { if (request.ClientId == null || request.ClientSecret == null || request.IdentityPublicKey == null || request.DevicePassword == null || request.SignedChallenge == null || request.SignedChallenge.Challenge == null || request.SignedChallenge.Signature == null) throw new BadHttpRequestException("Required request fields must not be null."); @@ -49,3 +49,20 @@ private static async Task Handle([FromBody] CreateIdentityRequest reque return EnvelopeHttpResults.Created("", response); } } + +public class RequestBody +{ + public required string ClientId { get; set; } + public required string ClientSecret { get; set; } + public required byte[] IdentityPublicKey { get; set; } + public required string DevicePassword { get; set; } + public string? DeviceCommunicationLanguage { get; set; } + public required byte IdentityVersion { get; set; } + public required SignedChallengeC SignedChallenge { get; set; } + + public class SignedChallengeC + { + public required string Challenge { get; set; } + public required byte[] Signature { get; set; } + } +} diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Request.cs b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Request.cs deleted file mode 100644 index d082d679de..0000000000 --- a/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Request.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Backbone.Modules.Devices.Module.Features.Devices.Shared; - -namespace Backbone.Modules.Devices.Module.Features.Identities.CreateIdentity; - -public class CreateIdentityRequest -{ - public required string ClientId { get; set; } - public required string ClientSecret { get; set; } - public required byte[] IdentityPublicKey { get; set; } - public required string DevicePassword { get; set; } - public string? DeviceCommunicationLanguage { get; set; } - public required byte IdentityVersion { get; set; } - public required CreateIdentityRequestSignedChallenge SignedChallenge { get; set; } -} - -public class CreateIdentityRequestSignedChallenge -{ - public required string Challenge { get; set; } - public required byte[] Signature { get; set; } -} diff --git a/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Endpoint.cs b/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Endpoint.cs index 2d843ef7b1..5bd9bbbbcc 100644 --- a/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Endpoint.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Endpoint.cs @@ -20,9 +20,14 @@ public static RouteGroupBuilder MapClaimFileOwnershipEndpoint(this RouteGroupBui return group; } - private static async Task Handle([FromRoute] string fileId, [FromBody] ClaimFileRequest request, IMediator mediator, CancellationToken cancellationToken) + private static async Task Handle([FromRoute] string fileId, [FromBody] RequestBody body, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new ClaimFileOwnershipCommand { FileId = fileId, OwnershipToken = request.OwnershipToken }, cancellationToken); + var response = await mediator.Send(new ClaimFileOwnershipCommand { FileId = fileId, OwnershipToken = body.OwnershipToken }, cancellationToken); return EnvelopeHttpResults.Ok(response); } } + +public class RequestBody +{ + public required string OwnershipToken { get; init; } +} diff --git a/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Request.cs b/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Request.cs deleted file mode 100644 index 7897cfbbc4..0000000000 --- a/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Request.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Backbone.Modules.Files.Module.Features.Files.ClaimFileOwnership; - -public class ClaimFileRequest -{ - public required string OwnershipToken { get; init; } -} diff --git a/Modules/Files/src/Files.Module/Features/Files/CreateFile/Endpoint.cs b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Endpoint.cs index b1854471d3..88b77b0068 100644 --- a/Modules/Files/src/Files.Module/Features/Files/CreateFile/Endpoint.cs +++ b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Endpoint.cs @@ -1,7 +1,8 @@ +using FluentValidation; +using Backbone.Tooling.Extensions; using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.Modules.Files.Module.Features.Files.CreateFile.Http; using Backbone.Tooling; using MediatR; using Microsoft.AspNetCore.Builder; @@ -28,7 +29,7 @@ private static async Task Handle([FromForm] RequestFormParams dto, Http ValidateRequiredFormFields(dto); var validationResult = await new RequestFormParamsValidator().ValidateAsync(dto, cancellationToken); if (!validationResult.IsValid) - throw new ValidationException(new ApplicationError(validationResult.Errors.First().ErrorCode, validationResult.Errors.First().ErrorMessage)); + throw new Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ValidationException(new ApplicationError(validationResult.Errors.First().ErrorCode, validationResult.Errors.First().ErrorMessage)); using var inputStream = new MemoryStream(); await dto.Content.CopyToAsync(inputStream, cancellationToken); @@ -43,20 +44,46 @@ private static async Task Handle([FromForm] RequestFormParams dto, Http return EnvelopeHttpResults.CreatedAtRoute(GetFileContent.Endpoint.ROUTE_NAME, new { v = context.Request.RouteValues["v"], fileId = response.Id }, response); } - private static void ValidateRequiredFormFields(RequestFormParams dto) + private static void ValidateRequiredFormFields(RequestFormParams formParams) { // Minimal API form mapping does not perform MVC's implicit required-field validation. - if (dto.Content == null) + if (formParams.Content == null) throw new BadHttpRequestException("'Content': The Content field is required."); foreach (var (name, value) in new[] { - (nameof(dto.OwnerSignature), dto.OwnerSignature), - (nameof(dto.CipherHash), dto.CipherHash), - (nameof(dto.EncryptedProperties), dto.EncryptedProperties) + (nameof(formParams.OwnerSignature), formParams.OwnerSignature), + (nameof(formParams.CipherHash), formParams.CipherHash), + (nameof(formParams.EncryptedProperties), formParams.EncryptedProperties) }) { if (string.IsNullOrWhiteSpace(value)) throw new BadHttpRequestException($"'{name}': The {name} field is required."); } } + + private class RequestFormParams + { + public required IFormFile Content { get; set; } + + public required string OwnerSignature { get; set; } + + public required string CipherHash { get; set; } + + public required DateTime ExpiresAt { get; set; } + + public required string EncryptedProperties { get; set; } + } + + private class RequestFormParamsValidator : AbstractValidator + { + private const string MIME_TYPE = "application/octet-stream"; + + public RequestFormParamsValidator() + { + ClassLevelCascadeMode = CascadeMode.Stop; + + RuleFor(f => f.Content).NotNull(); + RuleFor(f => f.Content.Length).InclusiveBetween(1, 10.Mebibytes()).WithName("Content Length"); + } + } } diff --git a/Modules/Files/src/Files.Module/Features/Files/CreateFile/Http/RequestFormParams.cs b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Http/RequestFormParams.cs deleted file mode 100644 index a08e891326..0000000000 --- a/Modules/Files/src/Files.Module/Features/Files/CreateFile/Http/RequestFormParams.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Microsoft.AspNetCore.Http; - -namespace Backbone.Modules.Files.Module.Features.Files.CreateFile.Http; - -public class RequestFormParams -{ - public required IFormFile Content { get; set; } - - public required string OwnerSignature { get; set; } - - public required string CipherHash { get; set; } - - public required DateTime ExpiresAt { get; set; } - - public required string EncryptedProperties { get; set; } -} diff --git a/Modules/Files/src/Files.Module/Features/Files/CreateFile/Http/RequestFormParamsValidator.cs b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Http/RequestFormParamsValidator.cs deleted file mode 100644 index 241535b0c6..0000000000 --- a/Modules/Files/src/Files.Module/Features/Files/CreateFile/Http/RequestFormParamsValidator.cs +++ /dev/null @@ -1,17 +0,0 @@ -using Backbone.Tooling.Extensions; -using FluentValidation; - -namespace Backbone.Modules.Files.Module.Features.Files.CreateFile.Http; - -public class RequestFormParamsValidator : AbstractValidator -{ - private const string MIME_TYPE = "application/octet-stream"; - - public RequestFormParamsValidator() - { - ClassLevelCascadeMode = CascadeMode.Stop; - - RuleFor(f => f.Content).NotNull(); - RuleFor(f => f.Content.Length).InclusiveBetween(1, 10.Mebibytes()).WithName("Content Length"); - } -} diff --git a/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Endpoint.cs b/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Endpoint.cs index 601c22d3e4..4298682a84 100644 --- a/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Endpoint.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Endpoint.cs @@ -5,7 +5,6 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Routing; -using Backbone.Modules.Files.Module.Features.Files.ValidateFileOwnershipToken.Http; namespace Backbone.Modules.Files.Module.Features.Files.ValidateFileOwnershipToken; @@ -21,9 +20,14 @@ public static RouteGroupBuilder MapValidateFileOwnershipTokenEndpoint(this Route return group; } - private static async Task Handle([FromRoute] string fileId, [FromBody] ValidateFileOwnershipTokenRequest request, IMediator mediator, CancellationToken cancellationToken) + private static async Task Handle([FromRoute] string fileId, [FromBody] RequestBody body, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new ValidateFileOwnershipTokenQuery { FileId = fileId, OwnershipToken = request.OwnershipToken }, cancellationToken); + var response = await mediator.Send(new ValidateFileOwnershipTokenQuery { FileId = fileId, OwnershipToken = body.OwnershipToken }, cancellationToken); return EnvelopeHttpResults.Ok(response); } + + private class RequestBody + { + public required string OwnershipToken { get; init; } + } } diff --git a/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Http/RequestBody.cs b/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Http/RequestBody.cs deleted file mode 100644 index c25cdd80c6..0000000000 --- a/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Http/RequestBody.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Backbone.Modules.Files.Module.Features.Files.ValidateFileOwnershipToken.Http; - -public class ValidateFileOwnershipTokenRequest -{ - public required string OwnershipToken { get; init; } -} diff --git a/Modules/Relationships/src/Relationships.Abstractions/IRelationshipTemplatesRepository.cs b/Modules/Relationships/src/Relationships.Abstractions/IRelationshipTemplatesRepository.cs index 8867f20319..8f587011e5 100644 --- a/Modules/Relationships/src/Relationships.Abstractions/IRelationshipTemplatesRepository.cs +++ b/Modules/Relationships/src/Relationships.Abstractions/IRelationshipTemplatesRepository.cs @@ -8,7 +8,7 @@ namespace Backbone.Modules.Relationships.Abstractions; public interface IRelationshipTemplatesRepository { - Task> ListWithContent(IEnumerable queryItems, IdentityAddress activeIdentity, PaginationFilter paginationFilter, + Task> ListWithContent(IEnumerable ids, IdentityAddress activeIdentity, PaginationFilter paginationFilter, CancellationToken cancellationToken, bool track = false); Task> ListWithoutContent(Expression> filter, CancellationToken cancellationToken); diff --git a/Modules/Relationships/src/Relationships.Abstractions/ListRelationshipTemplatesQueryItem.cs b/Modules/Relationships/src/Relationships.Abstractions/ListRelationshipTemplatesQueryItem.cs deleted file mode 100644 index b844a22850..0000000000 --- a/Modules/Relationships/src/Relationships.Abstractions/ListRelationshipTemplatesQueryItem.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Backbone.Modules.Relationships.Abstractions; - -public class ListRelationshipTemplatesQueryItem -{ - public required string Id { get; set; } - public byte[]? Password { get; set; } -} diff --git a/Modules/Relationships/src/Relationships.Infrastructure/Persistence/Database/Repository/RelationshipTemplatesRepository.cs b/Modules/Relationships/src/Relationships.Infrastructure/Persistence/Database/Repository/RelationshipTemplatesRepository.cs index 0ba376b940..1b54b3f691 100644 --- a/Modules/Relationships/src/Relationships.Infrastructure/Persistence/Database/Repository/RelationshipTemplatesRepository.cs +++ b/Modules/Relationships/src/Relationships.Infrastructure/Persistence/Database/Repository/RelationshipTemplatesRepository.cs @@ -69,26 +69,23 @@ public async Task Delete(RelationshipTemplate template, CancellationToken cancel return template; } - public async Task> ListWithContent(IEnumerable queryItems, IdentityAddress activeIdentity, + public async Task> ListWithContent(IEnumerable ids, IdentityAddress activeIdentity, PaginationFilter paginationFilter, CancellationToken cancellationToken, bool track = false) { - var queryItemsList = queryItems.ToList(); + Expression> idFilter = template => false; - Expression> idAndPasswordFilter = template => false; - - foreach (var inputQuery in queryItemsList) + foreach (var id in ids) { - idAndPasswordFilter = idAndPasswordFilter - .Or(RelationshipTemplate.HasId(RelationshipTemplateId.Parse(inputQuery.Id)) - .And(RelationshipTemplate.CanBeCollectedWithPassword(activeIdentity, inputQuery.Password))); + idFilter = idFilter.Or(RelationshipTemplate.HasId(RelationshipTemplateId.Parse(id))); } var query = (track ? _templates : _readOnlyTemplates) .Include(t => t.Details) .NotExpiredFor(activeIdentity) .Where(RelationshipTemplate.CanBeCollectedBy(activeIdentity)) - .Where(idAndPasswordFilter); + .Where(idFilter) + .Where(RelationshipTemplate.CanBeCollectedWithPassword(activeIdentity, null)); var templates = await query.OrderAndPaginate(d => d.CreatedAt, paginationFilter, cancellationToken); diff --git a/Modules/Relationships/src/Relationships.Module/ApplicationServiceCollectionExtensions.cs b/Modules/Relationships/src/Relationships.Module/ApplicationServiceCollectionExtensions.cs index daaf573734..e41eaaa15c 100644 --- a/Modules/Relationships/src/Relationships.Module/ApplicationServiceCollectionExtensions.cs +++ b/Modules/Relationships/src/Relationships.Module/ApplicationServiceCollectionExtensions.cs @@ -4,7 +4,6 @@ using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.CreateRelationshipTemplate; using FluentValidation; using Microsoft.Extensions.DependencyInjection; -using Swashbuckle.AspNetCore.SwaggerGen; namespace Backbone.Modules.Relationships.Module; @@ -24,7 +23,6 @@ public void AddApplication() services.AddValidatorsFromAssembly(typeof(Validator).Assembly); services.AddEventHandlers(); - services.Configure(options => options.OperationFilter()); } private void AddEventHandlers() diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Endpoint.cs index 4e574bc0fb..bb78ff2c5f 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Endpoint.cs @@ -2,7 +2,6 @@ using Backbone.BuildingBlocks.API; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.Modules.Relationships.Abstractions; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; @@ -24,16 +23,13 @@ public static RouteGroupBuilder MapListRelationshipTemplatesEndpoint(this RouteG } private static async Task Handle([FromQuery(Name = "PageNumber")] int? pageNumber, [FromQuery(Name = "PageSize")] int? pageSize, - [FromQuery] string[]? ids, HttpRequest request, IMediator mediator, IOptions options, CancellationToken cancellationToken) + [FromQuery] string[]? ids, IMediator mediator, IOptions options, CancellationToken cancellationToken) { - var queryItems = TemplateQueryItems.Read(request.Query); - if (queryItems.Count == 0) - queryItems = (ids ?? []).Select(id => new ListRelationshipTemplatesQueryItem { Id = id }).ToList(); var paginationFilter = new PaginationFilter { PageNumber = pageNumber ?? 1, PageSize = pageSize ?? options.Value.Pagination.DefaultPageSize }; if (paginationFilter.PageSize > options.Value.Pagination.MaxPageSize) throw new ApplicationException(GenericApplicationErrors.Validation.InvalidPageSize(options.Value.Pagination.MaxPageSize)); - var response = await mediator.Send(new ListRelationshipTemplatesQuery { PaginationFilter = paginationFilter, QueryItems = queryItems }, cancellationToken); + var response = await mediator.Send(new ListRelationshipTemplatesQuery { PaginationFilter = paginationFilter, Ids = ids?.ToList() ?? [] }, cancellationToken); return EnvelopeHttpResults.Paged(response); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Handler.cs index f8d855fb81..0f3d862886 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Handler.cs @@ -17,7 +17,7 @@ public Handler(IUserContext userContext, IRelationshipTemplatesRepository relati public async Task Handle(ListRelationshipTemplatesQuery request, CancellationToken cancellationToken) { - var dbPaginationResult = await _relationshipTemplatesRepository.ListWithContent(request.QueryItems, _userContext.GetAddress(), request.PaginationFilter, + var dbPaginationResult = await _relationshipTemplatesRepository.ListWithContent(request.Ids, _userContext.GetAddress(), request.PaginationFilter, cancellationToken, track: false); return new ListRelationshipTemplatesResponse(dbPaginationResult, request.PaginationFilter); diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/OpenApiOperationFilter.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/OpenApiOperationFilter.cs deleted file mode 100644 index 443db9589c..0000000000 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/OpenApiOperationFilter.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Backbone.Modules.Relationships.Abstractions; -using Microsoft.OpenApi; -using Swashbuckle.AspNetCore.SwaggerGen; - -namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.ListRelationshipTemplates; - -internal sealed class OpenApiOperationFilter : IOperationFilter -{ - public void Apply(OpenApiOperation operation, OperationFilterContext context) - { - if (context.MethodInfo.DeclaringType != typeof(Endpoint)) - return; - - // The legacy complex array is read from HttpRequest and still belongs in the public API description. - operation.Parameters ??= []; - operation.Parameters.Add(new OpenApiParameter - { - Name = "templates", - In = ParameterLocation.Query, - Schema = context.SchemaGenerator.GenerateSchema(typeof(ListRelationshipTemplatesQueryItem[]), context.SchemaRepository) - }); - } -} diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Query.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Query.cs index 4f2e7a4f90..dceb73f8e3 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Query.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Query.cs @@ -1,5 +1,4 @@ using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.Modules.Relationships.Abstractions; using MediatR; namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.ListRelationshipTemplates; @@ -7,6 +6,5 @@ namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.L public class ListRelationshipTemplatesQuery : IRequest { public required PaginationFilter PaginationFilter { get; init; } - public required List QueryItems { get; init; } + public required List Ids { get; init; } } - diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/TemplateQueryItems.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/TemplateQueryItems.cs deleted file mode 100644 index e49e06efbd..0000000000 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/TemplateQueryItems.cs +++ /dev/null @@ -1,33 +0,0 @@ -using Backbone.BuildingBlocks.API.MinimalApi; -using Backbone.Modules.Relationships.Abstractions; -using Microsoft.AspNetCore.Http; - -namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.ListRelationshipTemplates; - -internal static class TemplateQueryItems -{ - public static List Read(IQueryCollection query) - { - var items = new List(); - // Preserve the GenericArrayModelBinder's dotted keys and contiguous indices. - for (var i = 0; ; i++) - { - var hasId = query.TryGetValue($"templates.{i}.id", out var id); - var hasPassword = query.TryGetValue($"templates.{i}.password", out var password); - if (!hasId && !hasPassword) - break; - if (!hasId) - throw new BadHttpRequestException("A template id is required."); - - byte[]? decodedPassword = null; - if (hasPassword) - { - if (!Base64QueryValue.TryParse(password.ToString(), out var value)) - throw new BadHttpRequestException("The template password is not valid Base64."); - decodedPassword = password.ToString().Length == 0 ? [] : value.Value; - } - items.Add(new ListRelationshipTemplatesQueryItem { Id = id.ToString(), Password = decodedPassword }); - } - return items; - } -} diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Validator.cs index b34baf42d4..40ea51f111 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Validator.cs @@ -1,6 +1,5 @@ using Backbone.BuildingBlocks.Application.Extensions; using Backbone.BuildingBlocks.Application.FluentValidation; -using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; using FluentValidation; @@ -11,22 +10,12 @@ public class Validator : AbstractValidator { public Validator() { - RuleFor(q => q.QueryItems) + RuleFor(q => q.Ids) .Cascade(CascadeMode.Stop) .DetailedNotEmpty(); - RuleForEach(x => x.QueryItems) + RuleForEach(x => x.Ids) .Cascade(CascadeMode.Stop) - .ChildRules(queryItems => - { - queryItems - .RuleFor(query => query.Id) - .ValidId(); - - queryItems - .RuleFor(query => query.Password) - .NumberOfBytes(1, RelationshipTemplate.MAX_PASSWORD_LENGTH) - .When(query => query.Password != null); - }); + .ValidId(); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Endpoint.cs index 58bdd6a3d2..bcb66f6329 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Endpoint.cs @@ -19,9 +19,14 @@ public static RouteGroupBuilder MapAcceptRelationshipEndpoint(this RouteGroupBui return group; } - private static async Task Handle([FromRoute] string id, [FromBody] AcceptRelationshipRequest request, IMediator mediator, CancellationToken cancellationToken) + private static async Task Handle([FromRoute] string id, [FromBody] RequestBody body, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new AcceptRelationshipCommand { RelationshipId = id, CreationResponseContent = request.CreationResponseContent }, cancellationToken); + var response = await mediator.Send(new AcceptRelationshipCommand { RelationshipId = id, CreationResponseContent = body.CreationResponseContent }, cancellationToken); return EnvelopeHttpResults.Ok(response); } } + +public class RequestBody +{ + public byte[]? CreationResponseContent { get; set; } = []; +} diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Request.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Request.cs deleted file mode 100644 index 4087a08dc0..0000000000 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Request.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Backbone.Modules.Relationships.Module.Features.Relationships.AcceptRelationship; - -public class AcceptRelationshipRequest -{ - public byte[]? CreationResponseContent { get; set; } = []; -} diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Endpoint.cs index cc3cb8dae8..d27fa8bda6 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Endpoint.cs @@ -19,9 +19,14 @@ public static RouteGroupBuilder MapRejectRelationshipEndpoint(this RouteGroupBui return group; } - private static async Task Handle([FromRoute] string id, [FromBody] RejectRelationshipRequest request, IMediator mediator, CancellationToken cancellationToken) + private static async Task Handle([FromRoute] string id, [FromBody] RequestBody body, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new RejectRelationshipCommand { RelationshipId = id, CreationResponseContent = request.CreationResponseContent }, cancellationToken); + var response = await mediator.Send(new RejectRelationshipCommand { RelationshipId = id, CreationResponseContent = body.CreationResponseContent }, cancellationToken); return EnvelopeHttpResults.Ok(response); } } + +public class RequestBody +{ + public byte[]? CreationResponseContent { get; set; } = []; +} diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Request.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Request.cs deleted file mode 100644 index ccba53c306..0000000000 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Request.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Backbone.Modules.Relationships.Module.Features.Relationships.RejectRelationship; - -public class RejectRelationshipRequest -{ - public byte[]? CreationResponseContent { get; set; } = []; -} diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Endpoint.cs index dc7b27a397..9d8601a757 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Endpoint.cs @@ -19,9 +19,14 @@ public static RouteGroupBuilder MapRevokeRelationshipEndpoint(this RouteGroupBui return group; } - private static async Task Handle([FromRoute] string id, [FromBody] RevokeRelationshipRequest request, IMediator mediator, CancellationToken cancellationToken) + private static async Task Handle([FromRoute] string id, [FromBody] RequestBody body, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new RevokeRelationshipCommand { RelationshipId = id, CreationResponseContent = request.CreationResponseContent }, cancellationToken); + var response = await mediator.Send(new RevokeRelationshipCommand { RelationshipId = id, CreationResponseContent = body.CreationResponseContent }, cancellationToken); return EnvelopeHttpResults.Ok(response); } } + +public class RequestBody +{ + public byte[]? CreationResponseContent { get; set; } = []; +} diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Request.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Request.cs deleted file mode 100644 index 083580428a..0000000000 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Request.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Backbone.Modules.Relationships.Module.Features.Relationships.RevokeRelationship; - -public class RevokeRelationshipRequest -{ - public byte[]? CreationResponseContent { get; set; } = []; -} diff --git a/Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Queries/ListRelationshipTemplates/Validator.Tests.cs b/Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Queries/ListRelationshipTemplates/Validator.Tests.cs index d0be687cca..972bb66f25 100644 --- a/Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Queries/ListRelationshipTemplates/Validator.Tests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Queries/ListRelationshipTemplates/Validator.Tests.cs @@ -1,4 +1,3 @@ -using Backbone.Modules.Relationships.Abstractions; using Backbone.BuildingBlocks.Application.Pagination; using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.ListRelationshipTemplates; using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; @@ -10,24 +9,7 @@ namespace Backbone.Modules.Relationships.Module.Tests.RelationshipTemplates.Quer public class ValidatorTests : AbstractTestsBase { [Fact] - public void Happy_path_with_password() - { - // Arrange - var validator = new Validator(); - - // Act - var validationResult = validator.TestValidate(new ListRelationshipTemplatesQuery - { - PaginationFilter = new PaginationFilter(), - QueryItems = [new ListRelationshipTemplatesQueryItem { Id = RelationshipTemplateId.New(), Password = [1, 2, 3] }] - }); - - // Assert - validationResult.ShouldNotHaveAnyValidationErrors(); - } - - [Fact] - public void Happy_path_without_password() + public void Happy_path() { // Arrange var validator = new Validator(); @@ -36,7 +18,7 @@ public void Happy_path_without_password() var command = new ListRelationshipTemplatesQuery { PaginationFilter = new PaginationFilter(), - QueryItems = [new ListRelationshipTemplatesQueryItem { Id = RelationshipTemplateId.New() }] + Ids = [RelationshipTemplateId.New()] }; var validationResult = validator.TestValidate(command); @@ -46,18 +28,18 @@ public void Happy_path_without_password() } [Fact] - public void Fails_when_Queries_is_empty() + public void Fails_when_Ids_is_empty() { // Arrange var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new ListRelationshipTemplatesQuery { PaginationFilter = new PaginationFilter(), QueryItems = [] }); + var validationResult = validator.TestValidate(new ListRelationshipTemplatesQuery { PaginationFilter = new PaginationFilter(), Ids = [] }); // Assert validationResult.ShouldHaveValidationErrorForItem( - propertyName: nameof(ListRelationshipTemplatesQuery.QueryItems), + propertyName: nameof(ListRelationshipTemplatesQuery.Ids), expectedErrorCode: "error.platform.validation.invalidPropertyValue", - expectedErrorMessage: "'Query Items' must not be empty."); + expectedErrorMessage: "'Ids' must not be empty."); } } diff --git a/Modules/Tokens/src/Tokens.Module/ApplicationServiceCollectionExtensions.cs b/Modules/Tokens/src/Tokens.Module/ApplicationServiceCollectionExtensions.cs index 8f38ac9f4e..bbd30d923b 100644 --- a/Modules/Tokens/src/Tokens.Module/ApplicationServiceCollectionExtensions.cs +++ b/Modules/Tokens/src/Tokens.Module/ApplicationServiceCollectionExtensions.cs @@ -2,7 +2,6 @@ using Backbone.Modules.Tokens.Module.Features.Tokens.CreateToken; using FluentValidation; using Microsoft.Extensions.DependencyInjection; -using Swashbuckle.AspNetCore.SwaggerGen; namespace Backbone.Modules.Tokens.Module; @@ -18,6 +17,5 @@ public static void AddApplication(this IServiceCollection services) .AddOpenBehavior(typeof(DbConcurrencyBehavior<,>)) ); services.AddValidatorsFromAssembly(typeof(Validator).Assembly); - services.Configure(options => options.OperationFilter()); } } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Endpoint.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Endpoint.cs index a544412d28..f5118dbeda 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Endpoint.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Endpoint.cs @@ -24,14 +24,13 @@ public static RouteGroupBuilder MapListTokensEndpoint(this RouteGroupBuilder gro } private static async Task Handle([FromQuery(Name = "PageNumber")] int? pageNumber, [FromQuery(Name = "PageSize")] int? pageSize, - [FromQuery] string[]? ids, HttpRequest request, IMediator mediator, IOptions options, CancellationToken cancellationToken) + [FromQuery] string[]? ids, IMediator mediator, IOptions options, CancellationToken cancellationToken) { - var tokenIds = ids is { Length: > 0 } ? ids.ToList() : ListTokensQueryItem.ReadIds(request.Query); var paginationFilter = new PaginationFilter { PageNumber = pageNumber ?? 1, PageSize = pageSize ?? options.Value.Pagination.DefaultPageSize }; if (paginationFilter.PageSize > options.Value.Pagination.MaxPageSize) throw new ApplicationException(GenericApplicationErrors.Validation.InvalidPageSize(options.Value.Pagination.MaxPageSize)); - var response = await mediator.Send(new ListTokensQuery { PaginationFilter = paginationFilter, Ids = tokenIds }, cancellationToken); + var response = await mediator.Send(new ListTokensQuery { PaginationFilter = paginationFilter, Ids = ids?.ToList() ?? [] }, cancellationToken); return EnvelopeHttpResults.Paged(response); } } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/ListTokensQueryItem.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/ListTokensQueryItem.cs deleted file mode 100644 index 7d7c0bd1fb..0000000000 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/ListTokensQueryItem.cs +++ /dev/null @@ -1,17 +0,0 @@ -using Microsoft.AspNetCore.Http; - -namespace Backbone.Modules.Tokens.Module.Features.Tokens.ListTokens; - -public class ListTokensQueryItem -{ - public required string Id { get; set; } - - internal static List ReadIds(IQueryCollection query) - { - // Preserve the legacy MVC complex-array syntax and its contiguous indexing. - var ids = new List(); - for (var i = 0; query.TryGetValue($"tokens.{i}.id", out var id); i++) - ids.Add(id.ToString()); - return ids; - } -} diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/OpenApiOperationFilter.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/OpenApiOperationFilter.cs deleted file mode 100644 index 09ebcb45e5..0000000000 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/OpenApiOperationFilter.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Microsoft.OpenApi; -using Swashbuckle.AspNetCore.SwaggerGen; - -namespace Backbone.Modules.Tokens.Module.Features.Tokens.ListTokens; - -internal sealed class OpenApiOperationFilter : IOperationFilter -{ - public void Apply(OpenApiOperation operation, OperationFilterContext context) - { - if (context.MethodInfo.DeclaringType != typeof(Endpoint)) - return; - - // The legacy complex array is read from HttpRequest and still belongs in the public API description. - operation.Parameters ??= []; - operation.Parameters.Add(new OpenApiParameter - { - Name = "tokens", - In = ParameterLocation.Query, - Schema = context.SchemaGenerator.GenerateSchema(typeof(ListTokensQueryItem[]), context.SchemaRepository) - }); - } -} diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Endpoint.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Endpoint.cs index 1fb838d971..7e54b7f484 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Endpoint.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Endpoint.cs @@ -19,9 +19,15 @@ public static RouteGroupBuilder MapUpdateTokenContentEndpoint(this RouteGroupBui return group; } - private static async Task Handle([FromRoute] string id, [FromBody] UpdateTokenContentRequest request, IMediator mediator, CancellationToken cancellationToken) + private static async Task Handle([FromRoute] string id, [FromBody] RequestBody body, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new UpdateTokenContentCommand { TokenId = id, NewContent = request.NewContent, Password = request.Password }, cancellationToken); + var response = await mediator.Send(new UpdateTokenContentCommand { TokenId = id, NewContent = body.NewContent, Password = body.Password }, cancellationToken); return EnvelopeHttpResults.Ok(response); } } + +public class RequestBody +{ + public required byte[] NewContent { get; init; } + public byte[]? Password { get; init; } +} diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Request.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Request.cs deleted file mode 100644 index faae64d57d..0000000000 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Request.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Backbone.Modules.Tokens.Module.Features.Tokens.UpdateTokenContent; - -public class UpdateTokenContentRequest -{ - public required byte[] NewContent { get; init; } - public byte[]? Password { get; init; } -} diff --git a/Sdks/ConsumerApi.Sdk/src/Endpoints/RelationshipTemplates/RelationshipTemplatesEndpoint.cs b/Sdks/ConsumerApi.Sdk/src/Endpoints/RelationshipTemplates/RelationshipTemplatesEndpoint.cs index 9bec7a8eca..492dd7af2a 100644 --- a/Sdks/ConsumerApi.Sdk/src/Endpoints/RelationshipTemplates/RelationshipTemplatesEndpoint.cs +++ b/Sdks/ConsumerApi.Sdk/src/Endpoints/RelationshipTemplates/RelationshipTemplatesEndpoint.cs @@ -8,23 +8,13 @@ namespace Backbone.ConsumerApi.Sdk.Endpoints.RelationshipTemplates; public class RelationshipTemplatesEndpoint(EndpointClient client) : ConsumerApiEndpoint(client) { - public async Task> ListTemplates(IEnumerable queryItems, PaginationFilter? pagination = null) + public async Task> ListTemplates(IEnumerable ids, PaginationFilter? pagination = null) { var request = _client .Request(HttpMethod.Get, $"api/{API_VERSION}/RelationshipTemplates") .Authenticate() - .WithPagination(pagination); - - var i = 0; - foreach (var queryItem in queryItems) - { - request.AddQueryParameter($"templates.{i}.id", queryItem.Id); - - if (queryItem.Password != null) - request.AddQueryParameter($"templates.{i}.password", queryItem.Password); - - i++; - } + .WithPagination(pagination) + .AddQueryParameter("ids", ids); return await request.Execute(); } diff --git a/Sdks/ConsumerApi.Sdk/src/Endpoints/RelationshipTemplates/Types/Requests/ListRelationshipTemplatesQueryItem.cs b/Sdks/ConsumerApi.Sdk/src/Endpoints/RelationshipTemplates/Types/Requests/ListRelationshipTemplatesQueryItem.cs deleted file mode 100644 index caf23774fa..0000000000 --- a/Sdks/ConsumerApi.Sdk/src/Endpoints/RelationshipTemplates/Types/Requests/ListRelationshipTemplatesQueryItem.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Backbone.ConsumerApi.Sdk.Endpoints.RelationshipTemplates.Types.Requests; - -public class ListRelationshipTemplatesQueryItem -{ - public required string Id { get; set; } - public byte[]? Password { get; set; } -} From 019d4203a83fb78ccc41d17e65f949fe213ca9a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20H=C3=BCgel?= Date: Fri, 2 Oct 2026 13:16:59 +0200 Subject: [PATCH 18/25] refactor: migrate Synchonization module --- .../Synchronization/DatawalletController.cs | 82 -- .../Synchronization/SyncRunsController.cs | 146 --- Applications/ConsumerApi/src/Program.cs | 3 +- .../ConsumerApi/src/packages.lock.json | 24 +- .../packages.lock.json | 24 +- .../src/DatabaseMigrator/Dockerfile | 2 +- .../src/DatabaseMigrator/packages.lock.json | 23 +- .../DatabaseMigrator.Tests/packages.lock.json | 23 +- .../src/EventHandlerService/Dockerfile | 2 +- .../src/EventHandlerService/Program.cs | 2 +- .../EventHandlerService/packages.lock.json | 24 +- .../packages.lock.json | 24 +- .../Housekeeper/src/Housekeeper/Dockerfile | 2 +- .../Housekeeper/src/Housekeeper/Executor.cs | 2 +- .../Housekeeper/src/Housekeeper/Program.cs | 2 +- .../src/Housekeeper/packages.lock.json | 24 +- .../src/Job.IdentityDeletion/Dockerfile | 2 +- .../Job.IdentityDeletion.csproj | 1 - .../src/Job.IdentityDeletion/Program.cs | 2 +- .../ServicesExtensions.cs | 2 +- .../Job.IdentityDeletion/packages.lock.json | 24 +- .../packages.lock.json | 25 +- .../packages.lock.json | 25 +- .../Backbone.Tests.ArchUnit.csproj | 2 +- Backbone.Tests.ArchUnit/CleanArchitecture.cs | 41 - .../VerticalSliceArchitecture.cs | 7 +- Backbone.Tests.ArchUnit/packages.lock.json | 49 +- Backbone.slnx | 4 +- .../IRelationshipsRepository.cs | 2 +- .../ISynchronizationDbContext.cs | 2 +- .../Synchronization.Abstractions.csproj | 7 + .../packages.lock.json | 52 +- .../GetDatawallet/GetDatawalletQuery.cs | 6 - .../ExecuteHousekeepingCommand.cs | 5 - .../Commands/FinalizeSyncRun/Handler.cs | 148 --- .../RefreshExpirationTimeOfSyncRunResponse.cs | 6 - .../GetSyncRunById/GetSyncRunByIdQuery.cs | 9 - .../Synchronization.Application.csproj | 22 - .../Synchronization.Domain/AssemblyInfo.cs | 2 +- .../packages.lock.json | 53 +- .../packages.lock.json | 53 +- .../Persistence/Database}/DbErrorCodes.cs | 2 +- .../DatawalletQueryableExtensions.cs | 2 +- .../ExternalEventsQueryableExtensions.cs | 2 +- .../Extensions/SyncRunsQueryableExtensions.cs | 2 +- .../Database/IServiceCollectionExtensions.cs | 2 +- .../Database/SynchronizationDbContext.cs | 4 +- .../IServiceCollectionExtensions.cs | 2 +- .../Repository/RelationshipsRepository.cs | 2 +- .../Synchronization.Infrastructure.csproj | 2 +- .../packages.lock.json | 51 +- .../ApplicationConfiguration.cs | 2 +- .../ApplicationErrors.cs | 2 +- ...ApplicationServiceCollectionExtensions.cs} | 36 +- .../AssemblyInfo.cs | 2 +- .../EventBusExtensions.cs} | 30 +- .../DeleteDatawalletsOfIdentityCommand.cs | 4 +- .../DeleteDatawalletsOfIdentity/Handler.cs | 4 +- .../DeleteDatawalletsOfIdentity/Validator.cs | 4 +- .../Datawallets/GetDatawallet/Endpoint.cs | 28 + .../GetDatawallet/GetDatawalletQuery.cs | 6 + .../Datawallets}/GetDatawallet/Handler.cs | 6 +- .../Datawallets/ListModifications/Endpoint.cs | 40 + .../Datawallets}/ListModifications/Handler.cs | 6 +- .../ListModificationsQuery.cs | 2 +- .../ListModificationsResponse.cs | 4 +- .../PushDatawalletModifications/Endpoint.cs | 42 + .../PushDatawalletModifications/Handler.cs | 6 +- .../PushDatawalletModificationsCommand.cs | 4 +- .../PushDatawalletModificationsResponse.cs | 2 +- .../PushDatawalletModifications/Validator.cs | 4 +- .../CreatedDatawalletModificationDTO.cs | 2 +- .../Datawallets/Shared}/DatawalletDTO.cs | 2 +- .../Shared}/DatawalletModificationDTO.cs | 2 +- .../Shared}/PushDatawalletModificationItem.cs | 2 +- .../FileOwnershipClaimedDomainEventHandler.cs | 6 +- .../FileOwnershipLockedDomainEventHandler.cs | 4 +- ...eletionProcessStartedDomainEventHandler.cs | 4 +- ...nProcessStatusChangedDomainEventHandler.cs | 6 +- .../MessageCreatedDomainEventHandler.cs | 4 +- .../PeerDeletedDomainEventHandler.cs | 6 +- ...PeerDeletionCancelledDomainEventHandler.cs | 6 +- ...erFeatureFlagsChangedDomainEventHandler.cs | 4 +- .../PeerToBeDeletedDomainEventHandler.cs | 6 +- ...ReactivationCompletedDomainEventHandler.cs | 6 +- ...ReactivationRequestedDomainEventHandler.cs | 6 +- ...tionshipStatusChangedDomainEventHandler.cs | 6 +- ...eAllocationsExhaustedDomainEventHandler.cs | 6 +- .../TokenLockedDomainEventHandler.cs | 6 +- .../DeleteIdentity}/IdentityDeleter.cs | 10 +- .../DeleteExternalEventsOfIdentityCommand.cs} | 4 +- .../DeleteExternalEventsOfIdentity/Handler.cs | 4 +- .../Validator.cs | 4 +- .../DeleteSyncRunsOfIdentityCommand.cs | 4 +- .../DeleteSyncRunsOfIdentity/Handler.cs | 4 +- .../DeleteSyncRunsOfIdentity/Validator.cs | 4 +- .../ExecuteHousekeepingCommand.cs | 5 + .../SyncRuns}/ExecuteHousekeeping/Handler.cs | 6 +- .../Endpoint.cs | 42 + ...eDatawalletVersionUpgradeSyncRunCommand.cs | 4 +- ...etVersionUpgradeSyncRunCommandValidator.cs | 4 +- ...DatawalletVersionUpgradeSyncRunResponse.cs | 4 +- .../Handler.cs | 54 + .../FinalizeExternalEventSync/Endpoint.cs | 43 + ...FinalizeExternalEventSyncSyncRunCommand.cs | 4 +- ...xternalEventSyncSyncRunCommandValidator.cs | 4 +- ...inalizeExternalEventSyncSyncRunResponse.cs | 4 +- .../FinalizeExternalEventSync/Handler.cs | 54 + .../SyncRuns/GetSyncRunById/Endpoint.cs | 28 + .../GetSyncRunById/GetSyncRunByIdQuery.cs | 9 + .../SyncRuns}/GetSyncRunById/Handler.cs | 6 +- .../SyncRuns}/GetSyncRunById/Validator.cs | 4 +- .../ListExternalEventsOfSyncRun/Endpoint.cs | 36 + .../ListExternalEventsOfSyncRun/Handler.cs | 6 +- .../ListExternalEventsOfSyncRunQuery.cs | 2 +- .../ListExternalEventsOfSyncRunResponse.cs | 4 +- .../ListExternalEventsOfSyncRun/Validator.cs | 4 +- .../Endpoint.cs | 27 + .../RefreshExpirationTimeOfSyncRun/Handler.cs | 4 +- .../RefreshExpirationTimeOfSyncRunCommand.cs | 2 +- .../RefreshExpirationTimeOfSyncRunResponse.cs | 6 + .../Validator.cs | 4 +- .../SyncRuns/Shared}/ExternalEventDTO.cs | 2 +- .../Features/SyncRuns/Shared}/SyncRunDTO.cs | 2 +- .../SyncRuns/Shared/SyncRunFinalization.cs | 73 ++ .../SyncRuns/StartSyncRun/Endpoint.cs | 50 + .../SyncRuns}/StartSyncRun/Handler.cs | 6 +- .../StartSyncRun/StartSyncRunCommand.cs | 4 +- .../StartSyncRun/StartSyncRunResponse.cs | 4 +- .../SyncRuns}/StartSyncRun/Validator.cs | 2 +- .../Synchronization.Module.csproj | 14 +- .../SynchronizationEndpointExtensions.cs | 35 + .../SynchronizationModule.cs | 2 - .../Synchronization.Module/packages.lock.json | 45 +- .../ApplicationDbContextExtensions.cs | 2 +- .../ApplicationDbContextWithDelayedSave.cs | 2 +- .../DatawalletExtensions.cs | 2 +- .../ExternalEventBuilder.cs | 2 +- .../GlobalUsings.cs | 0 .../SyncRunBuilder.cs | 2 +- .../Synchronization.Module.Tests.csproj} | 2 +- .../HandlerTests.cs | 6 +- ...alletModificationsCommandValidatorTests.cs | 6 +- ...atawalletModificationItemValidatorTests.cs | 4 +- .../HandlerTests.cs | 4 +- ...onProcessStartedDomainEventHandlerTests.cs | 6 +- ...essStatusChangedDomainEventHandlerTests.cs | 6 +- .../MessageCreatedDomainEventHandlerTests.cs | 6 +- .../PeerDeletedDomainEventHandlerTests.cs | 6 +- ...eletionCancelledDomainEventHandlerTests.cs | 6 +- .../PeerToBeDeletedDomainEventHandlerTests.cs | 6 +- ...ivationCompletedDomainEventHandlerTests.cs | 6 +- ...hipStatusChangedDomainEventHandlerTests.cs | 6 +- .../TokenLockedDomainEventHandlerTests.cs | 6 +- .../Tests/Identities/IdentityDeleterTests.cs | 10 +- .../Commands/FinalizeSyncRun/HandlerTests.cs | 6 +- .../HandlerTests.cs | 4 +- .../Commands/StartSyncRun/HandlerTests.cs | 6 +- .../StartSyncRunCommandValidatorTests.cs | 6 +- .../packages.lock.json | 1091 +++++++++++++++-- 160 files changed, 1971 insertions(+), 1230 deletions(-) delete mode 100644 Applications/ConsumerApi/src/Controllers/Synchronization/DatawalletController.cs delete mode 100644 Applications/ConsumerApi/src/Controllers/Synchronization/SyncRunsController.cs rename Modules/Synchronization/src/{Synchronization.Application/Infrastructure => Synchronization.Abstractions}/IRelationshipsRepository.cs (76%) rename Modules/Synchronization/src/{Synchronization.Application/Infrastructure => Synchronization.Abstractions}/ISynchronizationDbContext.cs (97%) create mode 100644 Modules/Synchronization/src/Synchronization.Abstractions/Synchronization.Abstractions.csproj rename Modules/Synchronization/src/{Synchronization.Application => Synchronization.Abstractions}/packages.lock.json (97%) delete mode 100644 Modules/Synchronization/src/Synchronization.Application/Datawallets/Queries/GetDatawallet/GetDatawalletQuery.cs delete mode 100644 Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs delete mode 100644 Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/FinalizeSyncRun/Handler.cs delete mode 100644 Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/RefreshExpirationTimeOfSyncRun/RefreshExpirationTimeOfSyncRunResponse.cs delete mode 100644 Modules/Synchronization/src/Synchronization.Application/SyncRuns/Queries/GetSyncRunById/GetSyncRunByIdQuery.cs delete mode 100644 Modules/Synchronization/src/Synchronization.Application/Synchronization.Application.csproj rename Modules/Synchronization/src/{Synchronization.Application/Infrastructure => Synchronization.Infrastructure/Persistence/Database}/DbErrorCodes.cs (66%) rename Modules/Synchronization/src/{Synchronization.Application => Synchronization.Infrastructure/Persistence/Database}/Extensions/DatawalletQueryableExtensions.cs (88%) rename Modules/Synchronization/src/{Synchronization.Application => Synchronization.Infrastructure/Persistence/Database}/Extensions/ExternalEventsQueryableExtensions.cs (93%) rename Modules/Synchronization/src/{Synchronization.Application => Synchronization.Infrastructure/Persistence/Database}/Extensions/SyncRunsQueryableExtensions.cs (90%) rename Modules/Synchronization/src/{Synchronization.Application => Synchronization.Module}/ApplicationConfiguration.cs (79%) rename Modules/Synchronization/src/{Synchronization.Application => Synchronization.Module}/ApplicationErrors.cs (98%) rename Modules/Synchronization/src/{Synchronization.Application/Extensions/IServiceCollectionExtensions.cs => Synchronization.Module/ApplicationServiceCollectionExtensions.cs} (52%) rename Modules/Synchronization/src/{Synchronization.Application => Synchronization.Module}/AssemblyInfo.cs (83%) rename Modules/Synchronization/src/{Synchronization.Application/Extensions/IEventBusExtensions.cs => Synchronization.Module/EventBusExtensions.cs} (65%) rename Modules/Synchronization/src/{Synchronization.Application/Datawallets/Commands => Synchronization.Module/Features/Datawallets}/DeleteDatawalletsOfIdentity/DeleteDatawalletsOfIdentityCommand.cs (50%) rename Modules/Synchronization/src/{Synchronization.Application/Datawallets/Commands => Synchronization.Module/Features/Datawallets}/DeleteDatawalletsOfIdentity/Handler.cs (77%) rename Modules/Synchronization/src/{Synchronization.Application/Datawallets/Commands => Synchronization.Module/Features/Datawallets}/DeleteDatawalletsOfIdentity/Validator.cs (65%) create mode 100644 Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/Endpoint.cs create mode 100644 Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/GetDatawalletQuery.cs rename Modules/Synchronization/src/{Synchronization.Application/Datawallets/Queries => Synchronization.Module/Features/Datawallets}/GetDatawallet/Handler.cs (80%) create mode 100644 Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Endpoint.cs rename Modules/Synchronization/src/{Synchronization.Application/Datawallets/Queries => Synchronization.Module/Features/Datawallets}/ListModifications/Handler.cs (87%) rename Modules/Synchronization/src/{Synchronization.Application/Datawallets/Queries => Synchronization.Module/Features/Datawallets}/ListModifications/ListModificationsQuery.cs (78%) rename Modules/Synchronization/src/{Synchronization.Application/Datawallets/Queries => Synchronization.Module/Features/Datawallets}/ListModifications/ListModificationsResponse.cs (68%) create mode 100644 Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Endpoint.cs rename Modules/Synchronization/src/{Synchronization.Application/Datawallets/Commands => Synchronization.Module/Features/Datawallets}/PushDatawalletModifications/Handler.cs (95%) rename Modules/Synchronization/src/{Synchronization.Application/Datawallets/Commands => Synchronization.Module/Features/Datawallets}/PushDatawalletModifications/PushDatawalletModificationsCommand.cs (63%) rename Modules/Synchronization/src/{Synchronization.Application/Datawallets/Commands => Synchronization.Module/Features/Datawallets}/PushDatawalletModifications/PushDatawalletModificationsResponse.cs (86%) rename Modules/Synchronization/src/{Synchronization.Application/Datawallets/Commands => Synchronization.Module/Features/Datawallets}/PushDatawalletModifications/Validator.cs (79%) rename Modules/Synchronization/src/{Synchronization.Application/Datawallets/DTOs => Synchronization.Module/Features/Datawallets/Shared}/CreatedDatawalletModificationDTO.cs (85%) rename Modules/Synchronization/src/{Synchronization.Application/Datawallets/DTOs => Synchronization.Module/Features/Datawallets/Shared}/DatawalletDTO.cs (74%) rename Modules/Synchronization/src/{Synchronization.Application/Datawallets/DTOs => Synchronization.Module/Features/Datawallets/Shared}/DatawalletModificationDTO.cs (96%) rename Modules/Synchronization/src/{Synchronization.Application/Datawallets/DTOs => Synchronization.Module/Features/Datawallets/Shared}/PushDatawalletModificationItem.cs (92%) rename Modules/Synchronization/src/{Synchronization.Application/DomainEvents/Incoming => Synchronization.Module/Features/ExternalEvents}/FileOwnershipClaimed/FileOwnershipClaimedDomainEventHandler.cs (83%) rename Modules/Synchronization/src/{Synchronization.Application/DomainEvents/Incoming => Synchronization.Module/Features/ExternalEvents}/FileOwnershipLocked/FileOwnershipLockedDomainEventHandler.cs (88%) rename Modules/Synchronization/src/{Synchronization.Application/DomainEvents/Incoming => Synchronization.Module/Features/ExternalEvents}/IdentityDeletionProcessStarted/IdentityDeletionProcessStartedDomainEventHandler.cs (91%) rename Modules/Synchronization/src/{Synchronization.Application/DomainEvents/Incoming => Synchronization.Module/Features/ExternalEvents}/IdentityDeletionProcessStatusChanged/IdentityDeletionProcessStatusChangedDomainEventHandler.cs (87%) rename Modules/Synchronization/src/{Synchronization.Application/DomainEvents/Incoming => Synchronization.Module/Features/ExternalEvents}/MessageCreated/MessageCreatedDomainEventHandler.cs (94%) rename Modules/Synchronization/src/{Synchronization.Application/DomainEvents/Incoming => Synchronization.Module/Features/ExternalEvents}/PeerDeleted/PeerDeletedDomainEventHandler.cs (85%) rename Modules/Synchronization/src/{Synchronization.Application/DomainEvents/Incoming => Synchronization.Module/Features/ExternalEvents}/PeerDeletionCancelled/PeerDeletionCancelledDomainEventHandler.cs (85%) rename Modules/Synchronization/src/{Synchronization.Application/DomainEvents/Incoming => Synchronization.Module/Features/ExternalEvents}/PeerFeatureFlagsChanged/PeerFeatureFlagsChangedDomainEventHandler.cs (90%) rename Modules/Synchronization/src/{Synchronization.Application/DomainEvents/Incoming => Synchronization.Module/Features/ExternalEvents}/PeerToBeDeleted/PeerToBeDeletedDomainEventHandler.cs (85%) rename Modules/Synchronization/src/{Synchronization.Application/DomainEvents/Incoming => Synchronization.Module/Features/ExternalEvents}/RelationshipReactivationCompleted/RelationshipReactivationCompletedDomainEventHandler.cs (88%) rename Modules/Synchronization/src/{Synchronization.Application/DomainEvents/Incoming => Synchronization.Module/Features/ExternalEvents}/RelationshipReactivationRequested/RelationshipReactivationRequestedDomainEventHandler.cs (85%) rename Modules/Synchronization/src/{Synchronization.Application/DomainEvents/Incoming => Synchronization.Module/Features/ExternalEvents}/RelationshipStatusChanged/RelationshipStatusChangedDomainEventHandler.cs (92%) rename Modules/Synchronization/src/{Synchronization.Application/DomainEvents/Incoming => Synchronization.Module/Features/ExternalEvents}/RelationshipTemplateAllocationsExhausted/RelationshipTemplateAllocationsExhaustedDomainEventHandler.cs (83%) rename Modules/Synchronization/src/{Synchronization.Application/DomainEvents/Incoming => Synchronization.Module/Features/ExternalEvents}/TokenLocked/TokenLockedDomainEventHandler.cs (76%) rename Modules/Synchronization/src/{Synchronization.Application/Identities => Synchronization.Module/Features/Identities/DeleteIdentity}/IdentityDeleter.cs (71%) rename Modules/Synchronization/src/{Synchronization.Application/SyncRuns/Commands/DeleteExternalEventsOfIdentity/DeleteSyncRunsOfIdentityCommand.cs => Synchronization.Module/Features/SyncRuns/DeleteExternalEventsOfIdentity/DeleteExternalEventsOfIdentityCommand.cs} (50%) rename Modules/Synchronization/src/{Synchronization.Application/SyncRuns/Commands => Synchronization.Module/Features/SyncRuns}/DeleteExternalEventsOfIdentity/Handler.cs (77%) rename Modules/Synchronization/src/{Synchronization.Application/SyncRuns/Commands => Synchronization.Module/Features/SyncRuns}/DeleteExternalEventsOfIdentity/Validator.cs (65%) rename Modules/Synchronization/src/{Synchronization.Application/SyncRuns/Commands => Synchronization.Module/Features/SyncRuns}/DeleteSyncRunsOfIdentity/DeleteSyncRunsOfIdentityCommand.cs (50%) rename Modules/Synchronization/src/{Synchronization.Application/SyncRuns/Commands => Synchronization.Module/Features/SyncRuns}/DeleteSyncRunsOfIdentity/Handler.cs (78%) rename Modules/Synchronization/src/{Synchronization.Application/SyncRuns/Commands => Synchronization.Module/Features/SyncRuns}/DeleteSyncRunsOfIdentity/Validator.cs (65%) create mode 100644 Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs rename Modules/Synchronization/src/{Synchronization.Application/SyncRuns/Commands => Synchronization.Module/Features/SyncRuns}/ExecuteHousekeeping/Handler.cs (84%) create mode 100644 Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Endpoint.cs rename Modules/Synchronization/src/{Synchronization.Application/SyncRuns/Commands/FinalizeSyncRun => Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade}/FinalizeDatawalletVersionUpgradeSyncRunCommand.cs (66%) rename Modules/Synchronization/src/{Synchronization.Application/SyncRuns/Commands/FinalizeSyncRun => Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade}/FinalizeDatawalletVersionUpgradeSyncRunCommandValidator.cs (80%) rename Modules/Synchronization/src/{Synchronization.Application/SyncRuns/Commands/FinalizeSyncRun => Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade}/FinalizeDatawalletVersionUpgradeSyncRunResponse.cs (56%) create mode 100644 Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Handler.cs create mode 100644 Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Endpoint.cs rename Modules/Synchronization/src/{Synchronization.Application/SyncRuns/Commands/FinalizeSyncRun => Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync}/FinalizeExternalEventSyncSyncRunCommand.cs (81%) rename Modules/Synchronization/src/{Synchronization.Application/SyncRuns/Commands/FinalizeSyncRun => Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync}/FinalizeExternalEventSyncSyncRunCommandValidator.cs (86%) rename Modules/Synchronization/src/{Synchronization.Application/SyncRuns/Commands/FinalizeSyncRun => Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync}/FinalizeExternalEventSyncSyncRunResponse.cs (62%) create mode 100644 Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Handler.cs create mode 100644 Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Endpoint.cs create mode 100644 Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/GetSyncRunByIdQuery.cs rename Modules/Synchronization/src/{Synchronization.Application/SyncRuns/Queries => Synchronization.Module/Features/SyncRuns}/GetSyncRunById/Handler.cs (80%) rename Modules/Synchronization/src/{Synchronization.Application/SyncRuns/Queries => Synchronization.Module/Features/SyncRuns}/GetSyncRunById/Validator.cs (64%) create mode 100644 Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Endpoint.cs rename Modules/Synchronization/src/{Synchronization.Application/SyncRuns/Queries => Synchronization.Module/Features/SyncRuns}/ListExternalEventsOfSyncRun/Handler.cs (88%) rename Modules/Synchronization/src/{Synchronization.Application/SyncRuns/Queries => Synchronization.Module/Features/SyncRuns}/ListExternalEventsOfSyncRun/ListExternalEventsOfSyncRunQuery.cs (74%) rename Modules/Synchronization/src/{Synchronization.Application/SyncRuns/Queries => Synchronization.Module/Features/SyncRuns}/ListExternalEventsOfSyncRun/ListExternalEventsOfSyncRunResponse.cs (67%) rename Modules/Synchronization/src/{Synchronization.Application/SyncRuns/Queries => Synchronization.Module/Features/SyncRuns}/ListExternalEventsOfSyncRun/Validator.cs (64%) create mode 100644 Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Endpoint.cs rename Modules/Synchronization/src/{Synchronization.Application/SyncRuns/Commands => Synchronization.Module/Features/SyncRuns}/RefreshExpirationTimeOfSyncRun/Handler.cs (91%) rename Modules/Synchronization/src/{Synchronization.Application/SyncRuns/Commands => Synchronization.Module/Features/SyncRuns}/RefreshExpirationTimeOfSyncRun/RefreshExpirationTimeOfSyncRunCommand.cs (62%) create mode 100644 Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/RefreshExpirationTimeOfSyncRunResponse.cs rename Modules/Synchronization/src/{Synchronization.Application/SyncRuns/Commands => Synchronization.Module/Features/SyncRuns}/RefreshExpirationTimeOfSyncRun/Validator.cs (65%) rename Modules/Synchronization/src/{Synchronization.Application/SyncRuns/DTOs => Synchronization.Module/Features/SyncRuns/Shared}/ExternalEventDTO.cs (96%) rename Modules/Synchronization/src/{Synchronization.Application/SyncRuns/DTOs => Synchronization.Module/Features/SyncRuns/Shared}/SyncRunDTO.cs (94%) create mode 100644 Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/Shared/SyncRunFinalization.cs create mode 100644 Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Endpoint.cs rename Modules/Synchronization/src/{Synchronization.Application/SyncRuns/Commands => Synchronization.Module/Features/SyncRuns}/StartSyncRun/Handler.cs (96%) rename Modules/Synchronization/src/{Synchronization.Application/SyncRuns/Commands => Synchronization.Module/Features/SyncRuns}/StartSyncRun/StartSyncRunCommand.cs (62%) rename Modules/Synchronization/src/{Synchronization.Application/SyncRuns/Commands => Synchronization.Module/Features/SyncRuns}/StartSyncRun/StartSyncRunResponse.cs (78%) rename Modules/Synchronization/src/{Synchronization.Application/SyncRuns/Commands => Synchronization.Module/Features/SyncRuns}/StartSyncRun/Validator.cs (83%) create mode 100644 Modules/Synchronization/src/Synchronization.Module/SynchronizationEndpointExtensions.cs rename Modules/Synchronization/test/{Synchronization.Application.Tests => Synchronization.Module.Tests}/ApplicationDbContextExtensions.cs (91%) rename Modules/Synchronization/test/{Synchronization.Application.Tests => Synchronization.Module.Tests}/ApplicationDbContextWithDelayedSave.cs (92%) rename Modules/Synchronization/test/{Synchronization.Application.Tests => Synchronization.Module.Tests}/DatawalletExtensions.cs (94%) rename Modules/Synchronization/test/{Synchronization.Application.Tests => Synchronization.Module.Tests}/ExternalEventBuilder.cs (96%) rename Modules/Synchronization/test/{Synchronization.Application.Tests => Synchronization.Module.Tests}/GlobalUsings.cs (100%) rename Modules/Synchronization/test/{Synchronization.Application.Tests => Synchronization.Module.Tests}/SyncRunBuilder.cs (97%) rename Modules/Synchronization/test/{Synchronization.Application.Tests/Synchronization.Application.Tests.csproj => Synchronization.Module.Tests/Synchronization.Module.Tests.csproj} (87%) rename Modules/Synchronization/test/{Synchronization.Application.Tests => Synchronization.Module.Tests}/Tests/Datawallet/Commands/PushDatawalletModifications/HandlerTests.cs (93%) rename Modules/Synchronization/test/{Synchronization.Application.Tests => Synchronization.Module.Tests}/Tests/Datawallet/Commands/PushDatawalletModifications/PushDatawalletModificationsCommandValidatorTests.cs (84%) rename Modules/Synchronization/test/{Synchronization.Application.Tests => Synchronization.Module.Tests}/Tests/Datawallet/DTOs/PushDatawalletModificationItemValidatorTests.cs (94%) rename Modules/Synchronization/test/{Synchronization.Application.Tests => Synchronization.Module.Tests}/Tests/Datawallet/Queries/GetDatawalletModifications/HandlerTests.cs (98%) rename Modules/Synchronization/test/{Synchronization.Application.Tests => Synchronization.Module.Tests}/Tests/DomainEvents/IdentityDeletionProcessStartedDomainEventHandlerTests.cs (88%) rename Modules/Synchronization/test/{Synchronization.Application.Tests => Synchronization.Module.Tests}/Tests/DomainEvents/IdentityDeletionProcessStatusChangedDomainEventHandlerTests.cs (89%) rename Modules/Synchronization/test/{Synchronization.Application.Tests => Synchronization.Module.Tests}/Tests/DomainEvents/MessageCreatedDomainEventHandlerTests.cs (95%) rename Modules/Synchronization/test/{Synchronization.Application.Tests => Synchronization.Module.Tests}/Tests/DomainEvents/PeerDeletedDomainEventHandlerTests.cs (82%) rename Modules/Synchronization/test/{Synchronization.Application.Tests => Synchronization.Module.Tests}/Tests/DomainEvents/PeerDeletionCancelledDomainEventHandlerTests.cs (82%) rename Modules/Synchronization/test/{Synchronization.Application.Tests => Synchronization.Module.Tests}/Tests/DomainEvents/PeerToBeDeletedDomainEventHandlerTests.cs (84%) rename Modules/Synchronization/test/{Synchronization.Application.Tests => Synchronization.Module.Tests}/Tests/DomainEvents/RelationshipReactivationCompletedDomainEventHandlerTests.cs (92%) rename Modules/Synchronization/test/{Synchronization.Application.Tests => Synchronization.Module.Tests}/Tests/DomainEvents/RelationshipStatusChangedDomainEventHandlerTests.cs (95%) rename Modules/Synchronization/test/{Synchronization.Application.Tests => Synchronization.Module.Tests}/Tests/DomainEvents/TokenLockedDomainEventHandlerTests.cs (77%) rename Modules/Synchronization/test/{Synchronization.Application.Tests => Synchronization.Module.Tests}/Tests/Identities/IdentityDeleterTests.cs (82%) rename Modules/Synchronization/test/{Synchronization.Application.Tests => Synchronization.Module.Tests}/Tests/SyncRuns/Commands/FinalizeSyncRun/HandlerTests.cs (97%) rename Modules/Synchronization/test/{Synchronization.Application.Tests => Synchronization.Module.Tests}/Tests/SyncRuns/Commands/RefreshExpirationTimeOfSyncRun/HandlerTests.cs (94%) rename Modules/Synchronization/test/{Synchronization.Application.Tests => Synchronization.Module.Tests}/Tests/SyncRuns/Commands/StartSyncRun/HandlerTests.cs (97%) rename Modules/Synchronization/test/{Synchronization.Application.Tests => Synchronization.Module.Tests}/Tests/SyncRuns/Commands/StartSyncRun/StartSyncRunCommandValidatorTests.cs (79%) rename Modules/Synchronization/test/{Synchronization.Application.Tests => Synchronization.Module.Tests}/packages.lock.json (60%) diff --git a/Applications/ConsumerApi/src/Controllers/Synchronization/DatawalletController.cs b/Applications/ConsumerApi/src/Controllers/Synchronization/DatawalletController.cs deleted file mode 100644 index 14b73736ea..0000000000 --- a/Applications/ConsumerApi/src/Controllers/Synchronization/DatawalletController.cs +++ /dev/null @@ -1,82 +0,0 @@ -using Backbone.BuildingBlocks.API; -using Backbone.BuildingBlocks.API.Mvc; -using Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; -using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.ConsumerApi.Versions; -using Backbone.Modules.Synchronization.Application; -using Backbone.Modules.Synchronization.Application.Datawallets.Commands.PushDatawalletModifications; -using Backbone.Modules.Synchronization.Application.Datawallets.DTOs; -using Backbone.Modules.Synchronization.Application.Datawallets.Queries.GetDatawallet; -using Backbone.Modules.Synchronization.Application.Datawallets.Queries.ListModifications; -using MediatR; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Options; -using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; - -namespace Backbone.ConsumerApi.Controllers.Synchronization; - -[V2] -[Route("api/v{v:apiVersion}/[controller]")] -[Authorize("OpenIddict.Validation.AspNetCore")] -public class DatawalletController : ApiControllerBase -{ - private readonly ApplicationConfiguration _configuration; - - public DatawalletController(IMediator mediator, IOptions options) : base(mediator) - { - _configuration = options.Value; - } - - [HttpGet] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status404NotFound)] - public async Task Get(CancellationToken cancellationToken) - { - var response = await _mediator.Send(new GetDatawalletQuery(), cancellationToken); - return Ok(response); - } - - [HttpGet("Modifications")] - [ProducesResponseType(typeof(PagedHttpResponseEnvelope), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - public async Task ListModifications([FromQuery] PaginationFilter paginationFilter, - [FromQuery] int? localIndex, - [FromHeader(Name = "X-Supported-Datawallet-Version")] - ushort supportedDatawalletVersion, - CancellationToken cancellationToken) - { - if (paginationFilter.PageSize > _configuration.Pagination.MaxPageSize) - throw new ApplicationException( - GenericApplicationErrors.Validation.InvalidPageSize(_configuration.Pagination.MaxPageSize)); - - paginationFilter.PageSize ??= _configuration.Pagination.DefaultPageSize; - - var request = new ListModificationsQuery { PaginationFilter = paginationFilter, LocalIndex = localIndex, SupportedDatawalletVersion = supportedDatawalletVersion }; - - var response = await _mediator.Send(request, cancellationToken); - return Paged(response); - } - - [HttpPost("Modifications")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status201Created)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status404NotFound)] - public async Task PushModifications(PushDatawalletModificationsRequestBody request, - [FromHeader(Name = "X-Supported-Datawallet-Version")] - ushort supportedDatawalletVersion, CancellationToken cancellationToken) - { - var response = await _mediator.Send( - new PushDatawalletModificationsCommand { Modifications = request.Modifications, LocalIndex = request.LocalIndex, SupportedDatawalletVersion = supportedDatawalletVersion }, - cancellationToken); - return Created(string.Empty, response); - } -} - -public class PushDatawalletModificationsRequestBody -{ - public required long LocalIndex { get; set; } - public required PushDatawalletModificationItem[] Modifications { get; set; } -} diff --git a/Applications/ConsumerApi/src/Controllers/Synchronization/SyncRunsController.cs b/Applications/ConsumerApi/src/Controllers/Synchronization/SyncRunsController.cs deleted file mode 100644 index 0af6d74ead..0000000000 --- a/Applications/ConsumerApi/src/Controllers/Synchronization/SyncRunsController.cs +++ /dev/null @@ -1,146 +0,0 @@ -using Backbone.BuildingBlocks.API; -using Backbone.BuildingBlocks.API.Mvc; -using Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; -using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; -using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.ConsumerApi.Versions; -using Backbone.Modules.Devices.Module.Features.Identities.GetIdentity; -using Backbone.Modules.Devices.Domain.Entities.Identities; -using Backbone.Modules.Synchronization.Application; -using Backbone.Modules.Synchronization.Application.Datawallets.DTOs; -using Backbone.Modules.Synchronization.Application.SyncRuns.Commands.FinalizeSyncRun; -using Backbone.Modules.Synchronization.Application.SyncRuns.Commands.RefreshExpirationTimeOfSyncRun; -using Backbone.Modules.Synchronization.Application.SyncRuns.Commands.StartSyncRun; -using Backbone.Modules.Synchronization.Application.SyncRuns.DTOs; -using Backbone.Modules.Synchronization.Application.SyncRuns.Queries.GetSyncRunById; -using Backbone.Modules.Synchronization.Application.SyncRuns.Queries.ListExternalEventsOfSyncRun; -using MediatR; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Options; -using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; - -namespace Backbone.ConsumerApi.Controllers.Synchronization; - -[V2] -[Route("api/v{v:apiVersion}/[controller]")] -[Authorize("OpenIddict.Validation.AspNetCore")] -public class SyncRunsController : ApiControllerBase -{ - private readonly ApplicationConfiguration _configuration; - private readonly IUserContext _userContext; - - public SyncRunsController(IMediator mediator, IOptions options, IUserContext userContext) : base(mediator) - { - _configuration = options.Value; - _userContext = userContext; - } - - [HttpPost] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status201Created)] - [ProducesError(StatusCodes.Status400BadRequest)] - public async Task StartSyncRun(StartSyncRunRequestBody requestBody, - [FromHeader(Name = "X-Supported-Datawallet-Version")] - ushort supportedDatawalletVersion, CancellationToken cancellationToken) - { - var identityResponse = await _mediator.Send(new GetIdentityQuery { Address = _userContext.GetAddress() }, cancellationToken); - EnsureIdentityIsActive(identityResponse); - - var response = await _mediator.Send( - new StartSyncRunCommand { Type = requestBody.Type ?? SyncRunDTO.SyncRunType.ExternalEventSync, Duration = requestBody.Duration, SupportedDatawalletVersion = supportedDatawalletVersion }, - cancellationToken); - - return response.Status == StartSyncRunStatus.Created ? Created(response) : Ok(response); - } - - [HttpPut("{id}/FinalizeExternalEventSync")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status404NotFound)] - public async Task FinalizeExternalEventSync([FromRoute] string id, - [FromBody] FinalizeExternalEventSyncRequest request, CancellationToken cancellationToken) - { - var response = await _mediator.Send( - new FinalizeExternalEventSyncSyncRunCommand { SyncRunId = id, ExternalEventResults = request.ExternalEventResults, DatawalletModifications = request.DatawalletModifications }, - cancellationToken); - - return Ok(response); - } - - [HttpPut("{id}/FinalizeDatawalletVersionUpgrade")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status404NotFound)] - public async Task FinalizeDatawalletVersionUpgrade([FromRoute] string id, [FromBody] FinalizeDatawalletVersionUpgradeRequest request, CancellationToken cancellationToken) - { - var response = await _mediator.Send( - new FinalizeDatawalletVersionUpgradeSyncRunCommand { SyncRunId = id, NewDatawalletVersion = request.NewDatawalletVersion, DatawalletModifications = request.DatawalletModifications }, - cancellationToken); - - return Ok(response); - } - - [HttpGet("{id}/ExternalEvents")] - [ProducesResponseType(typeof(PagedHttpResponseEnvelope), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status404NotFound)] - public async Task ListExternalEventsOfSyncRun([FromRoute] string id, - [FromQuery] PaginationFilter paginationFilter, CancellationToken cancellationToken) - { - paginationFilter.PageSize ??= _configuration.Pagination.DefaultPageSize; - - if (paginationFilter.PageSize > _configuration.Pagination.MaxPageSize) - throw new ApplicationException(GenericApplicationErrors.Validation.InvalidPageSize(_configuration.Pagination.MaxPageSize)); - - var response = await _mediator.Send(new ListExternalEventsOfSyncRunQuery { SyncRunId = id, PaginationFilter = paginationFilter }, cancellationToken); - - return Paged(response); - } - - [HttpGet("{id}")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status404NotFound)] - public async Task GetSyncRunById(string id, CancellationToken cancellationToken) - { - var response = await _mediator.Send(new GetSyncRunByIdQuery { SyncRunId = id }, cancellationToken); - return Ok(response); - } - - [HttpPut("{id}/RefreshExpirationTime")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - [ProducesError(StatusCodes.Status400BadRequest)] - [ProducesError(StatusCodes.Status404NotFound)] - public async Task RefreshExpirationTimeOfSyncRun(string id, CancellationToken cancellationToken) - { - var response = await _mediator.Send(new RefreshExpirationTimeOfSyncRunCommand { SyncRunId = id }, cancellationToken); - return Ok(response); - } - - private static void EnsureIdentityIsActive(GetIdentityResponse identityResponse) - { - if (identityResponse.Status is not IdentityStatus.Active) - throw new ApplicationException(ApplicationErrors.SyncRuns.CannotStartSyncRunWhileIdentityIsToBeDeleted()); - } -} - -public class StartSyncRunRequestBody -{ - public SyncRunDTO.SyncRunType? Type { get; set; } - - public ushort? Duration { get; set; } -} - -public class FinalizeDatawalletVersionUpgradeRequest -{ - public ushort NewDatawalletVersion { get; set; } - public List DatawalletModifications { get; set; } = []; -} - -public class FinalizeExternalEventSyncRequest -{ - public List ExternalEventResults { get; set; } = []; - public List DatawalletModifications { get; set; } = []; -} diff --git a/Applications/ConsumerApi/src/Program.cs b/Applications/ConsumerApi/src/Program.cs index 6579736d48..1be772c98b 100644 --- a/Applications/ConsumerApi/src/Program.cs +++ b/Applications/ConsumerApi/src/Program.cs @@ -141,7 +141,7 @@ static void ConfigureServices(IServiceCollection services, IConfiguration config .AddModule(configuration) .AddModule(configuration) - .AddModule(configuration) .AddModule(configuration) .AddModule(configuration); @@ -222,6 +222,7 @@ static void Configure(WebApplication app, ConsumerApiConfiguration configuration app.MapQuotasEndpoints(); app.MapDevicesEndpoints(); app.MapRelationshipsEndpoints(); + app.MapSynchronizationEndpoints(); app.MapControllers(); app.MapHealthChecks("/health", new HealthCheckOptions { diff --git a/Applications/ConsumerApi/src/packages.lock.json b/Applications/ConsumerApi/src/packages.lock.json index 9bcd299759..97841739bb 100644 --- a/Applications/ConsumerApi/src/packages.lock.json +++ b/Applications/ConsumerApi/src/packages.lock.json @@ -1494,19 +1494,12 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Synchronization.Application": { + "Backbone.Modules.Synchronization.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Files.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Synchronization.Domain": "[1.0.0, )" } }, "Backbone.Modules.Synchronization.Contracts": { @@ -1528,7 +1521,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Synchronization.Application": "[1.0.0, )", + "Backbone.Modules.Synchronization.Abstractions": "[1.0.0, )", "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", "Microsoft.Data.Sqlite.Core": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1552,12 +1545,21 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Synchronization.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Files.Contracts": "[1.0.0, )", + "Backbone.Modules.Messages.Contracts": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", + "Backbone.Modules.Synchronization.Abstractions": "[1.0.0, )", "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", "Backbone.Modules.Synchronization.Infrastructure": "[1.0.0, )", "Backbone.Modules.Synchronization.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Synchronization.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", + "FluentValidation": "[12.1.1, 12.1.1]", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/packages.lock.json b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/packages.lock.json index ade4b9e60e..aead5d8e32 100644 --- a/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/packages.lock.json +++ b/Applications/ConsumerApi/test/ConsumerApi.Tests.Integration/packages.lock.json @@ -2122,19 +2122,12 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Synchronization.Application": { + "Backbone.Modules.Synchronization.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Files.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Synchronization.Domain": "[1.0.0, )" } }, "Backbone.Modules.Synchronization.Contracts": { @@ -2156,7 +2149,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Synchronization.Application": "[1.0.0, )", + "Backbone.Modules.Synchronization.Abstractions": "[1.0.0, )", "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", "Microsoft.Data.Sqlite.Core": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -2180,12 +2173,21 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Synchronization.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Files.Contracts": "[1.0.0, )", + "Backbone.Modules.Messages.Contracts": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", + "Backbone.Modules.Synchronization.Abstractions": "[1.0.0, )", "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", "Backbone.Modules.Synchronization.Infrastructure": "[1.0.0, )", "Backbone.Modules.Synchronization.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Synchronization.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", + "FluentValidation": "[12.1.1, 12.1.1]", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/DatabaseMigrator/src/DatabaseMigrator/Dockerfile b/Applications/DatabaseMigrator/src/DatabaseMigrator/Dockerfile index 4f3aa0a80e..b7a5afd33a 100644 --- a/Applications/DatabaseMigrator/src/DatabaseMigrator/Dockerfile +++ b/Applications/DatabaseMigrator/src/DatabaseMigrator/Dockerfile @@ -82,7 +82,7 @@ COPY ["Modules/Relationships/src/Relationships.Infrastructure.Database.Postgres/ COPY ["Modules/Synchronization/src/Synchronization.Infrastructure.Database.SqlServer/Synchronization.Infrastructure.Database.SqlServer.csproj", "Modules/Synchronization/src/Synchronization.Infrastructure.Database.SqlServer/packages.lock.json*", "Modules/Synchronization/src/Synchronization.Infrastructure.Database.SqlServer/"] COPY ["Modules/Synchronization/src/Synchronization.Infrastructure/Synchronization.Infrastructure.csproj", "Modules/Synchronization/src/Synchronization.Infrastructure/packages.lock.json*", "Modules/Synchronization/src/Synchronization.Infrastructure/"] -COPY ["Modules/Synchronization/src/Synchronization.Application/Synchronization.Application.csproj", "Modules/Synchronization/src/Synchronization.Application/packages.lock.json*", "Modules/Synchronization/src/Synchronization.Application/"] +COPY ["Modules/Synchronization/src/Synchronization.Abstractions/Synchronization.Abstractions.csproj", "Modules/Synchronization/src/Synchronization.Abstractions/packages.lock.json*", "Modules/Synchronization/src/Synchronization.Abstractions/"] COPY ["Modules/Synchronization/src/Synchronization.Domain/Synchronization.Domain.csproj", "Modules/Synchronization/src/Synchronization.Domain/packages.lock.json*", "Modules/Synchronization/src/Synchronization.Domain/"] COPY ["Modules/Synchronization/src/Synchronization.Infrastructure.Database.Postgres/Synchronization.Infrastructure.Database.Postgres.csproj", "Modules/Synchronization/src/Synchronization.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Synchronization/src/Synchronization.Infrastructure.Database.Postgres/"] diff --git a/Applications/DatabaseMigrator/src/DatabaseMigrator/packages.lock.json b/Applications/DatabaseMigrator/src/DatabaseMigrator/packages.lock.json index 368487a7ee..468951a5e3 100644 --- a/Applications/DatabaseMigrator/src/DatabaseMigrator/packages.lock.json +++ b/Applications/DatabaseMigrator/src/DatabaseMigrator/packages.lock.json @@ -1871,19 +1871,12 @@ "Backbone.Modules.Relationships.Infrastructure": "[1.0.0, )" } }, - "Backbone.Modules.Synchronization.Application": { + "Backbone.Modules.Synchronization.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Files.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Synchronization.Domain": "[1.0.0, )" } }, "Backbone.Modules.Synchronization.Contracts": { @@ -1905,7 +1898,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Synchronization.Application": "[1.0.0, )", + "Backbone.Modules.Synchronization.Abstractions": "[1.0.0, )", "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", "Microsoft.Data.Sqlite.Core": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -2121,16 +2114,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", diff --git a/Applications/DatabaseMigrator/test/DatabaseMigrator.Tests/packages.lock.json b/Applications/DatabaseMigrator/test/DatabaseMigrator.Tests/packages.lock.json index 46e48e3dab..65f281fe18 100644 --- a/Applications/DatabaseMigrator/test/DatabaseMigrator.Tests/packages.lock.json +++ b/Applications/DatabaseMigrator/test/DatabaseMigrator.Tests/packages.lock.json @@ -1878,19 +1878,12 @@ "Backbone.Modules.Relationships.Infrastructure": "[1.0.0, )" } }, - "Backbone.Modules.Synchronization.Application": { + "Backbone.Modules.Synchronization.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Files.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Synchronization.Domain": "[1.0.0, )" } }, "Backbone.Modules.Synchronization.Contracts": { @@ -1912,7 +1905,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Synchronization.Application": "[1.0.0, )", + "Backbone.Modules.Synchronization.Abstractions": "[1.0.0, )", "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", "Microsoft.Data.Sqlite.Core": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -2161,16 +2154,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", diff --git a/Applications/EventHandlerService/src/EventHandlerService/Dockerfile b/Applications/EventHandlerService/src/EventHandlerService/Dockerfile index 1552752799..b25aad1efe 100644 --- a/Applications/EventHandlerService/src/EventHandlerService/Dockerfile +++ b/Applications/EventHandlerService/src/EventHandlerService/Dockerfile @@ -66,7 +66,7 @@ COPY ["Modules/Relationships/src/Relationships.Infrastructure.Database.Postgres/ COPY ["Modules/Relationships/src/Relationships.Infrastructure/Relationships.Infrastructure.csproj", "Modules/Relationships/src/Relationships.Infrastructure/packages.lock.json*", "Modules/Relationships/src/Relationships.Infrastructure/"] COPY ["Modules/Relationships/src/Relationships.Infrastructure.Database.SqlServer/Relationships.Infrastructure.Database.SqlServer.csproj", "Modules/Relationships/src/Relationships.Infrastructure.Database.SqlServer/packages.lock.json*", "Modules/Relationships/src/Relationships.Infrastructure.Database.SqlServer/"] COPY ["Modules/Synchronization/src/Synchronization.Module/Synchronization.Module.csproj", "Modules/Synchronization/src/Synchronization.Module/packages.lock.json*", "Modules/Synchronization/src/Synchronization.Module/"] -COPY ["Modules/Synchronization/src/Synchronization.Application/Synchronization.Application.csproj", "Modules/Synchronization/src/Synchronization.Application/packages.lock.json*", "Modules/Synchronization/src/Synchronization.Application/"] +COPY ["Modules/Synchronization/src/Synchronization.Abstractions/Synchronization.Abstractions.csproj", "Modules/Synchronization/src/Synchronization.Abstractions/packages.lock.json*", "Modules/Synchronization/src/Synchronization.Abstractions/"] COPY ["Modules/Synchronization/src/Synchronization.Domain/Synchronization.Domain.csproj", "Modules/Synchronization/src/Synchronization.Domain/packages.lock.json*", "Modules/Synchronization/src/Synchronization.Domain/"] COPY ["Modules/Synchronization/src/Synchronization.Infrastructure.Database.Postgres/Synchronization.Infrastructure.Database.Postgres.csproj", "Modules/Synchronization/src/Synchronization.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Synchronization/src/Synchronization.Infrastructure.Database.Postgres/"] COPY ["Modules/Synchronization/src/Synchronization.Infrastructure/Synchronization.Infrastructure.csproj", "Modules/Synchronization/src/Synchronization.Infrastructure/packages.lock.json*", "Modules/Synchronization/src/Synchronization.Infrastructure/"] diff --git a/Applications/EventHandlerService/src/EventHandlerService/Program.cs b/Applications/EventHandlerService/src/EventHandlerService/Program.cs index 66e268ad25..2f1ec43ef8 100644 --- a/Applications/EventHandlerService/src/EventHandlerService/Program.cs +++ b/Applications/EventHandlerService/src/EventHandlerService/Program.cs @@ -81,7 +81,7 @@ static IHostBuilder CreateHostBuilder(string[] args) .AddModule(configuration) .AddModule(configuration) - .AddModule(configuration) .AddModule(configuration); diff --git a/Applications/EventHandlerService/src/EventHandlerService/packages.lock.json b/Applications/EventHandlerService/src/EventHandlerService/packages.lock.json index f51555a89f..3fecc22b40 100644 --- a/Applications/EventHandlerService/src/EventHandlerService/packages.lock.json +++ b/Applications/EventHandlerService/src/EventHandlerService/packages.lock.json @@ -1693,19 +1693,12 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Synchronization.Application": { + "Backbone.Modules.Synchronization.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Files.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Synchronization.Domain": "[1.0.0, )" } }, "Backbone.Modules.Synchronization.Contracts": { @@ -1727,7 +1720,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Synchronization.Application": "[1.0.0, )", + "Backbone.Modules.Synchronization.Abstractions": "[1.0.0, )", "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", "Microsoft.Data.Sqlite.Core": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1751,12 +1744,21 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Synchronization.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Files.Contracts": "[1.0.0, )", + "Backbone.Modules.Messages.Contracts": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", + "Backbone.Modules.Synchronization.Abstractions": "[1.0.0, )", "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", "Backbone.Modules.Synchronization.Infrastructure": "[1.0.0, )", "Backbone.Modules.Synchronization.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Synchronization.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", + "FluentValidation": "[12.1.1, 12.1.1]", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/EventHandlerService/test/EventHandlerService.Tests/packages.lock.json b/Applications/EventHandlerService/test/EventHandlerService.Tests/packages.lock.json index 7fc3c37a9f..5ac88b161e 100644 --- a/Applications/EventHandlerService/test/EventHandlerService.Tests/packages.lock.json +++ b/Applications/EventHandlerService/test/EventHandlerService.Tests/packages.lock.json @@ -1836,19 +1836,12 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Synchronization.Application": { + "Backbone.Modules.Synchronization.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Files.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Synchronization.Domain": "[1.0.0, )" } }, "Backbone.Modules.Synchronization.Contracts": { @@ -1870,7 +1863,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Synchronization.Application": "[1.0.0, )", + "Backbone.Modules.Synchronization.Abstractions": "[1.0.0, )", "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", "Microsoft.Data.Sqlite.Core": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1894,12 +1887,21 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Synchronization.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Files.Contracts": "[1.0.0, )", + "Backbone.Modules.Messages.Contracts": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", + "Backbone.Modules.Synchronization.Abstractions": "[1.0.0, )", "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", "Backbone.Modules.Synchronization.Infrastructure": "[1.0.0, )", "Backbone.Modules.Synchronization.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Synchronization.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", + "FluentValidation": "[12.1.1, 12.1.1]", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/Housekeeper/src/Housekeeper/Dockerfile b/Applications/Housekeeper/src/Housekeeper/Dockerfile index 995598c9d8..4932b5e0fc 100644 --- a/Applications/Housekeeper/src/Housekeeper/Dockerfile +++ b/Applications/Housekeeper/src/Housekeeper/Dockerfile @@ -75,7 +75,7 @@ COPY ["Modules/Relationships/src/Relationships.Infrastructure.Database.SqlServer COPY ["Modules/Relationships/src/Relationships.Module/Relationships.Module.csproj", "Modules/Relationships/src/Relationships.Module/packages.lock.json*", "Modules/Relationships/src/Relationships.Module/"] COPY ["Modules/Synchronization/src/Synchronization.Infrastructure.Database.Postgres/Synchronization.Infrastructure.Database.Postgres.csproj", "Modules/Synchronization/src/Synchronization.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Synchronization/src/Synchronization.Infrastructure.Database.Postgres/"] COPY ["Modules/Synchronization/src/Synchronization.Infrastructure/Synchronization.Infrastructure.csproj", "Modules/Synchronization/src/Synchronization.Infrastructure/packages.lock.json*", "Modules/Synchronization/src/Synchronization.Infrastructure/"] -COPY ["Modules/Synchronization/src/Synchronization.Application/Synchronization.Application.csproj", "Modules/Synchronization/src/Synchronization.Application/packages.lock.json*", "Modules/Synchronization/src/Synchronization.Application/"] +COPY ["Modules/Synchronization/src/Synchronization.Abstractions/Synchronization.Abstractions.csproj", "Modules/Synchronization/src/Synchronization.Abstractions/packages.lock.json*", "Modules/Synchronization/src/Synchronization.Abstractions/"] COPY ["Modules/Synchronization/src/Synchronization.Domain/Synchronization.Domain.csproj", "Modules/Synchronization/src/Synchronization.Domain/packages.lock.json*", "Modules/Synchronization/src/Synchronization.Domain/"] COPY ["Modules/Synchronization/src/Synchronization.Infrastructure.Database.SqlServer/Synchronization.Infrastructure.Database.SqlServer.csproj", "Modules/Synchronization/src/Synchronization.Infrastructure.Database.SqlServer/packages.lock.json*", "Modules/Synchronization/src/Synchronization.Infrastructure.Database.SqlServer/"] COPY ["Modules/Synchronization/src/Synchronization.Module/Synchronization.Module.csproj", "Modules/Synchronization/src/Synchronization.Module/packages.lock.json*", "Modules/Synchronization/src/Synchronization.Module/"] diff --git a/Applications/Housekeeper/src/Housekeeper/Executor.cs b/Applications/Housekeeper/src/Housekeeper/Executor.cs index e416855122..8495f00cca 100644 --- a/Applications/Housekeeper/src/Housekeeper/Executor.cs +++ b/Applications/Housekeeper/src/Housekeeper/Executor.cs @@ -6,7 +6,7 @@ using ExecuteDevicesModuleHousekeepingCommand = Backbone.Modules.Devices.Module.Features.Devices.ExecuteHousekeeping.ExecuteHousekeepingCommand; using ExecuteFilesModuleHousekeepingCommand = Backbone.Modules.Files.Module.Features.Files.ExecuteHousekeeping.ExecuteHousekeepingCommand; using ExecuteRelationshipsModuleHousekeepingCommand = Backbone.Modules.Relationships.Module.Features.Relationships.ExecuteHousekeeping.ExecuteHousekeepingCommand; -using ExecuteSynchronizationModuleHousekeepingCommand = Backbone.Modules.Synchronization.Application.SyncRuns.Commands.ExecuteHousekeeping.ExecuteHousekeepingCommand; +using ExecuteSynchronizationModuleHousekeepingCommand = Backbone.Modules.Synchronization.Module.Features.SyncRuns.ExecuteHousekeeping.ExecuteHousekeepingCommand; using ExecuteTokensModuleHousekeepingCommand = Backbone.Modules.Tokens.Module.Features.Tokens.ExecuteHousekeeping.ExecuteHousekeepingCommand; namespace Backbone.Housekeeper; diff --git a/Applications/Housekeeper/src/Housekeeper/Program.cs b/Applications/Housekeeper/src/Housekeeper/Program.cs index 4c4cdd90db..822b42721f 100644 --- a/Applications/Housekeeper/src/Housekeeper/Program.cs +++ b/Applications/Housekeeper/src/Housekeeper/Program.cs @@ -74,7 +74,7 @@ static HostApplicationBuilder CreateHostBuilder(string[] args) .AddModule(configuration) .AddModule(configuration) - .AddModule(configuration) .AddModule(configuration); diff --git a/Applications/Housekeeper/src/Housekeeper/packages.lock.json b/Applications/Housekeeper/src/Housekeeper/packages.lock.json index 5c34a2e375..a3c67f0843 100644 --- a/Applications/Housekeeper/src/Housekeeper/packages.lock.json +++ b/Applications/Housekeeper/src/Housekeeper/packages.lock.json @@ -1972,19 +1972,12 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Synchronization.Application": { + "Backbone.Modules.Synchronization.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Files.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Synchronization.Domain": "[1.0.0, )" } }, "Backbone.Modules.Synchronization.Contracts": { @@ -2006,7 +1999,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Synchronization.Application": "[1.0.0, )", + "Backbone.Modules.Synchronization.Abstractions": "[1.0.0, )", "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", "Microsoft.Data.Sqlite.Core": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -2030,12 +2023,21 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Synchronization.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Files.Contracts": "[1.0.0, )", + "Backbone.Modules.Messages.Contracts": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", + "Backbone.Modules.Synchronization.Abstractions": "[1.0.0, )", "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", "Backbone.Modules.Synchronization.Infrastructure": "[1.0.0, )", "Backbone.Modules.Synchronization.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Synchronization.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", + "FluentValidation": "[12.1.1, 12.1.1]", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Dockerfile b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Dockerfile index 9bc5d8f5eb..37ed72e2e0 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Dockerfile +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Dockerfile @@ -71,7 +71,7 @@ COPY ["Modules/Relationships/src/Relationships.Module/Relationships.Module.cspro COPY ["Modules/Relationships/src/Relationships.Infrastructure.Database.Postgres/Relationships.Infrastructure.Database.Postgres.csproj", "Modules/Relationships/src/Relationships.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Relationships/src/Relationships.Infrastructure.Database.Postgres/"] COPY ["Modules/Relationships/src/Relationships.Infrastructure/Relationships.Infrastructure.csproj", "Modules/Relationships/src/Relationships.Infrastructure/packages.lock.json*", "Modules/Relationships/src/Relationships.Infrastructure/"] COPY ["Modules/Relationships/src/Relationships.Infrastructure.Database.SqlServer/Relationships.Infrastructure.Database.SqlServer.csproj", "Modules/Relationships/src/Relationships.Infrastructure.Database.SqlServer/packages.lock.json*", "Modules/Relationships/src/Relationships.Infrastructure.Database.SqlServer/"] -COPY ["Modules/Synchronization/src/Synchronization.Application/Synchronization.Application.csproj", "Modules/Synchronization/src/Synchronization.Application/packages.lock.json*", "Modules/Synchronization/src/Synchronization.Application/"] +COPY ["Modules/Synchronization/src/Synchronization.Abstractions/Synchronization.Abstractions.csproj", "Modules/Synchronization/src/Synchronization.Abstractions/packages.lock.json*", "Modules/Synchronization/src/Synchronization.Abstractions/"] COPY ["Modules/Synchronization/src/Synchronization.Domain/Synchronization.Domain.csproj", "Modules/Synchronization/src/Synchronization.Domain/packages.lock.json*", "Modules/Synchronization/src/Synchronization.Domain/"] COPY ["Modules/Synchronization/src/Synchronization.Module/Synchronization.Module.csproj", "Modules/Synchronization/src/Synchronization.Module/packages.lock.json*", "Modules/Synchronization/src/Synchronization.Module/"] COPY ["Modules/Synchronization/src/Synchronization.Infrastructure.Database.Postgres/Synchronization.Infrastructure.Database.Postgres.csproj", "Modules/Synchronization/src/Synchronization.Infrastructure.Database.Postgres/packages.lock.json*", "Modules/Synchronization/src/Synchronization.Infrastructure.Database.Postgres/"] diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Job.IdentityDeletion.csproj b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Job.IdentityDeletion.csproj index a39ab74d38..c0daa28846 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Job.IdentityDeletion.csproj +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Job.IdentityDeletion.csproj @@ -26,7 +26,6 @@ - diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Program.cs b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Program.cs index 6ae77d90a2..c686a69531 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Program.cs +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Program.cs @@ -91,7 +91,7 @@ public static IHostBuilder CreateHostBuilder(string[] args) .AddModule(configuration) .AddModule(configuration) - .AddModule(configuration) .AddModule(configuration); diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/ServicesExtensions.cs b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/ServicesExtensions.cs index d9cdcc483f..763539a50a 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/ServicesExtensions.cs +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/ServicesExtensions.cs @@ -13,7 +13,7 @@ public static IServiceCollection RegisterIdentityDeleters(this IServiceCollectio services.AddTransient(); services.AddTransient(); services.AddTransient(); - services.AddTransient(); + services.AddTransient(); services.AddTransient(); return services; diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/packages.lock.json b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/packages.lock.json index 8430ea2511..5009bdbe8c 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/packages.lock.json +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/packages.lock.json @@ -1733,19 +1733,12 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Synchronization.Application": { + "Backbone.Modules.Synchronization.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Files.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Synchronization.Domain": "[1.0.0, )" } }, "Backbone.Modules.Synchronization.Contracts": { @@ -1767,7 +1760,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Synchronization.Application": "[1.0.0, )", + "Backbone.Modules.Synchronization.Abstractions": "[1.0.0, )", "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", "Microsoft.Data.Sqlite.Core": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1791,12 +1784,21 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Synchronization.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Files.Contracts": "[1.0.0, )", + "Backbone.Modules.Messages.Contracts": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", + "Backbone.Modules.Synchronization.Abstractions": "[1.0.0, )", "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", "Backbone.Modules.Synchronization.Infrastructure": "[1.0.0, )", "Backbone.Modules.Synchronization.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Synchronization.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", + "FluentValidation": "[12.1.1, 12.1.1]", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests.Integration/packages.lock.json b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests.Integration/packages.lock.json index 09cdcd38fa..fc578c20ba 100644 --- a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests.Integration/packages.lock.json +++ b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests.Integration/packages.lock.json @@ -1426,7 +1426,6 @@ "Backbone.Modules.Messages.Module": "[1.0.0, )", "Backbone.Modules.Quotas.Module": "[1.0.0, )", "Backbone.Modules.Relationships.Module": "[1.0.0, )", - "Backbone.Modules.Synchronization.Application": "[1.0.0, )", "Backbone.Modules.Synchronization.Module": "[1.0.0, )", "Backbone.Modules.Tokens.Module": "[1.0.0, )", "Backbone.Tooling": "[1.0.0, )", @@ -1887,19 +1886,12 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Synchronization.Application": { + "Backbone.Modules.Synchronization.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Files.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Synchronization.Domain": "[1.0.0, )" } }, "Backbone.Modules.Synchronization.Contracts": { @@ -1921,7 +1913,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Synchronization.Application": "[1.0.0, )", + "Backbone.Modules.Synchronization.Abstractions": "[1.0.0, )", "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", "Microsoft.Data.Sqlite.Core": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1945,12 +1937,21 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Synchronization.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Files.Contracts": "[1.0.0, )", + "Backbone.Modules.Messages.Contracts": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", + "Backbone.Modules.Synchronization.Abstractions": "[1.0.0, )", "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", "Backbone.Modules.Synchronization.Infrastructure": "[1.0.0, )", "Backbone.Modules.Synchronization.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Synchronization.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", + "FluentValidation": "[12.1.1, 12.1.1]", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/packages.lock.json b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/packages.lock.json index 09cdcd38fa..fc578c20ba 100644 --- a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/packages.lock.json +++ b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/packages.lock.json @@ -1426,7 +1426,6 @@ "Backbone.Modules.Messages.Module": "[1.0.0, )", "Backbone.Modules.Quotas.Module": "[1.0.0, )", "Backbone.Modules.Relationships.Module": "[1.0.0, )", - "Backbone.Modules.Synchronization.Application": "[1.0.0, )", "Backbone.Modules.Synchronization.Module": "[1.0.0, )", "Backbone.Modules.Tokens.Module": "[1.0.0, )", "Backbone.Tooling": "[1.0.0, )", @@ -1887,19 +1886,12 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Synchronization.Application": { + "Backbone.Modules.Synchronization.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Files.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Synchronization.Domain": "[1.0.0, )" } }, "Backbone.Modules.Synchronization.Contracts": { @@ -1921,7 +1913,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Synchronization.Application": "[1.0.0, )", + "Backbone.Modules.Synchronization.Abstractions": "[1.0.0, )", "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", "Microsoft.Data.Sqlite.Core": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1945,12 +1937,21 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Synchronization.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Files.Contracts": "[1.0.0, )", + "Backbone.Modules.Messages.Contracts": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", + "Backbone.Modules.Synchronization.Abstractions": "[1.0.0, )", "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", "Backbone.Modules.Synchronization.Infrastructure": "[1.0.0, )", "Backbone.Modules.Synchronization.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Synchronization.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", + "FluentValidation": "[12.1.1, 12.1.1]", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, diff --git a/Backbone.Tests.ArchUnit/Backbone.Tests.ArchUnit.csproj b/Backbone.Tests.ArchUnit/Backbone.Tests.ArchUnit.csproj index a5b37ac448..4a339f71b2 100644 --- a/Backbone.Tests.ArchUnit/Backbone.Tests.ArchUnit.csproj +++ b/Backbone.Tests.ArchUnit/Backbone.Tests.ArchUnit.csproj @@ -51,7 +51,7 @@ - + diff --git a/Backbone.Tests.ArchUnit/CleanArchitecture.cs b/Backbone.Tests.ArchUnit/CleanArchitecture.cs index 736912a21a..8a1c85fb14 100644 --- a/Backbone.Tests.ArchUnit/CleanArchitecture.cs +++ b/Backbone.Tests.ArchUnit/CleanArchitecture.cs @@ -22,16 +22,6 @@ public class CleanArchitecture .ResideInAssemblyMatching("Backbone.Modules.*.ConsumerApi") .As("ConsumerApi Assemblies"); - private static readonly IObjectProvider APPLICATION_ASSEMBLIES = - Types().That() - .ResideInAssemblyMatching("Backbone.Modules.*.Application") - .As("Application Assemblies"); - - private static readonly IObjectProvider INFRASTRUCTURE_ASSEMBLIES = - Types().That() - .ResideInAssemblyMatching("Backbone.Modules.*.Infrastructure") - .As("Infrastructure Assemblies"); - [Theory] [ClassData(typeof(Modules))] public void ModulesShouldNotDependOnOtherModules(IObjectProvider module) @@ -67,37 +57,6 @@ public void ContractAssembliesShouldNotDependOnModules(IObjectProvider co .WithoutRequiringPositiveResults() .Check(Backbone.ARCHITECTURE); } - - [Fact] - public void ApplicationAssembliesShouldNotDependOnInfrastructureAssemblies() - { - Types() - .That().Are(APPLICATION_ASSEMBLIES) - .And().AreNot(Backbone.TEST_TYPES) - .Should().NotDependOnAnyTypesThat().Are(INFRASTRUCTURE_ASSEMBLIES) - .Because("this would violate Clean Architecture") - .Check(Backbone.ARCHITECTURE); - } - - [Fact] - public void ApplicationAssembliesShouldNotDependOnAPIAssemblies() - { - Types() - .That().Are(APPLICATION_ASSEMBLIES) - .Should().NotDependOnAnyTypesThat().ResideInAssembly("Backbone.Modules.*.API") - .Because("this would violate Clean Architecture") - .Check(Backbone.ARCHITECTURE); - } - - [Fact] - public void ApplicationAssembliesShouldNotReferenceAspNetCore() - { - Types() - .That().Are(APPLICATION_ASSEMBLIES) - .Should().NotDependOnAnyTypesThat().ResideInNamespaceMatching("Microsoft.AspNetCore.*") - .Because("this would violate Clean Architecture") - .Check(Backbone.ARCHITECTURE); - } } public class Modules : IEnumerable diff --git a/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs b/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs index e1a2657fc0..74c7054148 100644 --- a/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs +++ b/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs @@ -12,7 +12,7 @@ namespace Backbone.Backbone.Tests.ArchUnit; public class VerticalSliceArchitecture { - private static readonly string[] MIGRATED_MODULES = ["Messages", "Tags", "Challenges", "Announcements", "Tokens", "Files", "Quotas", "Devices", "Relationships"]; + private static readonly string[] MIGRATED_MODULES = ["Messages", "Tags", "Challenges", "Announcements", "Tokens", "Files", "Quotas", "Devices", "Relationships", "Synchronization"]; [Fact] public void DomainsShouldNotDependOnOuterLayers() @@ -48,6 +48,7 @@ public void InfrastructureShouldNotDependOnModulesOrApis() [InlineData("Quotas")] [InlineData("Devices")] [InlineData("Relationships")] + [InlineData("Synchronization")] public void UseCasesShouldResideInTheirModule(string module) { var useCases = Classes().That().AreAssignableTo(typeof(IBaseRequest)) @@ -72,10 +73,11 @@ public void UseCasesShouldResideInTheirModule(string module) [InlineData("Quotas")] [InlineData("Devices")] [InlineData("Relationships")] + [InlineData("Synchronization")] public void UseCasesShouldNotDependOnAdapters(string module) { Classes().That().Are(UseCases(module)).Should().NotDependOnAnyTypesThat() - .ResideInAssemblyMatching(@"^Backbone\.Modules\.[^.]+\.Infrastructure[^,]*(,|$)") + .ResideInAssemblyMatching(@"^Backbone\.(Modules\.[^.]+\.Infrastructure[^,]*|.*Api|BuildingBlocks\.API)(,|$)") .Check(Backbone.ARCHITECTURE); // Validators nested in endpoints belong to the HTTP adapter; command/query validators remain independent. var httpValidators = Classes().That().HaveFullNameMatching(@".*\.Endpoint[+.].*") @@ -95,6 +97,7 @@ public void UseCasesShouldNotDependOnAdapters(string module) [InlineData("Quotas")] [InlineData("Devices")] [InlineData("Relationships")] + [InlineData("Synchronization")] public void ModulesShouldOnlyReferenceTheirOwnImplementationAndOtherContracts(string module) { foreach (var assembly in SolutionAssemblies().Where(assembly => assembly.GetName().Name == $"Backbone.Modules.{module}.Module")) diff --git a/Backbone.Tests.ArchUnit/packages.lock.json b/Backbone.Tests.ArchUnit/packages.lock.json index f3db0ef5bb..7845d12490 100644 --- a/Backbone.Tests.ArchUnit/packages.lock.json +++ b/Backbone.Tests.ArchUnit/packages.lock.json @@ -1727,7 +1727,6 @@ "Backbone.Modules.Messages.Module": "[1.0.0, )", "Backbone.Modules.Quotas.Module": "[1.0.0, )", "Backbone.Modules.Relationships.Module": "[1.0.0, )", - "Backbone.Modules.Synchronization.Application": "[1.0.0, )", "Backbone.Modules.Synchronization.Module": "[1.0.0, )", "Backbone.Modules.Tokens.Module": "[1.0.0, )", "Backbone.Tooling": "[1.0.0, )", @@ -2351,31 +2350,12 @@ "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, - "Backbone.Modules.Synchronization.Application": { + "Backbone.Modules.Synchronization.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Files.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" - } - }, - "Backbone.Modules.Synchronization.Application.Tests": { - "type": "Project", - "dependencies": { - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Synchronization.Application": "[1.0.0, )", - "Backbone.Modules.Synchronization.Infrastructure": "[1.0.0, )", - "Backbone.UnitTestTools": "[1.0.0, )", - "FakeItEasy": "[9.0.1, 9.0.1]", - "GitHubActionsTestLogger": "[3.0.5, 3.0.5]", - "Microsoft.NET.Test.Sdk": "[18.8.1, 18.8.1]" + "Backbone.Modules.Synchronization.Domain": "[1.0.0, )" } }, "Backbone.Modules.Synchronization.Contracts": { @@ -2407,7 +2387,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Synchronization.Application": "[1.0.0, )", + "Backbone.Modules.Synchronization.Abstractions": "[1.0.0, )", "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", "Microsoft.Data.Sqlite.Core": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -2431,15 +2411,36 @@ "type": "Project", "dependencies": { "Backbone.BuildingBlocks.API": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Module": "[1.0.0, )", - "Backbone.Modules.Synchronization.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Files.Contracts": "[1.0.0, )", + "Backbone.Modules.Messages.Contracts": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", + "Backbone.Modules.Synchronization.Abstractions": "[1.0.0, )", "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", "Backbone.Modules.Synchronization.Infrastructure": "[1.0.0, )", "Backbone.Modules.Synchronization.Infrastructure.Database.Postgres": "[1.0.0, )", "Backbone.Modules.Synchronization.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", + "FluentValidation": "[12.1.1, 12.1.1]", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" } }, + "Backbone.Modules.Synchronization.Module.Tests": { + "type": "Project", + "dependencies": { + "Backbone.Modules.Messages.Contracts": "[1.0.0, )", + "Backbone.Modules.Synchronization.Infrastructure": "[1.0.0, )", + "Backbone.Modules.Synchronization.Module": "[1.0.0, )", + "Backbone.UnitTestTools": "[1.0.0, )", + "FakeItEasy": "[9.0.1, 9.0.1]", + "GitHubActionsTestLogger": "[3.0.5, 3.0.5]", + "Microsoft.NET.Test.Sdk": "[18.8.1, 18.8.1]" + } + }, "Backbone.Modules.Tags.Abstractions": { "type": "Project", "dependencies": { diff --git a/Backbone.slnx b/Backbone.slnx index f8c3587efc..830f486f4b 100644 --- a/Backbone.slnx +++ b/Backbone.slnx @@ -204,7 +204,7 @@ - + @@ -213,7 +213,7 @@ - + diff --git a/Modules/Synchronization/src/Synchronization.Application/Infrastructure/IRelationshipsRepository.cs b/Modules/Synchronization/src/Synchronization.Abstractions/IRelationshipsRepository.cs similarity index 76% rename from Modules/Synchronization/src/Synchronization.Application/Infrastructure/IRelationshipsRepository.cs rename to Modules/Synchronization/src/Synchronization.Abstractions/IRelationshipsRepository.cs index f317c39a19..23509f3e26 100644 --- a/Modules/Synchronization/src/Synchronization.Application/Infrastructure/IRelationshipsRepository.cs +++ b/Modules/Synchronization/src/Synchronization.Abstractions/IRelationshipsRepository.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Synchronization.Domain.Entities.Relationships; -namespace Backbone.Modules.Synchronization.Application.Infrastructure; +namespace Backbone.Modules.Synchronization.Abstractions; public interface IRelationshipsRepository { diff --git a/Modules/Synchronization/src/Synchronization.Application/Infrastructure/ISynchronizationDbContext.cs b/Modules/Synchronization/src/Synchronization.Abstractions/ISynchronizationDbContext.cs similarity index 97% rename from Modules/Synchronization/src/Synchronization.Application/Infrastructure/ISynchronizationDbContext.cs rename to Modules/Synchronization/src/Synchronization.Abstractions/ISynchronizationDbContext.cs index 1c5fb165b5..018f17c13f 100644 --- a/Modules/Synchronization/src/Synchronization.Application/Infrastructure/ISynchronizationDbContext.cs +++ b/Modules/Synchronization/src/Synchronization.Abstractions/ISynchronizationDbContext.cs @@ -4,7 +4,7 @@ using Backbone.Modules.Synchronization.Domain.Entities; using Backbone.Modules.Synchronization.Domain.Entities.Sync; -namespace Backbone.Modules.Synchronization.Application.Infrastructure; +namespace Backbone.Modules.Synchronization.Abstractions; public interface ISynchronizationDbContext : IDbContext { diff --git a/Modules/Synchronization/src/Synchronization.Abstractions/Synchronization.Abstractions.csproj b/Modules/Synchronization/src/Synchronization.Abstractions/Synchronization.Abstractions.csproj new file mode 100644 index 0000000000..8e26dd6c76 --- /dev/null +++ b/Modules/Synchronization/src/Synchronization.Abstractions/Synchronization.Abstractions.csproj @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Modules/Synchronization/src/Synchronization.Application/packages.lock.json b/Modules/Synchronization/src/Synchronization.Abstractions/packages.lock.json similarity index 97% rename from Modules/Synchronization/src/Synchronization.Application/packages.lock.json rename to Modules/Synchronization/src/Synchronization.Abstractions/packages.lock.json index 6b7437957d..8315f6e1c8 100644 --- a/Modules/Synchronization/src/Synchronization.Application/packages.lock.json +++ b/Modules/Synchronization/src/Synchronization.Abstractions/packages.lock.json @@ -2,22 +2,6 @@ "version": 2, "dependencies": { "net10.0": { - "FluentValidation": { - "type": "Direct", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" - }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "Direct", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "AWSSDK.Core": { "type": "Transitive", "resolved": "4.0.100.9", @@ -746,30 +730,6 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Devices.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Files.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Messages.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Relationships.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Modules.Synchronization.Contracts": { "type": "Project", "dependencies": { @@ -784,12 +744,6 @@ "Backbone.Tooling": "[1.0.0, )" } }, - "Backbone.Modules.Tokens.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Tooling": { "type": "Project", "dependencies": { @@ -872,6 +826,12 @@ "NetTopologySuite.IO.SqlServerBytes": "2.1.0" } }, + "FluentValidation": { + "type": "CentralTransitive", + "requested": "[12.1.1, 12.1.1]", + "resolved": "12.1.1", + "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" + }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", diff --git a/Modules/Synchronization/src/Synchronization.Application/Datawallets/Queries/GetDatawallet/GetDatawalletQuery.cs b/Modules/Synchronization/src/Synchronization.Application/Datawallets/Queries/GetDatawallet/GetDatawalletQuery.cs deleted file mode 100644 index ec9a3f90d5..0000000000 --- a/Modules/Synchronization/src/Synchronization.Application/Datawallets/Queries/GetDatawallet/GetDatawalletQuery.cs +++ /dev/null @@ -1,6 +0,0 @@ -using Backbone.Modules.Synchronization.Application.Datawallets.DTOs; -using MediatR; - -namespace Backbone.Modules.Synchronization.Application.Datawallets.Queries.GetDatawallet; - -public class GetDatawalletQuery : IRequest; diff --git a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs b/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs deleted file mode 100644 index 90d49d21ee..0000000000 --- a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs +++ /dev/null @@ -1,5 +0,0 @@ -using MediatR; - -namespace Backbone.Modules.Synchronization.Application.SyncRuns.Commands.ExecuteHousekeeping; - -public class ExecuteHousekeepingCommand : IRequest; diff --git a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/FinalizeSyncRun/Handler.cs b/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/FinalizeSyncRun/Handler.cs deleted file mode 100644 index 96df32451d..0000000000 --- a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/FinalizeSyncRun/Handler.cs +++ /dev/null @@ -1,148 +0,0 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; -using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Synchronization.Application.Datawallets.DTOs; -using Backbone.Modules.Synchronization.Application.Infrastructure; -using Backbone.Modules.Synchronization.Domain.Entities; -using Backbone.Modules.Synchronization.Domain.Entities.Sync; -using MediatR; -using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; - -namespace Backbone.Modules.Synchronization.Application.SyncRuns.Commands.FinalizeSyncRun; - -public class Handler : IRequestHandler, - IRequestHandler -{ - private readonly DeviceId _activeDevice; - private readonly IdentityAddress _activeIdentity; - private readonly ISynchronizationDbContext _dbContext; - private Datawallet? _datawallet; - private SyncRun _syncRun = null!; - - public Handler(ISynchronizationDbContext dbContext, IUserContext userContext) - { - _dbContext = dbContext; - _activeIdentity = userContext.GetAddress(); - _activeDevice = userContext.GetDeviceId(); - } - - public async Task Handle(FinalizeDatawalletVersionUpgradeSyncRunCommand request, CancellationToken cancellationToken) - { - _syncRun = await _dbContext.GetSyncRun(SyncRunId.Parse(request.SyncRunId), _activeIdentity, cancellationToken); - - if (_syncRun.Type != SyncRun.SyncRunType.DatawalletVersionUpgrade) - throw new ApplicationException(ApplicationErrors.SyncRuns.UnexpectedSyncRunType(SyncRun.SyncRunType.DatawalletVersionUpgrade)); - - CheckPreconditions(); - - _syncRun.FinalizeDatawalletVersionUpgrade(); - - _datawallet = await _dbContext.GetDatawalletForInsertion(_activeIdentity, cancellationToken); - - if (_datawallet == null) - { - _datawallet = new Datawallet(new Datawallet.DatawalletVersion(request.NewDatawalletVersion), _activeIdentity); - _dbContext.Set().Add(_datawallet); - } - else - { - _datawallet.Upgrade(new Datawallet.DatawalletVersion(request.NewDatawalletVersion)); - } - - var newModifications = AddModificationsToDatawallet(request.DatawalletModifications); - - await _dbContext.SaveChangesAsync(cancellationToken); - - var response = new FinalizeDatawalletVersionUpgradeSyncRunResponse - { - NewDatawalletModificationIndex = _datawallet.LatestModification?.Index, - DatawalletModifications = newModifications.Select(m => new CreatedDatawalletModificationDTO(m)) - }; - - return response; - } - - public async Task Handle(FinalizeExternalEventSyncSyncRunCommand request, CancellationToken cancellationToken) - { - _syncRun = await _dbContext.GetSyncRunWithExternalEvents(SyncRunId.Parse(request.SyncRunId), _activeIdentity, cancellationToken); - - if (_syncRun.Type != SyncRun.SyncRunType.ExternalEventSync) - throw new ApplicationException(ApplicationErrors.SyncRuns.UnexpectedSyncRunType(SyncRun.SyncRunType.ExternalEventSync)); - - CheckPreconditions(); - - _datawallet = await _dbContext.GetDatawalletForInsertion(_activeIdentity, cancellationToken) ?? throw new NotFoundException(nameof(Datawallet)); - - var eventResults = request.ExternalEventResults.Select(e => - new ExternalEventResult - { - ErrorCode = e.ErrorCode ?? string.Empty, - ExternalEventId = ExternalEventId.Parse(e.ExternalEventId) - }).ToArray(); - - _syncRun.FinalizeExternalEventSync(eventResults); - - var newModifications = AddModificationsToDatawallet(request.DatawalletModifications); - - await _dbContext.SaveChangesAsync(cancellationToken); - - var newUnsyncedExternalEventsExist = await _dbContext.DoNewUnsyncedExternalEventsExist(_activeIdentity, 1, cancellationToken); - - var response = new FinalizeExternalEventSyncSyncRunResponse - { - NewDatawalletModificationIndex = _datawallet.LatestModification?.Index, - DatawalletModifications = newModifications.Select(x => new CreatedDatawalletModificationDTO(x)), - NewUnsyncedExternalEventsExist = newUnsyncedExternalEventsExist - }; - - return response; - } - - private void CheckPreconditions() - { - if (_syncRun.CreatedByDevice != _activeDevice) - throw new OperationFailedException(ApplicationErrors.SyncRuns.CannotFinalizeSyncRunStartedByAnotherDevice()); - - if (_syncRun.IsFinalized) - throw new OperationFailedException(ApplicationErrors.SyncRuns.SyncRunAlreadyFinalized()); - } - - private List AddModificationsToDatawallet(List modifications) - { - if (_datawallet == null) - throw new NotFoundException(nameof(Datawallet)); - - if (modifications.Count == 0) - return []; - - var newModifications = new List(); - - foreach (var modificationDto in modifications) - { - var newModification = _datawallet.AddModification( - MapDatawalletModificationType(modificationDto.Type), - new Datawallet.DatawalletVersion(modificationDto.DatawalletVersion), - modificationDto.Collection, - modificationDto.ObjectIdentifier, - modificationDto.PayloadCategory, - modificationDto.EncryptedPayload, - _activeDevice); - - newModifications.Add(newModification); - } - - return newModifications; - } - - private static DatawalletModificationType MapDatawalletModificationType(DatawalletModificationDTO.DatawalletModificationType type) - { - return type switch - { - DatawalletModificationDTO.DatawalletModificationType.Create => DatawalletModificationType.Create, - DatawalletModificationDTO.DatawalletModificationType.Update => DatawalletModificationType.Update, - DatawalletModificationDTO.DatawalletModificationType.Delete => DatawalletModificationType.Delete, - DatawalletModificationDTO.DatawalletModificationType.CacheChanged => DatawalletModificationType.CacheChanged, - _ => throw new Exception($"Unsupported Datawallet Modification Type: {type}") - }; - } -} diff --git a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/RefreshExpirationTimeOfSyncRun/RefreshExpirationTimeOfSyncRunResponse.cs b/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/RefreshExpirationTimeOfSyncRun/RefreshExpirationTimeOfSyncRunResponse.cs deleted file mode 100644 index 1cd78886ac..0000000000 --- a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/RefreshExpirationTimeOfSyncRun/RefreshExpirationTimeOfSyncRunResponse.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Backbone.Modules.Synchronization.Application.SyncRuns.Commands.RefreshExpirationTimeOfSyncRun; - -public class RefreshExpirationTimeOfSyncRunResponse -{ - public DateTime ExpiresAt { get; set; } -} diff --git a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Queries/GetSyncRunById/GetSyncRunByIdQuery.cs b/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Queries/GetSyncRunById/GetSyncRunByIdQuery.cs deleted file mode 100644 index 8e54a6cf1a..0000000000 --- a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Queries/GetSyncRunById/GetSyncRunByIdQuery.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Backbone.Modules.Synchronization.Application.SyncRuns.DTOs; -using MediatR; - -namespace Backbone.Modules.Synchronization.Application.SyncRuns.Queries.GetSyncRunById; - -public class GetSyncRunByIdQuery : IRequest -{ - public required string SyncRunId { get; init; } -} diff --git a/Modules/Synchronization/src/Synchronization.Application/Synchronization.Application.csproj b/Modules/Synchronization/src/Synchronization.Application/Synchronization.Application.csproj deleted file mode 100644 index 273b138386..0000000000 --- a/Modules/Synchronization/src/Synchronization.Application/Synchronization.Application.csproj +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/Modules/Synchronization/src/Synchronization.Domain/AssemblyInfo.cs b/Modules/Synchronization/src/Synchronization.Domain/AssemblyInfo.cs index 04eaa5e4e7..2f1f880988 100644 --- a/Modules/Synchronization/src/Synchronization.Domain/AssemblyInfo.cs +++ b/Modules/Synchronization/src/Synchronization.Domain/AssemblyInfo.cs @@ -1,3 +1,3 @@ using System.Runtime.CompilerServices; -[assembly: InternalsVisibleTo("Backbone.Modules.Synchronization.Application.Tests")] +[assembly: InternalsVisibleTo("Backbone.Modules.Synchronization.Module.Tests")] diff --git a/Modules/Synchronization/src/Synchronization.Infrastructure.Database.Postgres/packages.lock.json b/Modules/Synchronization/src/Synchronization.Infrastructure.Database.Postgres/packages.lock.json index 68bda7daf3..0f84b1ebc5 100644 --- a/Modules/Synchronization/src/Synchronization.Infrastructure.Database.Postgres/packages.lock.json +++ b/Modules/Synchronization/src/Synchronization.Infrastructure.Database.Postgres/packages.lock.json @@ -735,43 +735,12 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Devices.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Files.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Messages.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Relationships.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Synchronization.Application": { + "Backbone.Modules.Synchronization.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Files.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Synchronization.Domain": "[1.0.0, )" } }, "Backbone.Modules.Synchronization.Contracts": { @@ -793,7 +762,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Synchronization.Application": "[1.0.0, )", + "Backbone.Modules.Synchronization.Abstractions": "[1.0.0, )", "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", "Microsoft.Data.Sqlite.Core": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -801,12 +770,6 @@ "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, 10.0.3]" } }, - "Backbone.Modules.Tokens.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Tooling": { "type": "Project", "dependencies": { @@ -895,16 +858,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", diff --git a/Modules/Synchronization/src/Synchronization.Infrastructure.Database.SqlServer/packages.lock.json b/Modules/Synchronization/src/Synchronization.Infrastructure.Database.SqlServer/packages.lock.json index 68bda7daf3..0f84b1ebc5 100644 --- a/Modules/Synchronization/src/Synchronization.Infrastructure.Database.SqlServer/packages.lock.json +++ b/Modules/Synchronization/src/Synchronization.Infrastructure.Database.SqlServer/packages.lock.json @@ -735,43 +735,12 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Devices.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Files.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Messages.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Relationships.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Synchronization.Application": { + "Backbone.Modules.Synchronization.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Files.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Synchronization.Domain": "[1.0.0, )" } }, "Backbone.Modules.Synchronization.Contracts": { @@ -793,7 +762,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Synchronization.Application": "[1.0.0, )", + "Backbone.Modules.Synchronization.Abstractions": "[1.0.0, )", "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", "Microsoft.Data.Sqlite.Core": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -801,12 +770,6 @@ "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, 10.0.3]" } }, - "Backbone.Modules.Tokens.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Tooling": { "type": "Project", "dependencies": { @@ -895,16 +858,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", diff --git a/Modules/Synchronization/src/Synchronization.Application/Infrastructure/DbErrorCodes.cs b/Modules/Synchronization/src/Synchronization.Infrastructure/Persistence/Database/DbErrorCodes.cs similarity index 66% rename from Modules/Synchronization/src/Synchronization.Application/Infrastructure/DbErrorCodes.cs rename to Modules/Synchronization/src/Synchronization.Infrastructure/Persistence/Database/DbErrorCodes.cs index 8981bb8fea..8472a97e69 100644 --- a/Modules/Synchronization/src/Synchronization.Application/Infrastructure/DbErrorCodes.cs +++ b/Modules/Synchronization/src/Synchronization.Infrastructure/Persistence/Database/DbErrorCodes.cs @@ -1,4 +1,4 @@ -namespace Backbone.Modules.Synchronization.Application.Infrastructure; +namespace Backbone.Modules.Synchronization.Infrastructure.Persistence.Database; public static class DbErrorCodes { diff --git a/Modules/Synchronization/src/Synchronization.Application/Extensions/DatawalletQueryableExtensions.cs b/Modules/Synchronization/src/Synchronization.Infrastructure/Persistence/Database/Extensions/DatawalletQueryableExtensions.cs similarity index 88% rename from Modules/Synchronization/src/Synchronization.Application/Extensions/DatawalletQueryableExtensions.cs rename to Modules/Synchronization/src/Synchronization.Infrastructure/Persistence/Database/Extensions/DatawalletQueryableExtensions.cs index 0b33919c9b..e729f5d37c 100644 --- a/Modules/Synchronization/src/Synchronization.Application/Extensions/DatawalletQueryableExtensions.cs +++ b/Modules/Synchronization/src/Synchronization.Infrastructure/Persistence/Database/Extensions/DatawalletQueryableExtensions.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Synchronization.Domain.Entities; using Microsoft.EntityFrameworkCore; -namespace Backbone.Modules.Synchronization.Application.Extensions; +namespace Backbone.Modules.Synchronization.Infrastructure.Persistence.Database.Extensions; public static class DatawalletQueryableExtensions { diff --git a/Modules/Synchronization/src/Synchronization.Application/Extensions/ExternalEventsQueryableExtensions.cs b/Modules/Synchronization/src/Synchronization.Infrastructure/Persistence/Database/Extensions/ExternalEventsQueryableExtensions.cs similarity index 93% rename from Modules/Synchronization/src/Synchronization.Application/Extensions/ExternalEventsQueryableExtensions.cs rename to Modules/Synchronization/src/Synchronization.Infrastructure/Persistence/Database/Extensions/ExternalEventsQueryableExtensions.cs index 1952d8b950..33d65a354d 100644 --- a/Modules/Synchronization/src/Synchronization.Application/Extensions/ExternalEventsQueryableExtensions.cs +++ b/Modules/Synchronization/src/Synchronization.Infrastructure/Persistence/Database/Extensions/ExternalEventsQueryableExtensions.cs @@ -1,7 +1,7 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Synchronization.Domain.Entities.Sync; -namespace Backbone.Modules.Synchronization.Application.Extensions; +namespace Backbone.Modules.Synchronization.Infrastructure.Persistence.Database.Extensions; public static class ExternalEventsQueryableExtensions { diff --git a/Modules/Synchronization/src/Synchronization.Application/Extensions/SyncRunsQueryableExtensions.cs b/Modules/Synchronization/src/Synchronization.Infrastructure/Persistence/Database/Extensions/SyncRunsQueryableExtensions.cs similarity index 90% rename from Modules/Synchronization/src/Synchronization.Application/Extensions/SyncRunsQueryableExtensions.cs rename to Modules/Synchronization/src/Synchronization.Infrastructure/Persistence/Database/Extensions/SyncRunsQueryableExtensions.cs index 6294d6fe48..c0f900da77 100644 --- a/Modules/Synchronization/src/Synchronization.Application/Extensions/SyncRunsQueryableExtensions.cs +++ b/Modules/Synchronization/src/Synchronization.Infrastructure/Persistence/Database/Extensions/SyncRunsQueryableExtensions.cs @@ -3,7 +3,7 @@ using Backbone.Modules.Synchronization.Domain.Entities.Sync; using Microsoft.EntityFrameworkCore; -namespace Backbone.Modules.Synchronization.Application.Extensions; +namespace Backbone.Modules.Synchronization.Infrastructure.Persistence.Database.Extensions; public static class SyncRunsQueryableExtensions { diff --git a/Modules/Synchronization/src/Synchronization.Infrastructure/Persistence/Database/IServiceCollectionExtensions.cs b/Modules/Synchronization/src/Synchronization.Infrastructure/Persistence/Database/IServiceCollectionExtensions.cs index db43e9da35..9fac752760 100644 --- a/Modules/Synchronization/src/Synchronization.Infrastructure/Persistence/Database/IServiceCollectionExtensions.cs +++ b/Modules/Synchronization/src/Synchronization.Infrastructure/Persistence/Database/IServiceCollectionExtensions.cs @@ -1,5 +1,5 @@ using Backbone.BuildingBlocks.Infrastructure.Persistence.Database; -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.Modules.Synchronization.Abstractions; using Microsoft.Extensions.DependencyInjection; namespace Backbone.Modules.Synchronization.Infrastructure.Persistence.Database; diff --git a/Modules/Synchronization/src/Synchronization.Infrastructure/Persistence/Database/SynchronizationDbContext.cs b/Modules/Synchronization/src/Synchronization.Infrastructure/Persistence/Database/SynchronizationDbContext.cs index 446e11ce0d..bbea0e47a6 100644 --- a/Modules/Synchronization/src/Synchronization.Infrastructure/Persistence/Database/SynchronizationDbContext.cs +++ b/Modules/Synchronization/src/Synchronization.Infrastructure/Persistence/Database/SynchronizationDbContext.cs @@ -6,8 +6,8 @@ using Backbone.BuildingBlocks.Application.Pagination; using Backbone.BuildingBlocks.Infrastructure.Persistence.Database; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Synchronization.Application.Extensions; -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.Modules.Synchronization.Infrastructure.Persistence.Database.Extensions; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities; using Backbone.Modules.Synchronization.Domain.Entities.Relationships; using Backbone.Modules.Synchronization.Domain.Entities.Sync; diff --git a/Modules/Synchronization/src/Synchronization.Infrastructure/Persistence/Repository/IServiceCollectionExtensions.cs b/Modules/Synchronization/src/Synchronization.Infrastructure/Persistence/Repository/IServiceCollectionExtensions.cs index 7c809d77ce..0b3862cca2 100644 --- a/Modules/Synchronization/src/Synchronization.Infrastructure/Persistence/Repository/IServiceCollectionExtensions.cs +++ b/Modules/Synchronization/src/Synchronization.Infrastructure/Persistence/Repository/IServiceCollectionExtensions.cs @@ -1,4 +1,4 @@ -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.Modules.Synchronization.Abstractions; using Microsoft.Extensions.DependencyInjection; namespace Backbone.Modules.Synchronization.Infrastructure.Persistence.Repository; diff --git a/Modules/Synchronization/src/Synchronization.Infrastructure/Persistence/Repository/RelationshipsRepository.cs b/Modules/Synchronization/src/Synchronization.Infrastructure/Persistence/Repository/RelationshipsRepository.cs index 505dc4d391..8e2f0eae1e 100644 --- a/Modules/Synchronization/src/Synchronization.Infrastructure/Persistence/Repository/RelationshipsRepository.cs +++ b/Modules/Synchronization/src/Synchronization.Infrastructure/Persistence/Repository/RelationshipsRepository.cs @@ -1,4 +1,4 @@ -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Relationships; using Backbone.Modules.Synchronization.Infrastructure.Persistence.Database; using Microsoft.EntityFrameworkCore; diff --git a/Modules/Synchronization/src/Synchronization.Infrastructure/Synchronization.Infrastructure.csproj b/Modules/Synchronization/src/Synchronization.Infrastructure/Synchronization.Infrastructure.csproj index 81e04a0e40..f0e6a0e5c0 100644 --- a/Modules/Synchronization/src/Synchronization.Infrastructure/Synchronization.Infrastructure.csproj +++ b/Modules/Synchronization/src/Synchronization.Infrastructure/Synchronization.Infrastructure.csproj @@ -16,7 +16,7 @@ - + diff --git a/Modules/Synchronization/src/Synchronization.Infrastructure/packages.lock.json b/Modules/Synchronization/src/Synchronization.Infrastructure/packages.lock.json index 75924ed487..80b76a3038 100644 --- a/Modules/Synchronization/src/Synchronization.Infrastructure/packages.lock.json +++ b/Modules/Synchronization/src/Synchronization.Infrastructure/packages.lock.json @@ -780,43 +780,12 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, - "Backbone.Modules.Devices.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Files.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Messages.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Relationships.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, - "Backbone.Modules.Synchronization.Application": { + "Backbone.Modules.Synchronization.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Files.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Synchronization.Domain": "[1.0.0, )" } }, "Backbone.Modules.Synchronization.Contracts": { @@ -833,12 +802,6 @@ "Backbone.Tooling": "[1.0.0, )" } }, - "Backbone.Modules.Tokens.Contracts": { - "type": "Project", - "dependencies": { - "Backbone.BuildingBlocks.Domain": "[1.0.0, )" - } - }, "Backbone.Tooling": { "type": "Project", "dependencies": { @@ -927,16 +890,6 @@ "resolved": "12.1.1", "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", diff --git a/Modules/Synchronization/src/Synchronization.Application/ApplicationConfiguration.cs b/Modules/Synchronization/src/Synchronization.Module/ApplicationConfiguration.cs similarity index 79% rename from Modules/Synchronization/src/Synchronization.Application/ApplicationConfiguration.cs rename to Modules/Synchronization/src/Synchronization.Module/ApplicationConfiguration.cs index 828133ab9f..c80ff5c2b8 100644 --- a/Modules/Synchronization/src/Synchronization.Application/ApplicationConfiguration.cs +++ b/Modules/Synchronization/src/Synchronization.Module/ApplicationConfiguration.cs @@ -1,7 +1,7 @@ using System.ComponentModel.DataAnnotations; using Backbone.BuildingBlocks.Application; -namespace Backbone.Modules.Synchronization.Application; +namespace Backbone.Modules.Synchronization.Module; public class ApplicationConfiguration { diff --git a/Modules/Synchronization/src/Synchronization.Application/ApplicationErrors.cs b/Modules/Synchronization/src/Synchronization.Module/ApplicationErrors.cs similarity index 98% rename from Modules/Synchronization/src/Synchronization.Application/ApplicationErrors.cs rename to Modules/Synchronization/src/Synchronization.Module/ApplicationErrors.cs index af6e482c4a..63182e93e4 100644 --- a/Modules/Synchronization/src/Synchronization.Application/ApplicationErrors.cs +++ b/Modules/Synchronization/src/Synchronization.Module/ApplicationErrors.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; -namespace Backbone.Modules.Synchronization.Application; +namespace Backbone.Modules.Synchronization.Module; public static class ApplicationErrors { diff --git a/Modules/Synchronization/src/Synchronization.Application/Extensions/IServiceCollectionExtensions.cs b/Modules/Synchronization/src/Synchronization.Module/ApplicationServiceCollectionExtensions.cs similarity index 52% rename from Modules/Synchronization/src/Synchronization.Application/Extensions/IServiceCollectionExtensions.cs rename to Modules/Synchronization/src/Synchronization.Module/ApplicationServiceCollectionExtensions.cs index 482ba70b19..5a99cf69c7 100644 --- a/Modules/Synchronization/src/Synchronization.Application/Extensions/IServiceCollectionExtensions.cs +++ b/Modules/Synchronization/src/Synchronization.Module/ApplicationServiceCollectionExtensions.cs @@ -1,16 +1,13 @@ using System.Reflection; -using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Application.MediatR; -using Backbone.Modules.Synchronization.Application.Datawallets.Commands.PushDatawalletModifications; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.PushDatawalletModifications; using FluentValidation; -using MediatR; using Microsoft.Extensions.DependencyInjection; -using ValidationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ValidationException; -namespace Backbone.Modules.Synchronization.Application.Extensions; +namespace Backbone.Modules.Synchronization.Module; -public static class IServiceCollectionExtensions +internal static class ApplicationServiceCollectionExtensions { extension(IServiceCollection services) { @@ -47,30 +44,3 @@ from i in t.GetInterfaces() return domainEventHandlerTypes; } } - -public class RequestValidationBehavior : IPipelineBehavior - where TRequest : notnull -{ - private readonly IEnumerable> _validators; - - public RequestValidationBehavior(IEnumerable> validators) - { - _validators = validators; - } - - public Task Handle(TRequest request, RequestHandlerDelegate next, CancellationToken cancellationToken) - { - var context = new ValidationContext(request); - - var failures = _validators - .Select(v => v.Validate(context)) - .SelectMany(result => result.Errors) - .Where(f => f != null) - .ToList(); - - if (failures.Count != 0) - throw new ValidationException(new ApplicationError(failures.First().ErrorCode, failures.First().ErrorMessage)); - - return next(cancellationToken); - } -} diff --git a/Modules/Synchronization/src/Synchronization.Application/AssemblyInfo.cs b/Modules/Synchronization/src/Synchronization.Module/AssemblyInfo.cs similarity index 83% rename from Modules/Synchronization/src/Synchronization.Application/AssemblyInfo.cs rename to Modules/Synchronization/src/Synchronization.Module/AssemblyInfo.cs index 04eaa5e4e7..2f1f880988 100644 --- a/Modules/Synchronization/src/Synchronization.Application/AssemblyInfo.cs +++ b/Modules/Synchronization/src/Synchronization.Module/AssemblyInfo.cs @@ -1,3 +1,3 @@ using System.Runtime.CompilerServices; -[assembly: InternalsVisibleTo("Backbone.Modules.Synchronization.Application.Tests")] +[assembly: InternalsVisibleTo("Backbone.Modules.Synchronization.Module.Tests")] diff --git a/Modules/Synchronization/src/Synchronization.Application/Extensions/IEventBusExtensions.cs b/Modules/Synchronization/src/Synchronization.Module/EventBusExtensions.cs similarity index 65% rename from Modules/Synchronization/src/Synchronization.Application/Extensions/IEventBusExtensions.cs rename to Modules/Synchronization/src/Synchronization.Module/EventBusExtensions.cs index b082ea25f2..4f03b563eb 100644 --- a/Modules/Synchronization/src/Synchronization.Application/Extensions/IEventBusExtensions.cs +++ b/Modules/Synchronization/src/Synchronization.Module/EventBusExtensions.cs @@ -3,23 +3,23 @@ using Backbone.Modules.Files.Contracts.DomainEvents; using Backbone.Modules.Messages.Contracts.DomainEvents; using Backbone.Modules.Relationships.Contracts.DomainEvents; -using Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.FileOwnershipClaimed; -using Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.FileOwnershipLocked; -using Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.IdentityDeletionProcessStarted; -using Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.IdentityDeletionProcessStatusChanged; -using Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.MessageCreated; -using Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.PeerDeleted; -using Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.PeerDeletionCancelled; -using Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.PeerFeatureFlagsChanged; -using Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.PeerToBeDeleted; -using Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.RelationshipReactivationCompleted; -using Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.RelationshipReactivationRequested; -using Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.RelationshipStatusChanged; -using Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.RelationshipTemplateAllocationsExhausted; -using Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.TokenLocked; +using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.FileOwnershipClaimed; +using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.FileOwnershipLocked; +using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.IdentityDeletionProcessStarted; +using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.IdentityDeletionProcessStatusChanged; +using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.MessageCreated; +using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerDeleted; +using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerDeletionCancelled; +using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerFeatureFlagsChanged; +using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerToBeDeleted; +using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipReactivationCompleted; +using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipReactivationRequested; +using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipStatusChanged; +using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipTemplateAllocationsExhausted; +using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.TokenLocked; using Backbone.Modules.Tokens.Contracts.DomainEvents; -namespace Backbone.Modules.Synchronization.Application.Extensions; +namespace Backbone.Modules.Synchronization.Module; public static class IEventBusExtensions { diff --git a/Modules/Synchronization/src/Synchronization.Application/Datawallets/Commands/DeleteDatawalletsOfIdentity/DeleteDatawalletsOfIdentityCommand.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/DeleteDatawalletsOfIdentity/DeleteDatawalletsOfIdentityCommand.cs similarity index 50% rename from Modules/Synchronization/src/Synchronization.Application/Datawallets/Commands/DeleteDatawalletsOfIdentity/DeleteDatawalletsOfIdentityCommand.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/DeleteDatawalletsOfIdentity/DeleteDatawalletsOfIdentityCommand.cs index a584a74c5b..398e32d884 100644 --- a/Modules/Synchronization/src/Synchronization.Application/Datawallets/Commands/DeleteDatawalletsOfIdentity/DeleteDatawalletsOfIdentityCommand.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/DeleteDatawalletsOfIdentity/DeleteDatawalletsOfIdentityCommand.cs @@ -1,6 +1,6 @@ -using MediatR; +using MediatR; -namespace Backbone.Modules.Synchronization.Application.Datawallets.Commands.DeleteDatawalletsOfIdentity; +namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.DeleteDatawalletsOfIdentity; public class DeleteDatawalletsOfIdentityCommand : IRequest { diff --git a/Modules/Synchronization/src/Synchronization.Application/Datawallets/Commands/DeleteDatawalletsOfIdentity/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/DeleteDatawalletsOfIdentity/Handler.cs similarity index 77% rename from Modules/Synchronization/src/Synchronization.Application/Datawallets/Commands/DeleteDatawalletsOfIdentity/Handler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/DeleteDatawalletsOfIdentity/Handler.cs index 406f43e51f..0aa6fa8efb 100644 --- a/Modules/Synchronization/src/Synchronization.Application/Datawallets/Commands/DeleteDatawalletsOfIdentity/Handler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/DeleteDatawalletsOfIdentity/Handler.cs @@ -1,9 +1,9 @@ -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities; using MediatR; using Microsoft.EntityFrameworkCore; -namespace Backbone.Modules.Synchronization.Application.Datawallets.Commands.DeleteDatawalletsOfIdentity; +namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.DeleteDatawalletsOfIdentity; public class Handler : IRequestHandler { diff --git a/Modules/Synchronization/src/Synchronization.Application/Datawallets/Commands/DeleteDatawalletsOfIdentity/Validator.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/DeleteDatawalletsOfIdentity/Validator.cs similarity index 65% rename from Modules/Synchronization/src/Synchronization.Application/Datawallets/Commands/DeleteDatawalletsOfIdentity/Validator.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/DeleteDatawalletsOfIdentity/Validator.cs index 963bd4a803..64ace8698b 100644 --- a/Modules/Synchronization/src/Synchronization.Application/Datawallets/Commands/DeleteDatawalletsOfIdentity/Validator.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/DeleteDatawalletsOfIdentity/Validator.cs @@ -1,8 +1,8 @@ -using Backbone.BuildingBlocks.Application.Extensions; +using Backbone.BuildingBlocks.Application.Extensions; using Backbone.DevelopmentKit.Identity.ValueObjects; using FluentValidation; -namespace Backbone.Modules.Synchronization.Application.Datawallets.Commands.DeleteDatawalletsOfIdentity; +namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.DeleteDatawalletsOfIdentity; public class Validator : AbstractValidator { diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/Endpoint.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/Endpoint.cs new file mode 100644 index 0000000000..f57a5c76cc --- /dev/null +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/Endpoint.cs @@ -0,0 +1,28 @@ +using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; + +namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.GetDatawallet; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapGetDatawalletEndpoint(this RouteGroupBuilder group) + { + group.MapGet("", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status404NotFound); + return group; + } + + private static async Task Handle(IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new GetDatawalletQuery(), cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/GetDatawalletQuery.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/GetDatawalletQuery.cs new file mode 100644 index 0000000000..86ac244eab --- /dev/null +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/GetDatawalletQuery.cs @@ -0,0 +1,6 @@ +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; +using MediatR; + +namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.GetDatawallet; + +public class GetDatawalletQuery : IRequest; diff --git a/Modules/Synchronization/src/Synchronization.Application/Datawallets/Queries/GetDatawallet/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/Handler.cs similarity index 80% rename from Modules/Synchronization/src/Synchronization.Application/Datawallets/Queries/GetDatawallet/Handler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/Handler.cs index 6422d39a1a..cd954d16bb 100644 --- a/Modules/Synchronization/src/Synchronization.Application/Datawallets/Queries/GetDatawallet/Handler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/Handler.cs @@ -1,12 +1,12 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Synchronization.Application.Datawallets.DTOs; -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities; using MediatR; -namespace Backbone.Modules.Synchronization.Application.Datawallets.Queries.GetDatawallet; +namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.GetDatawallet; internal class Handler : IRequestHandler { diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Endpoint.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Endpoint.cs new file mode 100644 index 0000000000..4489a6227e --- /dev/null +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Endpoint.cs @@ -0,0 +1,40 @@ +using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; +using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; +using Backbone.BuildingBlocks.Application.Pagination; +using Microsoft.Extensions.Options; +using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; + +namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.ListModifications; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapListModificationsEndpoint(this RouteGroupBuilder group) + { + group.MapGet("Modifications", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest); + return group; + } + + private static async Task Handle([FromQuery(Name = "PageNumber")] int? pageNumber, [FromQuery(Name = "PageSize")] int? pageSize, + [FromQuery] int? localIndex, [FromHeader(Name = "X-Supported-Datawallet-Version")] ushort? supportedDatawalletVersion, + IMediator mediator, IOptions options, CancellationToken cancellationToken) + { + var paginationFilter = new PaginationFilter { PageNumber = pageNumber ?? 1, PageSize = pageSize }; + if (paginationFilter.PageSize > options.Value.Pagination.MaxPageSize) + throw new ApplicationException(GenericApplicationErrors.Validation.InvalidPageSize(options.Value.Pagination.MaxPageSize)); + paginationFilter.PageSize ??= options.Value.Pagination.DefaultPageSize; + + var response = await mediator.Send(new ListModificationsQuery + { + PaginationFilter = paginationFilter, LocalIndex = localIndex, SupportedDatawalletVersion = supportedDatawalletVersion ?? 0 + }, cancellationToken); + return EnvelopeHttpResults.Paged(response); + } +} diff --git a/Modules/Synchronization/src/Synchronization.Application/Datawallets/Queries/ListModifications/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Handler.cs similarity index 87% rename from Modules/Synchronization/src/Synchronization.Application/Datawallets/Queries/ListModifications/Handler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Handler.cs index 9bd3d0f53e..59fa94ceee 100644 --- a/Modules/Synchronization/src/Synchronization.Application/Datawallets/Queries/ListModifications/Handler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Handler.cs @@ -1,12 +1,12 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Synchronization.Application.Datawallets.DTOs; -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities; using MediatR; -namespace Backbone.Modules.Synchronization.Application.Datawallets.Queries.ListModifications; +namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.ListModifications; public class Handler : IRequestHandler { diff --git a/Modules/Synchronization/src/Synchronization.Application/Datawallets/Queries/ListModifications/ListModificationsQuery.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/ListModificationsQuery.cs similarity index 78% rename from Modules/Synchronization/src/Synchronization.Application/Datawallets/Queries/ListModifications/ListModificationsQuery.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/ListModificationsQuery.cs index bb0188497e..5d033b9132 100644 --- a/Modules/Synchronization/src/Synchronization.Application/Datawallets/Queries/ListModifications/ListModificationsQuery.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/ListModificationsQuery.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.Pagination; using MediatR; -namespace Backbone.Modules.Synchronization.Application.Datawallets.Queries.ListModifications; +namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.ListModifications; public class ListModificationsQuery : IRequest { diff --git a/Modules/Synchronization/src/Synchronization.Application/Datawallets/Queries/ListModifications/ListModificationsResponse.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/ListModificationsResponse.cs similarity index 68% rename from Modules/Synchronization/src/Synchronization.Application/Datawallets/Queries/ListModifications/ListModificationsResponse.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/ListModificationsResponse.cs index cfb919f30d..c5f426cb84 100644 --- a/Modules/Synchronization/src/Synchronization.Application/Datawallets/Queries/ListModifications/ListModificationsResponse.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/ListModificationsResponse.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.Modules.Synchronization.Application.Datawallets.DTOs; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; -namespace Backbone.Modules.Synchronization.Application.Datawallets.Queries.ListModifications; +namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.ListModifications; public class ListModificationsResponse : PagedResponse { diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Endpoint.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Endpoint.cs new file mode 100644 index 0000000000..7cbdae91f7 --- /dev/null +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Endpoint.cs @@ -0,0 +1,42 @@ +using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; + +namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.PushDatawalletModifications; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapPushDatawalletModificationsEndpoint(this RouteGroupBuilder group) + { + group.MapPost("Modifications", Handle) + .Accepts(isOptional: true, "application/json", "application/*+json") + .Produces>(StatusCodes.Status201Created) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status404NotFound); + return group; + } + + private static async Task Handle([FromBody] PushDatawalletModificationsRequestBody? request, + [FromHeader(Name = "X-Supported-Datawallet-Version")] ushort? supportedDatawalletVersion, IMediator mediator, CancellationToken cancellationToken) + { + if (request == null || request.Modifications == null || request.Modifications.Any(m => m != null && (m.Collection == null || m.ObjectIdentifier == null))) + throw new BadHttpRequestException("Required request fields must not be null."); + + var response = await mediator.Send(new PushDatawalletModificationsCommand + { + Modifications = request.Modifications, LocalIndex = request.LocalIndex, SupportedDatawalletVersion = supportedDatawalletVersion ?? 0 + }, cancellationToken); + return EnvelopeHttpResults.Created("", response); + } +} + +public class PushDatawalletModificationsRequestBody +{ + public required long LocalIndex { get; set; } + public required PushDatawalletModificationItem[] Modifications { get; set; } +} diff --git a/Modules/Synchronization/src/Synchronization.Application/Datawallets/Commands/PushDatawalletModifications/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Handler.cs similarity index 95% rename from Modules/Synchronization/src/Synchronization.Application/Datawallets/Commands/PushDatawalletModifications/Handler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Handler.cs index c8423df65c..b654abe6ee 100644 --- a/Modules/Synchronization/src/Synchronization.Application/Datawallets/Commands/PushDatawalletModifications/Handler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Handler.cs @@ -2,14 +2,14 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.BuildingBlocks.Application.Extensions; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Synchronization.Application.Datawallets.DTOs; -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities; using MediatR; using Microsoft.EntityFrameworkCore; using static Backbone.Modules.Synchronization.Domain.Entities.Datawallet; -namespace Backbone.Modules.Synchronization.Application.Datawallets.Commands.PushDatawalletModifications; +namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.PushDatawalletModifications; public class Handler : IRequestHandler { diff --git a/Modules/Synchronization/src/Synchronization.Application/Datawallets/Commands/PushDatawalletModifications/PushDatawalletModificationsCommand.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/PushDatawalletModificationsCommand.cs similarity index 63% rename from Modules/Synchronization/src/Synchronization.Application/Datawallets/Commands/PushDatawalletModifications/PushDatawalletModificationsCommand.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/PushDatawalletModificationsCommand.cs index c3e53a5eb7..670c7d1c44 100644 --- a/Modules/Synchronization/src/Synchronization.Application/Datawallets/Commands/PushDatawalletModifications/PushDatawalletModificationsCommand.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/PushDatawalletModificationsCommand.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Synchronization.Application.Datawallets.DTOs; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; using MediatR; -namespace Backbone.Modules.Synchronization.Application.Datawallets.Commands.PushDatawalletModifications; +namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.PushDatawalletModifications; public class PushDatawalletModificationsCommand : IRequest { diff --git a/Modules/Synchronization/src/Synchronization.Application/Datawallets/Commands/PushDatawalletModifications/PushDatawalletModificationsResponse.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/PushDatawalletModificationsResponse.cs similarity index 86% rename from Modules/Synchronization/src/Synchronization.Application/Datawallets/Commands/PushDatawalletModifications/PushDatawalletModificationsResponse.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/PushDatawalletModificationsResponse.cs index 701383f5a7..1d7ff26e56 100644 --- a/Modules/Synchronization/src/Synchronization.Application/Datawallets/Commands/PushDatawalletModifications/PushDatawalletModificationsResponse.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/PushDatawalletModificationsResponse.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Synchronization.Domain.Entities; -namespace Backbone.Modules.Synchronization.Application.Datawallets.Commands.PushDatawalletModifications; +namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.PushDatawalletModifications; public class PushDatawalletModificationsResponse { diff --git a/Modules/Synchronization/src/Synchronization.Application/Datawallets/Commands/PushDatawalletModifications/Validator.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Validator.cs similarity index 79% rename from Modules/Synchronization/src/Synchronization.Application/Datawallets/Commands/PushDatawalletModifications/Validator.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Validator.cs index 420242f1d7..1cf5aefa6c 100644 --- a/Modules/Synchronization/src/Synchronization.Application/Datawallets/Commands/PushDatawalletModifications/Validator.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Validator.cs @@ -1,9 +1,9 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.FluentValidation; -using Backbone.Modules.Synchronization.Application.Datawallets.DTOs; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; using FluentValidation; -namespace Backbone.Modules.Synchronization.Application.Datawallets.Commands.PushDatawalletModifications; +namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.PushDatawalletModifications; // ReSharper disable once UnusedMember.Global public class Validator : AbstractValidator diff --git a/Modules/Synchronization/src/Synchronization.Application/Datawallets/DTOs/CreatedDatawalletModificationDTO.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/Shared/CreatedDatawalletModificationDTO.cs similarity index 85% rename from Modules/Synchronization/src/Synchronization.Application/Datawallets/DTOs/CreatedDatawalletModificationDTO.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/Shared/CreatedDatawalletModificationDTO.cs index f0139e65f2..8f9d0765b4 100644 --- a/Modules/Synchronization/src/Synchronization.Application/Datawallets/DTOs/CreatedDatawalletModificationDTO.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/Shared/CreatedDatawalletModificationDTO.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Synchronization.Domain.Entities; -namespace Backbone.Modules.Synchronization.Application.Datawallets.DTOs; +namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; public class CreatedDatawalletModificationDTO { diff --git a/Modules/Synchronization/src/Synchronization.Application/Datawallets/DTOs/DatawalletDTO.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/Shared/DatawalletDTO.cs similarity index 74% rename from Modules/Synchronization/src/Synchronization.Application/Datawallets/DTOs/DatawalletDTO.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/Shared/DatawalletDTO.cs index 9a4d4517f4..9b23fea472 100644 --- a/Modules/Synchronization/src/Synchronization.Application/Datawallets/DTOs/DatawalletDTO.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/Shared/DatawalletDTO.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Synchronization.Domain.Entities; -namespace Backbone.Modules.Synchronization.Application.Datawallets.DTOs; +namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; public class DatawalletDTO { diff --git a/Modules/Synchronization/src/Synchronization.Application/Datawallets/DTOs/DatawalletModificationDTO.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/Shared/DatawalletModificationDTO.cs similarity index 96% rename from Modules/Synchronization/src/Synchronization.Application/Datawallets/DTOs/DatawalletModificationDTO.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/Shared/DatawalletModificationDTO.cs index e8ff4c7563..85aa8d0d02 100644 --- a/Modules/Synchronization/src/Synchronization.Application/Datawallets/DTOs/DatawalletModificationDTO.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/Shared/DatawalletModificationDTO.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Synchronization.Domain.Entities; -namespace Backbone.Modules.Synchronization.Application.Datawallets.DTOs; +namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; public class DatawalletModificationDTO { diff --git a/Modules/Synchronization/src/Synchronization.Application/Datawallets/DTOs/PushDatawalletModificationItem.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/Shared/PushDatawalletModificationItem.cs similarity index 92% rename from Modules/Synchronization/src/Synchronization.Application/Datawallets/DTOs/PushDatawalletModificationItem.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/Shared/PushDatawalletModificationItem.cs index 25ec2707fd..2d7b248fc5 100644 --- a/Modules/Synchronization/src/Synchronization.Application/Datawallets/DTOs/PushDatawalletModificationItem.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/Shared/PushDatawalletModificationItem.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.FluentValidation; using FluentValidation; -namespace Backbone.Modules.Synchronization.Application.Datawallets.DTOs; +namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; public class PushDatawalletModificationItem { diff --git a/Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/FileOwnershipClaimed/FileOwnershipClaimedDomainEventHandler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/FileOwnershipClaimed/FileOwnershipClaimedDomainEventHandler.cs similarity index 83% rename from Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/FileOwnershipClaimed/FileOwnershipClaimedDomainEventHandler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/FileOwnershipClaimed/FileOwnershipClaimedDomainEventHandler.cs index 0bb25cd0b1..2f803906e9 100644 --- a/Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/FileOwnershipClaimed/FileOwnershipClaimedDomainEventHandler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/FileOwnershipClaimed/FileOwnershipClaimedDomainEventHandler.cs @@ -1,11 +1,11 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Files.Contracts.DomainEvents; -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.FileOwnershipClaimed; +namespace Backbone.Modules.Synchronization.Module.Features.ExternalEvents.FileOwnershipClaimed; public class FileOwnershipClaimedDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/FileOwnershipLocked/FileOwnershipLockedDomainEventHandler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/FileOwnershipLocked/FileOwnershipLockedDomainEventHandler.cs similarity index 88% rename from Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/FileOwnershipLocked/FileOwnershipLockedDomainEventHandler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/FileOwnershipLocked/FileOwnershipLockedDomainEventHandler.cs index 52db6cfd03..d2d34b0f0d 100644 --- a/Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/FileOwnershipLocked/FileOwnershipLockedDomainEventHandler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/FileOwnershipLocked/FileOwnershipLockedDomainEventHandler.cs @@ -1,11 +1,11 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Files.Contracts.DomainEvents; -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.FileOwnershipLocked; +namespace Backbone.Modules.Synchronization.Module.Features.ExternalEvents.FileOwnershipLocked; public class FileOwnershipLockedDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/IdentityDeletionProcessStarted/IdentityDeletionProcessStartedDomainEventHandler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/IdentityDeletionProcessStarted/IdentityDeletionProcessStartedDomainEventHandler.cs similarity index 91% rename from Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/IdentityDeletionProcessStarted/IdentityDeletionProcessStartedDomainEventHandler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/IdentityDeletionProcessStarted/IdentityDeletionProcessStartedDomainEventHandler.cs index 9afa0de987..a7af8dcda7 100644 --- a/Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/IdentityDeletionProcessStarted/IdentityDeletionProcessStartedDomainEventHandler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/IdentityDeletionProcessStarted/IdentityDeletionProcessStartedDomainEventHandler.cs @@ -1,11 +1,11 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Devices.Contracts.DomainEvents; -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.IdentityDeletionProcessStarted; +namespace Backbone.Modules.Synchronization.Module.Features.ExternalEvents.IdentityDeletionProcessStarted; public class IdentityDeletionProcessStartedDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/IdentityDeletionProcessStatusChanged/IdentityDeletionProcessStatusChangedDomainEventHandler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/IdentityDeletionProcessStatusChanged/IdentityDeletionProcessStatusChangedDomainEventHandler.cs similarity index 87% rename from Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/IdentityDeletionProcessStatusChanged/IdentityDeletionProcessStatusChangedDomainEventHandler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/IdentityDeletionProcessStatusChanged/IdentityDeletionProcessStatusChangedDomainEventHandler.cs index 16496cf259..f388d967cb 100644 --- a/Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/IdentityDeletionProcessStatusChanged/IdentityDeletionProcessStatusChangedDomainEventHandler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/IdentityDeletionProcessStatusChanged/IdentityDeletionProcessStatusChangedDomainEventHandler.cs @@ -1,11 +1,11 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Devices.Contracts.DomainEvents; -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.IdentityDeletionProcessStatusChanged; +namespace Backbone.Modules.Synchronization.Module.Features.ExternalEvents.IdentityDeletionProcessStatusChanged; public class IdentityDeletionProcessStatusChangedDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/MessageCreated/MessageCreatedDomainEventHandler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/MessageCreated/MessageCreatedDomainEventHandler.cs similarity index 94% rename from Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/MessageCreated/MessageCreatedDomainEventHandler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/MessageCreated/MessageCreatedDomainEventHandler.cs index 067659812a..a83a46e086 100644 --- a/Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/MessageCreated/MessageCreatedDomainEventHandler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/MessageCreated/MessageCreatedDomainEventHandler.cs @@ -1,12 +1,12 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Messages.Contracts.DomainEvents; -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Relationships; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.MessageCreated; +namespace Backbone.Modules.Synchronization.Module.Features.ExternalEvents.MessageCreated; public class MessageCreatedDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/PeerDeleted/PeerDeletedDomainEventHandler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerDeleted/PeerDeletedDomainEventHandler.cs similarity index 85% rename from Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/PeerDeleted/PeerDeletedDomainEventHandler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerDeleted/PeerDeletedDomainEventHandler.cs index 898c2813e6..a5013dd19a 100644 --- a/Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/PeerDeleted/PeerDeletedDomainEventHandler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerDeleted/PeerDeletedDomainEventHandler.cs @@ -1,12 +1,12 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Relationships.Contracts.DomainEvents; -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using Backbone.Tooling; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.PeerDeleted; +namespace Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerDeleted; public class PeerDeletedDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/PeerDeletionCancelled/PeerDeletionCancelledDomainEventHandler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerDeletionCancelled/PeerDeletionCancelledDomainEventHandler.cs similarity index 85% rename from Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/PeerDeletionCancelled/PeerDeletionCancelledDomainEventHandler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerDeletionCancelled/PeerDeletionCancelledDomainEventHandler.cs index e78b3b1054..b2e5ecc266 100644 --- a/Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/PeerDeletionCancelled/PeerDeletionCancelledDomainEventHandler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerDeletionCancelled/PeerDeletionCancelledDomainEventHandler.cs @@ -1,11 +1,11 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Relationships.Contracts.DomainEvents; -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.PeerDeletionCancelled; +namespace Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerDeletionCancelled; public class PeerDeletionCancelledDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/PeerFeatureFlagsChanged/PeerFeatureFlagsChangedDomainEventHandler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerFeatureFlagsChanged/PeerFeatureFlagsChangedDomainEventHandler.cs similarity index 90% rename from Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/PeerFeatureFlagsChanged/PeerFeatureFlagsChangedDomainEventHandler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerFeatureFlagsChanged/PeerFeatureFlagsChangedDomainEventHandler.cs index e45973ada7..b5679cbc08 100644 --- a/Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/PeerFeatureFlagsChanged/PeerFeatureFlagsChangedDomainEventHandler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerFeatureFlagsChanged/PeerFeatureFlagsChangedDomainEventHandler.cs @@ -1,11 +1,11 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Relationships.Contracts.DomainEvents; -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.PeerFeatureFlagsChanged; +namespace Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerFeatureFlagsChanged; public class PeerFeatureFlagsChangedDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/PeerToBeDeleted/PeerToBeDeletedDomainEventHandler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerToBeDeleted/PeerToBeDeletedDomainEventHandler.cs similarity index 85% rename from Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/PeerToBeDeleted/PeerToBeDeletedDomainEventHandler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerToBeDeleted/PeerToBeDeletedDomainEventHandler.cs index 8ba69058bb..b794603840 100644 --- a/Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/PeerToBeDeleted/PeerToBeDeletedDomainEventHandler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerToBeDeleted/PeerToBeDeletedDomainEventHandler.cs @@ -1,11 +1,11 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Relationships.Contracts.DomainEvents; -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.PeerToBeDeleted; +namespace Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerToBeDeleted; public class PeerToBeDeletedDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/RelationshipReactivationCompleted/RelationshipReactivationCompletedDomainEventHandler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipReactivationCompleted/RelationshipReactivationCompletedDomainEventHandler.cs similarity index 88% rename from Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/RelationshipReactivationCompleted/RelationshipReactivationCompletedDomainEventHandler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipReactivationCompleted/RelationshipReactivationCompletedDomainEventHandler.cs index bca5cc8fcf..c8f1c63108 100644 --- a/Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/RelationshipReactivationCompleted/RelationshipReactivationCompletedDomainEventHandler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipReactivationCompleted/RelationshipReactivationCompletedDomainEventHandler.cs @@ -1,10 +1,10 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.Modules.Relationships.Contracts.DomainEvents; -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.RelationshipReactivationCompleted; +namespace Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipReactivationCompleted; public class RelationshipReactivationCompletedDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/RelationshipReactivationRequested/RelationshipReactivationRequestedDomainEventHandler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipReactivationRequested/RelationshipReactivationRequestedDomainEventHandler.cs similarity index 85% rename from Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/RelationshipReactivationRequested/RelationshipReactivationRequestedDomainEventHandler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipReactivationRequested/RelationshipReactivationRequestedDomainEventHandler.cs index bf3165349d..fc559abc5f 100644 --- a/Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/RelationshipReactivationRequested/RelationshipReactivationRequestedDomainEventHandler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipReactivationRequested/RelationshipReactivationRequestedDomainEventHandler.cs @@ -1,10 +1,10 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.Modules.Relationships.Contracts.DomainEvents; -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.RelationshipReactivationRequested; +namespace Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipReactivationRequested; public class RelationshipReactivationRequestedDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/RelationshipStatusChanged/RelationshipStatusChangedDomainEventHandler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipStatusChanged/RelationshipStatusChangedDomainEventHandler.cs similarity index 92% rename from Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/RelationshipStatusChanged/RelationshipStatusChangedDomainEventHandler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipStatusChanged/RelationshipStatusChangedDomainEventHandler.cs index 57e60f3f93..3bb7abdf21 100644 --- a/Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/RelationshipStatusChanged/RelationshipStatusChangedDomainEventHandler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipStatusChanged/RelationshipStatusChangedDomainEventHandler.cs @@ -1,10 +1,10 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.Modules.Relationships.Contracts.DomainEvents; -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.RelationshipStatusChanged; +namespace Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipStatusChanged; public class RelationshipStatusChangedDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/RelationshipTemplateAllocationsExhausted/RelationshipTemplateAllocationsExhaustedDomainEventHandler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipTemplateAllocationsExhausted/RelationshipTemplateAllocationsExhaustedDomainEventHandler.cs similarity index 83% rename from Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/RelationshipTemplateAllocationsExhausted/RelationshipTemplateAllocationsExhaustedDomainEventHandler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipTemplateAllocationsExhausted/RelationshipTemplateAllocationsExhaustedDomainEventHandler.cs index c97248c78f..0abe099a05 100644 --- a/Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/RelationshipTemplateAllocationsExhausted/RelationshipTemplateAllocationsExhaustedDomainEventHandler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipTemplateAllocationsExhausted/RelationshipTemplateAllocationsExhaustedDomainEventHandler.cs @@ -1,10 +1,10 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.Modules.Relationships.Contracts.DomainEvents; -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.RelationshipTemplateAllocationsExhausted; +namespace Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipTemplateAllocationsExhausted; public class RelationshipTemplateAllocationsExhaustedDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/TokenLocked/TokenLockedDomainEventHandler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/TokenLocked/TokenLockedDomainEventHandler.cs similarity index 76% rename from Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/TokenLocked/TokenLockedDomainEventHandler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/TokenLocked/TokenLockedDomainEventHandler.cs index 2ee33e4ccb..aacda0221c 100644 --- a/Modules/Synchronization/src/Synchronization.Application/DomainEvents/Incoming/TokenLocked/TokenLockedDomainEventHandler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/TokenLocked/TokenLockedDomainEventHandler.cs @@ -1,9 +1,9 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using Backbone.Modules.Tokens.Contracts.DomainEvents; -namespace Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.TokenLocked; +namespace Backbone.Modules.Synchronization.Module.Features.ExternalEvents.TokenLocked; public class TokenLockedDomainEventHandler : IDomainEventHandler { diff --git a/Modules/Synchronization/src/Synchronization.Application/Identities/IdentityDeleter.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs similarity index 71% rename from Modules/Synchronization/src/Synchronization.Application/Identities/IdentityDeleter.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs index 01d4ace148..ea84e8e192 100644 --- a/Modules/Synchronization/src/Synchronization.Application/Identities/IdentityDeleter.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs @@ -1,11 +1,11 @@ -using Backbone.BuildingBlocks.Application.Identities; +using Backbone.BuildingBlocks.Application.Identities; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Synchronization.Application.Datawallets.Commands.DeleteDatawalletsOfIdentity; -using Backbone.Modules.Synchronization.Application.SyncRuns.Commands.DeleteExternalEventsOfIdentity; -using Backbone.Modules.Synchronization.Application.SyncRuns.Commands.DeleteSyncRunsOfIdentity; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.DeleteDatawalletsOfIdentity; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteExternalEventsOfIdentity; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteSyncRunsOfIdentity; using MediatR; -namespace Backbone.Modules.Synchronization.Application.Identities; +namespace Backbone.Modules.Synchronization.Module.Features.Identities.DeleteIdentity; public class IdentityDeleter : IIdentityDeleter { diff --git a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/DeleteExternalEventsOfIdentity/DeleteSyncRunsOfIdentityCommand.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteExternalEventsOfIdentity/DeleteExternalEventsOfIdentityCommand.cs similarity index 50% rename from Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/DeleteExternalEventsOfIdentity/DeleteSyncRunsOfIdentityCommand.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteExternalEventsOfIdentity/DeleteExternalEventsOfIdentityCommand.cs index 4a181e3f9b..ff55811391 100644 --- a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/DeleteExternalEventsOfIdentity/DeleteSyncRunsOfIdentityCommand.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteExternalEventsOfIdentity/DeleteExternalEventsOfIdentityCommand.cs @@ -1,6 +1,6 @@ -using MediatR; +using MediatR; -namespace Backbone.Modules.Synchronization.Application.SyncRuns.Commands.DeleteExternalEventsOfIdentity; +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteExternalEventsOfIdentity; public class DeleteExternalEventsOfIdentityCommand : IRequest { diff --git a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/DeleteExternalEventsOfIdentity/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteExternalEventsOfIdentity/Handler.cs similarity index 77% rename from Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/DeleteExternalEventsOfIdentity/Handler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteExternalEventsOfIdentity/Handler.cs index 76bb79dbc4..924f692bb6 100644 --- a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/DeleteExternalEventsOfIdentity/Handler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteExternalEventsOfIdentity/Handler.cs @@ -1,9 +1,9 @@ -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using MediatR; using Microsoft.EntityFrameworkCore; -namespace Backbone.Modules.Synchronization.Application.SyncRuns.Commands.DeleteExternalEventsOfIdentity; +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteExternalEventsOfIdentity; public class Handler : IRequestHandler { diff --git a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/DeleteExternalEventsOfIdentity/Validator.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteExternalEventsOfIdentity/Validator.cs similarity index 65% rename from Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/DeleteExternalEventsOfIdentity/Validator.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteExternalEventsOfIdentity/Validator.cs index 2c480a6575..3e355204c6 100644 --- a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/DeleteExternalEventsOfIdentity/Validator.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteExternalEventsOfIdentity/Validator.cs @@ -1,8 +1,8 @@ -using Backbone.BuildingBlocks.Application.Extensions; +using Backbone.BuildingBlocks.Application.Extensions; using Backbone.DevelopmentKit.Identity.ValueObjects; using FluentValidation; -namespace Backbone.Modules.Synchronization.Application.SyncRuns.Commands.DeleteExternalEventsOfIdentity; +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteExternalEventsOfIdentity; public class Validator : AbstractValidator { diff --git a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/DeleteSyncRunsOfIdentity/DeleteSyncRunsOfIdentityCommand.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteSyncRunsOfIdentity/DeleteSyncRunsOfIdentityCommand.cs similarity index 50% rename from Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/DeleteSyncRunsOfIdentity/DeleteSyncRunsOfIdentityCommand.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteSyncRunsOfIdentity/DeleteSyncRunsOfIdentityCommand.cs index e98445b6f7..a2a29aa0c9 100644 --- a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/DeleteSyncRunsOfIdentity/DeleteSyncRunsOfIdentityCommand.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteSyncRunsOfIdentity/DeleteSyncRunsOfIdentityCommand.cs @@ -1,6 +1,6 @@ -using MediatR; +using MediatR; -namespace Backbone.Modules.Synchronization.Application.SyncRuns.Commands.DeleteSyncRunsOfIdentity; +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteSyncRunsOfIdentity; public class DeleteSyncRunsOfIdentityCommand : IRequest { diff --git a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/DeleteSyncRunsOfIdentity/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteSyncRunsOfIdentity/Handler.cs similarity index 78% rename from Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/DeleteSyncRunsOfIdentity/Handler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteSyncRunsOfIdentity/Handler.cs index 66e2bdb493..8f13b1fe87 100644 --- a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/DeleteSyncRunsOfIdentity/Handler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteSyncRunsOfIdentity/Handler.cs @@ -1,9 +1,9 @@ -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using MediatR; using Microsoft.EntityFrameworkCore; -namespace Backbone.Modules.Synchronization.Application.SyncRuns.Commands.DeleteSyncRunsOfIdentity; +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteSyncRunsOfIdentity; public class Handler : IRequestHandler { diff --git a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/DeleteSyncRunsOfIdentity/Validator.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteSyncRunsOfIdentity/Validator.cs similarity index 65% rename from Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/DeleteSyncRunsOfIdentity/Validator.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteSyncRunsOfIdentity/Validator.cs index 0082fbacfd..62d8b128b2 100644 --- a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/DeleteSyncRunsOfIdentity/Validator.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteSyncRunsOfIdentity/Validator.cs @@ -1,8 +1,8 @@ -using Backbone.BuildingBlocks.Application.Extensions; +using Backbone.BuildingBlocks.Application.Extensions; using Backbone.DevelopmentKit.Identity.ValueObjects; using FluentValidation; -namespace Backbone.Modules.Synchronization.Application.SyncRuns.Commands.DeleteSyncRunsOfIdentity; +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteSyncRunsOfIdentity; public class Validator : AbstractValidator { diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs new file mode 100644 index 0000000000..3f9cef198f --- /dev/null +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs @@ -0,0 +1,5 @@ +using MediatR; + +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.ExecuteHousekeeping; + +public class ExecuteHousekeepingCommand : IRequest; diff --git a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/ExecuteHousekeeping/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ExecuteHousekeeping/Handler.cs similarity index 84% rename from Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/ExecuteHousekeeping/Handler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ExecuteHousekeeping/Handler.cs index 436c0347da..ca06295427 100644 --- a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/ExecuteHousekeeping/Handler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ExecuteHousekeeping/Handler.cs @@ -1,11 +1,11 @@ -using Backbone.BuildingBlocks.Application.Housekeeping; -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.BuildingBlocks.Application.Housekeeping; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using MediatR; using Microsoft.EntityFrameworkCore; -namespace Backbone.Modules.Synchronization.Application.SyncRuns.Commands.ExecuteHousekeeping; +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.ExecuteHousekeeping; public class Handler : IRequestHandler { diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Endpoint.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Endpoint.cs new file mode 100644 index 0000000000..29ffadc18b --- /dev/null +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Endpoint.cs @@ -0,0 +1,42 @@ +using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeExternalEventSync; + +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeDatawalletVersionUpgrade; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapFinalizeDatawalletVersionUpgradeEndpoint(this RouteGroupBuilder group) + { + group.MapPut("{id}/FinalizeDatawalletVersionUpgrade", Handle) + .Accepts(isOptional: true, "application/json", "application/*+json") + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status404NotFound); + return group; + } + + private static async Task Handle([FromRoute] string id, [FromBody] FinalizeDatawalletVersionUpgradeRequest? request, IMediator mediator, CancellationToken cancellationToken) + { + if (request == null || request.DatawalletModifications == null || request.DatawalletModifications.Any(m => m != null && (m.Collection == null || m.ObjectIdentifier == null))) + throw new BadHttpRequestException("Required request fields must not be null."); + + var response = await mediator.Send(new FinalizeDatawalletVersionUpgradeSyncRunCommand + { + SyncRunId = id, NewDatawalletVersion = request.NewDatawalletVersion, DatawalletModifications = request.DatawalletModifications + }, cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} + +public class FinalizeDatawalletVersionUpgradeRequest +{ + public ushort NewDatawalletVersion { get; set; } + public List DatawalletModifications { get; set; } = []; +} diff --git a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/FinalizeSyncRun/FinalizeDatawalletVersionUpgradeSyncRunCommand.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/FinalizeDatawalletVersionUpgradeSyncRunCommand.cs similarity index 66% rename from Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/FinalizeSyncRun/FinalizeDatawalletVersionUpgradeSyncRunCommand.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/FinalizeDatawalletVersionUpgradeSyncRunCommand.cs index ffda2f5380..e1dd9fc41d 100644 --- a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/FinalizeSyncRun/FinalizeDatawalletVersionUpgradeSyncRunCommand.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/FinalizeDatawalletVersionUpgradeSyncRunCommand.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Synchronization.Application.Datawallets.DTOs; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; using MediatR; -namespace Backbone.Modules.Synchronization.Application.SyncRuns.Commands.FinalizeSyncRun; +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeDatawalletVersionUpgrade; public class FinalizeDatawalletVersionUpgradeSyncRunCommand : IRequest { diff --git a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/FinalizeSyncRun/FinalizeDatawalletVersionUpgradeSyncRunCommandValidator.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/FinalizeDatawalletVersionUpgradeSyncRunCommandValidator.cs similarity index 80% rename from Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/FinalizeSyncRun/FinalizeDatawalletVersionUpgradeSyncRunCommandValidator.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/FinalizeDatawalletVersionUpgradeSyncRunCommandValidator.cs index 8a18cc625f..943c8224b4 100644 --- a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/FinalizeSyncRun/FinalizeDatawalletVersionUpgradeSyncRunCommandValidator.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/FinalizeDatawalletVersionUpgradeSyncRunCommandValidator.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Extensions; using Backbone.BuildingBlocks.Application.FluentValidation; -using Backbone.Modules.Synchronization.Application.Datawallets.DTOs; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using FluentValidation; -namespace Backbone.Modules.Synchronization.Application.SyncRuns.Commands.FinalizeSyncRun; +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeDatawalletVersionUpgrade; // ReSharper disable once UnusedMember.Global public class FinalizeDatawalletVersionUpgradeSyncRunCommandValidator : AbstractValidator diff --git a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/FinalizeSyncRun/FinalizeDatawalletVersionUpgradeSyncRunResponse.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/FinalizeDatawalletVersionUpgradeSyncRunResponse.cs similarity index 56% rename from Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/FinalizeSyncRun/FinalizeDatawalletVersionUpgradeSyncRunResponse.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/FinalizeDatawalletVersionUpgradeSyncRunResponse.cs index b432419a06..8e7bc4c3df 100644 --- a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/FinalizeSyncRun/FinalizeDatawalletVersionUpgradeSyncRunResponse.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/FinalizeDatawalletVersionUpgradeSyncRunResponse.cs @@ -1,6 +1,6 @@ -using Backbone.Modules.Synchronization.Application.Datawallets.DTOs; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; -namespace Backbone.Modules.Synchronization.Application.SyncRuns.Commands.FinalizeSyncRun; +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeDatawalletVersionUpgrade; public class FinalizeDatawalletVersionUpgradeSyncRunResponse { diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Handler.cs new file mode 100644 index 0000000000..5a4414dcf4 --- /dev/null +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Handler.cs @@ -0,0 +1,54 @@ +using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; +using Backbone.Modules.Synchronization.Abstractions; +using Backbone.Modules.Synchronization.Domain.Entities; +using Backbone.Modules.Synchronization.Domain.Entities.Sync; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; +using MediatR; +using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; + +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeDatawalletVersionUpgrade; + +public class Handler : SyncRunFinalization, IRequestHandler +{ + public Handler(ISynchronizationDbContext dbContext, IUserContext userContext) : base(dbContext, userContext) + { + } + + public async Task Handle(FinalizeDatawalletVersionUpgradeSyncRunCommand request, CancellationToken cancellationToken) + { + _syncRun = await _dbContext.GetSyncRun(SyncRunId.Parse(request.SyncRunId), _activeIdentity, cancellationToken); + + if (_syncRun.Type != SyncRun.SyncRunType.DatawalletVersionUpgrade) + throw new ApplicationException(ApplicationErrors.SyncRuns.UnexpectedSyncRunType(SyncRun.SyncRunType.DatawalletVersionUpgrade)); + + CheckPreconditions(); + + _syncRun.FinalizeDatawalletVersionUpgrade(); + + _datawallet = await _dbContext.GetDatawalletForInsertion(_activeIdentity, cancellationToken); + + if (_datawallet == null) + { + _datawallet = new Datawallet(new Datawallet.DatawalletVersion(request.NewDatawalletVersion), _activeIdentity); + _dbContext.Set().Add(_datawallet); + } + else + { + _datawallet.Upgrade(new Datawallet.DatawalletVersion(request.NewDatawalletVersion)); + } + + var newModifications = AddModificationsToDatawallet(request.DatawalletModifications); + + await _dbContext.SaveChangesAsync(cancellationToken); + + var response = new FinalizeDatawalletVersionUpgradeSyncRunResponse + { + NewDatawalletModificationIndex = _datawallet.LatestModification?.Index, + DatawalletModifications = newModifications.Select(m => new CreatedDatawalletModificationDTO(m)) + }; + + return response; + } +} diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Endpoint.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Endpoint.cs new file mode 100644 index 0000000000..1c3c914b80 --- /dev/null +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Endpoint.cs @@ -0,0 +1,43 @@ +using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; + +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeExternalEventSync; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapFinalizeExternalEventSyncEndpoint(this RouteGroupBuilder group) + { + group.MapPut("{id}/FinalizeExternalEventSync", Handle) + .Accepts(isOptional: true, "application/json", "application/*+json") + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status404NotFound); + return group; + } + + private static async Task Handle([FromRoute] string id, [FromBody] FinalizeExternalEventSyncRequest? request, IMediator mediator, CancellationToken cancellationToken) + { + if (request == null || request.ExternalEventResults == null || request.DatawalletModifications == null || + request.ExternalEventResults.Any(r => r != null && r.ExternalEventId == null) || + request.DatawalletModifications.Any(m => m != null && (m.Collection == null || m.ObjectIdentifier == null))) + throw new BadHttpRequestException("Required request fields must not be null."); + + var response = await mediator.Send(new FinalizeExternalEventSyncSyncRunCommand + { + SyncRunId = id, ExternalEventResults = request.ExternalEventResults, DatawalletModifications = request.DatawalletModifications + }, cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} + +public class FinalizeExternalEventSyncRequest +{ + public List ExternalEventResults { get; set; } = []; + public List DatawalletModifications { get; set; } = []; +} diff --git a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/FinalizeSyncRun/FinalizeExternalEventSyncSyncRunCommand.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/FinalizeExternalEventSyncSyncRunCommand.cs similarity index 81% rename from Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/FinalizeSyncRun/FinalizeExternalEventSyncSyncRunCommand.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/FinalizeExternalEventSyncSyncRunCommand.cs index 01f0d0357f..b484453c6b 100644 --- a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/FinalizeSyncRun/FinalizeExternalEventSyncSyncRunCommand.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/FinalizeExternalEventSyncSyncRunCommand.cs @@ -1,8 +1,8 @@ using System.Text.Json.Serialization; -using Backbone.Modules.Synchronization.Application.Datawallets.DTOs; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; using MediatR; -namespace Backbone.Modules.Synchronization.Application.SyncRuns.Commands.FinalizeSyncRun; +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeExternalEventSync; public class FinalizeExternalEventSyncSyncRunCommand : IRequest { diff --git a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/FinalizeSyncRun/FinalizeExternalEventSyncSyncRunCommandValidator.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/FinalizeExternalEventSyncSyncRunCommandValidator.cs similarity index 86% rename from Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/FinalizeSyncRun/FinalizeExternalEventSyncSyncRunCommandValidator.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/FinalizeExternalEventSyncSyncRunCommandValidator.cs index b9f472091d..9d1176368b 100644 --- a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/FinalizeSyncRun/FinalizeExternalEventSyncSyncRunCommandValidator.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/FinalizeExternalEventSyncSyncRunCommandValidator.cs @@ -1,9 +1,9 @@ using Backbone.BuildingBlocks.Application.Extensions; -using Backbone.Modules.Synchronization.Application.Datawallets.DTOs; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using FluentValidation; -namespace Backbone.Modules.Synchronization.Application.SyncRuns.Commands.FinalizeSyncRun; +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeExternalEventSync; // ReSharper disable once UnusedMember.Global public class FinalizeExternalEventSyncSyncRunCommandValidator : AbstractValidator diff --git a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/FinalizeSyncRun/FinalizeExternalEventSyncSyncRunResponse.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/FinalizeExternalEventSyncSyncRunResponse.cs similarity index 62% rename from Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/FinalizeSyncRun/FinalizeExternalEventSyncSyncRunResponse.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/FinalizeExternalEventSyncSyncRunResponse.cs index ed7c576bac..f5e67ae69c 100644 --- a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/FinalizeSyncRun/FinalizeExternalEventSyncSyncRunResponse.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/FinalizeExternalEventSyncSyncRunResponse.cs @@ -1,6 +1,6 @@ -using Backbone.Modules.Synchronization.Application.Datawallets.DTOs; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; -namespace Backbone.Modules.Synchronization.Application.SyncRuns.Commands.FinalizeSyncRun; +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeExternalEventSync; public class FinalizeExternalEventSyncSyncRunResponse { diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Handler.cs new file mode 100644 index 0000000000..9640cad050 --- /dev/null +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Handler.cs @@ -0,0 +1,54 @@ +using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; +using Backbone.Modules.Synchronization.Abstractions; +using Backbone.Modules.Synchronization.Domain.Entities; +using Backbone.Modules.Synchronization.Domain.Entities.Sync; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; +using MediatR; +using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; + +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeExternalEventSync; + +public class Handler : SyncRunFinalization, IRequestHandler +{ + public Handler(ISynchronizationDbContext dbContext, IUserContext userContext) : base(dbContext, userContext) + { + } + + public async Task Handle(FinalizeExternalEventSyncSyncRunCommand request, CancellationToken cancellationToken) + { + _syncRun = await _dbContext.GetSyncRunWithExternalEvents(SyncRunId.Parse(request.SyncRunId), _activeIdentity, cancellationToken); + + if (_syncRun.Type != SyncRun.SyncRunType.ExternalEventSync) + throw new ApplicationException(ApplicationErrors.SyncRuns.UnexpectedSyncRunType(SyncRun.SyncRunType.ExternalEventSync)); + + CheckPreconditions(); + + _datawallet = await _dbContext.GetDatawalletForInsertion(_activeIdentity, cancellationToken) ?? throw new NotFoundException(nameof(Datawallet)); + + var eventResults = request.ExternalEventResults.Select(e => + new ExternalEventResult + { + ErrorCode = e.ErrorCode ?? string.Empty, + ExternalEventId = ExternalEventId.Parse(e.ExternalEventId) + }).ToArray(); + + _syncRun.FinalizeExternalEventSync(eventResults); + + var newModifications = AddModificationsToDatawallet(request.DatawalletModifications); + + await _dbContext.SaveChangesAsync(cancellationToken); + + var newUnsyncedExternalEventsExist = await _dbContext.DoNewUnsyncedExternalEventsExist(_activeIdentity, 1, cancellationToken); + + var response = new FinalizeExternalEventSyncSyncRunResponse + { + NewDatawalletModificationIndex = _datawallet.LatestModification?.Index, + DatawalletModifications = newModifications.Select(x => new CreatedDatawalletModificationDTO(x)), + NewUnsyncedExternalEventsExist = newUnsyncedExternalEventsExist + }; + + return response; + } +} diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Endpoint.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Endpoint.cs new file mode 100644 index 0000000000..f938af926d --- /dev/null +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Endpoint.cs @@ -0,0 +1,28 @@ +using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; + +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.GetSyncRunById; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapGetSyncRunByIdEndpoint(this RouteGroupBuilder group) + { + group.MapGet("{id}", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status404NotFound); + return group; + } + + private static async Task Handle([FromRoute] string id, IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new GetSyncRunByIdQuery { SyncRunId = id }, cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/GetSyncRunByIdQuery.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/GetSyncRunByIdQuery.cs new file mode 100644 index 0000000000..f41a8eba46 --- /dev/null +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/GetSyncRunByIdQuery.cs @@ -0,0 +1,9 @@ +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; +using MediatR; + +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.GetSyncRunById; + +public class GetSyncRunByIdQuery : IRequest +{ + public required string SyncRunId { get; init; } +} diff --git a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Queries/GetSyncRunById/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Handler.cs similarity index 80% rename from Modules/Synchronization/src/Synchronization.Application/SyncRuns/Queries/GetSyncRunById/Handler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Handler.cs index 880a72db7b..d0c66f66cd 100644 --- a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Queries/GetSyncRunById/Handler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Handler.cs @@ -1,11 +1,11 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Synchronization.Application.Infrastructure; -using Backbone.Modules.Synchronization.Application.SyncRuns.DTOs; +using Backbone.Modules.Synchronization.Abstractions; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using MediatR; -namespace Backbone.Modules.Synchronization.Application.SyncRuns.Queries.GetSyncRunById; +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.GetSyncRunById; public class Handler : IRequestHandler { diff --git a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Queries/GetSyncRunById/Validator.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Validator.cs similarity index 64% rename from Modules/Synchronization/src/Synchronization.Application/SyncRuns/Queries/GetSyncRunById/Validator.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Validator.cs index 054a864d6d..915b5aabbe 100644 --- a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Queries/GetSyncRunById/Validator.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Validator.cs @@ -1,8 +1,8 @@ -using Backbone.BuildingBlocks.Application.Extensions; +using Backbone.BuildingBlocks.Application.Extensions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using FluentValidation; -namespace Backbone.Modules.Synchronization.Application.SyncRuns.Queries.GetSyncRunById; +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.GetSyncRunById; public class Validator : AbstractValidator { diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Endpoint.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Endpoint.cs new file mode 100644 index 0000000000..23d91d01ba --- /dev/null +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Endpoint.cs @@ -0,0 +1,36 @@ +using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; +using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; +using Backbone.BuildingBlocks.Application.Pagination; +using Microsoft.Extensions.Options; +using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; + +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.ListExternalEventsOfSyncRun; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapListExternalEventsOfSyncRunEndpoint(this RouteGroupBuilder group) + { + group.MapGet("{id}/ExternalEvents", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status404NotFound); + return group; + } + + private static async Task Handle([FromRoute] string id, [FromQuery(Name = "PageNumber")] int? pageNumber, + [FromQuery(Name = "PageSize")] int? pageSize, IMediator mediator, IOptions options, CancellationToken cancellationToken) + { + var paginationFilter = new PaginationFilter { PageNumber = pageNumber ?? 1, PageSize = pageSize ?? options.Value.Pagination.DefaultPageSize }; + if (paginationFilter.PageSize > options.Value.Pagination.MaxPageSize) + throw new ApplicationException(GenericApplicationErrors.Validation.InvalidPageSize(options.Value.Pagination.MaxPageSize)); + + var response = await mediator.Send(new ListExternalEventsOfSyncRunQuery { SyncRunId = id, PaginationFilter = paginationFilter }, cancellationToken); + return EnvelopeHttpResults.Paged(response); + } +} diff --git a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Queries/ListExternalEventsOfSyncRun/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Handler.cs similarity index 88% rename from Modules/Synchronization/src/Synchronization.Application/SyncRuns/Queries/ListExternalEventsOfSyncRun/Handler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Handler.cs index f541a774e3..264e7dae0b 100644 --- a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Queries/ListExternalEventsOfSyncRun/Handler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Handler.cs @@ -1,12 +1,12 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Synchronization.Application.Infrastructure; -using Backbone.Modules.Synchronization.Application.SyncRuns.DTOs; +using Backbone.Modules.Synchronization.Abstractions; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using MediatR; -namespace Backbone.Modules.Synchronization.Application.SyncRuns.Queries.ListExternalEventsOfSyncRun; +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.ListExternalEventsOfSyncRun; public class Handler : IRequestHandler { diff --git a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Queries/ListExternalEventsOfSyncRun/ListExternalEventsOfSyncRunQuery.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/ListExternalEventsOfSyncRunQuery.cs similarity index 74% rename from Modules/Synchronization/src/Synchronization.Application/SyncRuns/Queries/ListExternalEventsOfSyncRun/ListExternalEventsOfSyncRunQuery.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/ListExternalEventsOfSyncRunQuery.cs index fc6d2fc6f2..6300d1c86f 100644 --- a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Queries/ListExternalEventsOfSyncRun/ListExternalEventsOfSyncRunQuery.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/ListExternalEventsOfSyncRunQuery.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.Pagination; using MediatR; -namespace Backbone.Modules.Synchronization.Application.SyncRuns.Queries.ListExternalEventsOfSyncRun; +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.ListExternalEventsOfSyncRun; public class ListExternalEventsOfSyncRunQuery : IRequest { diff --git a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Queries/ListExternalEventsOfSyncRun/ListExternalEventsOfSyncRunResponse.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/ListExternalEventsOfSyncRunResponse.cs similarity index 67% rename from Modules/Synchronization/src/Synchronization.Application/SyncRuns/Queries/ListExternalEventsOfSyncRun/ListExternalEventsOfSyncRunResponse.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/ListExternalEventsOfSyncRunResponse.cs index 988b2610f2..8f113146b0 100644 --- a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Queries/ListExternalEventsOfSyncRun/ListExternalEventsOfSyncRunResponse.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/ListExternalEventsOfSyncRunResponse.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.Modules.Synchronization.Application.SyncRuns.DTOs; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; -namespace Backbone.Modules.Synchronization.Application.SyncRuns.Queries.ListExternalEventsOfSyncRun; +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.ListExternalEventsOfSyncRun; public class ListExternalEventsOfSyncRunResponse : PagedResponse { diff --git a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Queries/ListExternalEventsOfSyncRun/Validator.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Validator.cs similarity index 64% rename from Modules/Synchronization/src/Synchronization.Application/SyncRuns/Queries/ListExternalEventsOfSyncRun/Validator.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Validator.cs index 1830b2fdff..ad28356cb7 100644 --- a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Queries/ListExternalEventsOfSyncRun/Validator.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Validator.cs @@ -1,8 +1,8 @@ -using Backbone.BuildingBlocks.Application.Extensions; +using Backbone.BuildingBlocks.Application.Extensions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using FluentValidation; -namespace Backbone.Modules.Synchronization.Application.SyncRuns.Queries.ListExternalEventsOfSyncRun; +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.ListExternalEventsOfSyncRun; public class Validator : AbstractValidator { diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Endpoint.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Endpoint.cs new file mode 100644 index 0000000000..c263106c69 --- /dev/null +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Endpoint.cs @@ -0,0 +1,27 @@ +using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; + +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.RefreshExpirationTimeOfSyncRun; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapRefreshExpirationTimeOfSyncRunEndpoint(this RouteGroupBuilder group) + { + group.MapPut("{id}/RefreshExpirationTime", Handle) + .Produces>(StatusCodes.Status200OK) + .Produces(StatusCodes.Status400BadRequest) + .Produces(StatusCodes.Status404NotFound); + return group; + } + + private static async Task Handle([FromRoute] string id, IMediator mediator, CancellationToken cancellationToken) + { + var response = await mediator.Send(new RefreshExpirationTimeOfSyncRunCommand { SyncRunId = id }, cancellationToken); + return EnvelopeHttpResults.Ok(response); + } +} diff --git a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/RefreshExpirationTimeOfSyncRun/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Handler.cs similarity index 91% rename from Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/RefreshExpirationTimeOfSyncRun/Handler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Handler.cs index cbfd8382e5..e2a42d8862 100644 --- a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/RefreshExpirationTimeOfSyncRun/Handler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Handler.cs @@ -1,11 +1,11 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using MediatR; -namespace Backbone.Modules.Synchronization.Application.SyncRuns.Commands.RefreshExpirationTimeOfSyncRun; +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.RefreshExpirationTimeOfSyncRun; public class Handler : IRequestHandler { diff --git a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/RefreshExpirationTimeOfSyncRun/RefreshExpirationTimeOfSyncRunCommand.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/RefreshExpirationTimeOfSyncRunCommand.cs similarity index 62% rename from Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/RefreshExpirationTimeOfSyncRun/RefreshExpirationTimeOfSyncRunCommand.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/RefreshExpirationTimeOfSyncRunCommand.cs index 422efffa8f..efb858c26a 100644 --- a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/RefreshExpirationTimeOfSyncRun/RefreshExpirationTimeOfSyncRunCommand.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/RefreshExpirationTimeOfSyncRunCommand.cs @@ -1,6 +1,6 @@ using MediatR; -namespace Backbone.Modules.Synchronization.Application.SyncRuns.Commands.RefreshExpirationTimeOfSyncRun; +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.RefreshExpirationTimeOfSyncRun; public class RefreshExpirationTimeOfSyncRunCommand : IRequest { diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/RefreshExpirationTimeOfSyncRunResponse.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/RefreshExpirationTimeOfSyncRunResponse.cs new file mode 100644 index 0000000000..3476c116e0 --- /dev/null +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/RefreshExpirationTimeOfSyncRunResponse.cs @@ -0,0 +1,6 @@ +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.RefreshExpirationTimeOfSyncRun; + +public class RefreshExpirationTimeOfSyncRunResponse +{ + public DateTime ExpiresAt { get; set; } +} diff --git a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/RefreshExpirationTimeOfSyncRun/Validator.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Validator.cs similarity index 65% rename from Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/RefreshExpirationTimeOfSyncRun/Validator.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Validator.cs index 2bc60a990e..3fd6126f46 100644 --- a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/RefreshExpirationTimeOfSyncRun/Validator.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Validator.cs @@ -1,8 +1,8 @@ -using Backbone.BuildingBlocks.Application.Extensions; +using Backbone.BuildingBlocks.Application.Extensions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using FluentValidation; -namespace Backbone.Modules.Synchronization.Application.SyncRuns.Commands.RefreshExpirationTimeOfSyncRun; +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.RefreshExpirationTimeOfSyncRun; public class Validator : AbstractValidator { diff --git a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/DTOs/ExternalEventDTO.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/Shared/ExternalEventDTO.cs similarity index 96% rename from Modules/Synchronization/src/Synchronization.Application/SyncRuns/DTOs/ExternalEventDTO.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/Shared/ExternalEventDTO.cs index 7c90415e1d..64fcf2f47d 100644 --- a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/DTOs/ExternalEventDTO.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/Shared/ExternalEventDTO.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Synchronization.Domain.Entities.Sync; -namespace Backbone.Modules.Synchronization.Application.SyncRuns.DTOs; +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; public class ExternalEventDTO { diff --git a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/DTOs/SyncRunDTO.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/Shared/SyncRunDTO.cs similarity index 94% rename from Modules/Synchronization/src/Synchronization.Application/SyncRuns/DTOs/SyncRunDTO.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/Shared/SyncRunDTO.cs index 275a627fd2..cf184e8aab 100644 --- a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/DTOs/SyncRunDTO.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/Shared/SyncRunDTO.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Synchronization.Domain.Entities.Sync; -namespace Backbone.Modules.Synchronization.Application.SyncRuns.DTOs; +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; public class SyncRunDTO { diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/Shared/SyncRunFinalization.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/Shared/SyncRunFinalization.cs new file mode 100644 index 0000000000..6bd684dfda --- /dev/null +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/Shared/SyncRunFinalization.cs @@ -0,0 +1,73 @@ +using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; +using Backbone.DevelopmentKit.Identity.ValueObjects; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; +using Backbone.Modules.Synchronization.Abstractions; +using Backbone.Modules.Synchronization.Domain.Entities; +using Backbone.Modules.Synchronization.Domain.Entities.Sync; + +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; + +public abstract class SyncRunFinalization +{ + protected readonly DeviceId _activeDevice; + protected readonly IdentityAddress _activeIdentity; + protected readonly ISynchronizationDbContext _dbContext; + protected Datawallet? _datawallet; + protected SyncRun _syncRun = null!; + + protected SyncRunFinalization(ISynchronizationDbContext dbContext, IUserContext userContext) + { + _dbContext = dbContext; + _activeIdentity = userContext.GetAddress(); + _activeDevice = userContext.GetDeviceId(); + } + + protected void CheckPreconditions() + { + if (_syncRun.CreatedByDevice != _activeDevice) + throw new OperationFailedException(ApplicationErrors.SyncRuns.CannotFinalizeSyncRunStartedByAnotherDevice()); + + if (_syncRun.IsFinalized) + throw new OperationFailedException(ApplicationErrors.SyncRuns.SyncRunAlreadyFinalized()); + } + + protected List AddModificationsToDatawallet(List modifications) + { + if (_datawallet == null) + throw new NotFoundException(nameof(Datawallet)); + + if (modifications.Count == 0) + return []; + + var newModifications = new List(); + + foreach (var modificationDto in modifications) + { + var newModification = _datawallet.AddModification( + MapDatawalletModificationType(modificationDto.Type), + new Datawallet.DatawalletVersion(modificationDto.DatawalletVersion), + modificationDto.Collection, + modificationDto.ObjectIdentifier, + modificationDto.PayloadCategory, + modificationDto.EncryptedPayload, + _activeDevice); + + newModifications.Add(newModification); + } + + return newModifications; + } + + protected static DatawalletModificationType MapDatawalletModificationType(DatawalletModificationDTO.DatawalletModificationType type) + { + return type switch + { + DatawalletModificationDTO.DatawalletModificationType.Create => DatawalletModificationType.Create, + DatawalletModificationDTO.DatawalletModificationType.Update => DatawalletModificationType.Update, + DatawalletModificationDTO.DatawalletModificationType.Delete => DatawalletModificationType.Delete, + DatawalletModificationDTO.DatawalletModificationType.CacheChanged => DatawalletModificationType.CacheChanged, + _ => throw new Exception($"Unsupported Datawallet Modification Type: {type}") + }; + } +} diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Endpoint.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Endpoint.cs new file mode 100644 index 0000000000..c0cef0fb9a --- /dev/null +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Endpoint.cs @@ -0,0 +1,50 @@ +using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; +using MediatR; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Routing; +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; +using Backbone.Modules.Devices.Contracts; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; +using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; + +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.StartSyncRun; + +internal static class Endpoint +{ + public static RouteGroupBuilder MapStartSyncRunEndpoint(this RouteGroupBuilder group) + { + group.MapPost("", Handle) + .Accepts(isOptional: true, "application/json", "application/*+json") + .Produces>(StatusCodes.Status200OK) + .Produces>(StatusCodes.Status201Created) + .Produces(StatusCodes.Status400BadRequest); + return group; + } + + private static async Task Handle([FromBody] StartSyncRunRequestBody? requestBody, + [FromHeader(Name = "X-Supported-Datawallet-Version")] ushort? supportedDatawalletVersion, + IIdentityStatusProvider identityStatusProvider, IUserContext userContext, IMediator mediator, CancellationToken cancellationToken) + { + if (requestBody == null) + throw new BadHttpRequestException("The request body is required."); + + if (!await identityStatusProvider.IsActive(userContext.GetAddress(), cancellationToken)) + throw new ApplicationException(ApplicationErrors.SyncRuns.CannotStartSyncRunWhileIdentityIsToBeDeleted()); + + var response = await mediator.Send(new StartSyncRunCommand + { + Type = requestBody.Type ?? SyncRunDTO.SyncRunType.ExternalEventSync, + Duration = requestBody.Duration, SupportedDatawalletVersion = supportedDatawalletVersion ?? 0 + }, cancellationToken); + return response.Status == StartSyncRunStatus.Created ? EnvelopeHttpResults.Created("", response) : EnvelopeHttpResults.Ok(response); + } +} + +public class StartSyncRunRequestBody +{ + public SyncRunDTO.SyncRunType? Type { get; set; } + public ushort? Duration { get; set; } +} diff --git a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/StartSyncRun/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Handler.cs similarity index 96% rename from Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/StartSyncRun/Handler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Handler.cs index 2b012e24d3..3671bd032a 100644 --- a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/StartSyncRun/Handler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Handler.cs @@ -2,15 +2,15 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.BuildingBlocks.Application.Extensions; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Synchronization.Application.Infrastructure; -using Backbone.Modules.Synchronization.Application.SyncRuns.DTOs; +using Backbone.Modules.Synchronization.Abstractions; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; using Backbone.Modules.Synchronization.Domain.Entities; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using MediatR; using Microsoft.EntityFrameworkCore; using static Backbone.Modules.Synchronization.Domain.Entities.Datawallet; -namespace Backbone.Modules.Synchronization.Application.SyncRuns.Commands.StartSyncRun; +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.StartSyncRun; public class Handler : IRequestHandler { diff --git a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/StartSyncRun/StartSyncRunCommand.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/StartSyncRunCommand.cs similarity index 62% rename from Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/StartSyncRun/StartSyncRunCommand.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/StartSyncRunCommand.cs index 4ec7cb4c4a..098aae6917 100644 --- a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/StartSyncRun/StartSyncRunCommand.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/StartSyncRunCommand.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Synchronization.Application.SyncRuns.DTOs; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; using MediatR; -namespace Backbone.Modules.Synchronization.Application.SyncRuns.Commands.StartSyncRun; +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.StartSyncRun; public class StartSyncRunCommand : IRequest { diff --git a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/StartSyncRun/StartSyncRunResponse.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/StartSyncRunResponse.cs similarity index 78% rename from Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/StartSyncRun/StartSyncRunResponse.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/StartSyncRunResponse.cs index 466e038e0b..91d04aeb3e 100644 --- a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/StartSyncRun/StartSyncRunResponse.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/StartSyncRunResponse.cs @@ -1,8 +1,8 @@ using System.Text.Json.Serialization; -using Backbone.Modules.Synchronization.Application.SyncRuns.DTOs; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; using Backbone.Modules.Synchronization.Domain.Entities.Sync; -namespace Backbone.Modules.Synchronization.Application.SyncRuns.Commands.StartSyncRun; +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.StartSyncRun; public class StartSyncRunResponse { diff --git a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/StartSyncRun/Validator.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Validator.cs similarity index 83% rename from Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/StartSyncRun/Validator.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Validator.cs index 549627720c..aa7799d022 100644 --- a/Modules/Synchronization/src/Synchronization.Application/SyncRuns/Commands/StartSyncRun/Validator.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Validator.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using FluentValidation; -namespace Backbone.Modules.Synchronization.Application.SyncRuns.Commands.StartSyncRun; +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.StartSyncRun; internal class Validator : AbstractValidator { diff --git a/Modules/Synchronization/src/Synchronization.Module/Synchronization.Module.csproj b/Modules/Synchronization/src/Synchronization.Module/Synchronization.Module.csproj index 5d83502e1d..0f517afbc2 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Synchronization.Module.csproj +++ b/Modules/Synchronization/src/Synchronization.Module/Synchronization.Module.csproj @@ -3,14 +3,26 @@ - + + + + + + + + + + + + + diff --git a/Modules/Synchronization/src/Synchronization.Module/SynchronizationEndpointExtensions.cs b/Modules/Synchronization/src/Synchronization.Module/SynchronizationEndpointExtensions.cs new file mode 100644 index 0000000000..7bfc55aa6e --- /dev/null +++ b/Modules/Synchronization/src/Synchronization.Module/SynchronizationEndpointExtensions.cs @@ -0,0 +1,35 @@ +using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.GetDatawallet; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.ListModifications; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.PushDatawalletModifications; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.StartSyncRun; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeExternalEventSync; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeDatawalletVersionUpgrade; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.ListExternalEventsOfSyncRun; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.GetSyncRunById; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.RefreshExpirationTimeOfSyncRun; +using Microsoft.AspNetCore.Routing; +using OpenIddict.Validation.AspNetCore; + +namespace Backbone.Modules.Synchronization.Module; + +public static class SynchronizationEndpointExtensions +{ + public static IEndpointRouteBuilder MapSynchronizationEndpoints(this IEndpointRouteBuilder endpoints) + { + var datawallet = endpoints.MapVersionedEndpointGroup("Datawallet", "Datawallet", 2, OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme); + datawallet.MapGetDatawalletEndpoint(); + datawallet.MapListModificationsEndpoint(); + datawallet.MapPushDatawalletModificationsEndpoint(); + + var syncRuns = endpoints.MapVersionedEndpointGroup("SyncRuns", "SyncRuns", 2, OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme); + syncRuns.MapStartSyncRunEndpoint(); + syncRuns.MapFinalizeExternalEventSyncEndpoint(); + syncRuns.MapFinalizeDatawalletVersionUpgradeEndpoint(); + syncRuns.MapListExternalEventsOfSyncRunEndpoint(); + syncRuns.MapGetSyncRunByIdEndpoint(); + syncRuns.MapRefreshExpirationTimeOfSyncRunEndpoint(); + + return endpoints; + } +} diff --git a/Modules/Synchronization/src/Synchronization.Module/SynchronizationModule.cs b/Modules/Synchronization/src/Synchronization.Module/SynchronizationModule.cs index 2d8411125b..720cb03738 100644 --- a/Modules/Synchronization/src/Synchronization.Module/SynchronizationModule.cs +++ b/Modules/Synchronization/src/Synchronization.Module/SynchronizationModule.cs @@ -1,8 +1,6 @@ using Backbone.BuildingBlocks.API.Extensions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Module; -using Backbone.Modules.Synchronization.Application; -using Backbone.Modules.Synchronization.Application.Extensions; using Backbone.Modules.Synchronization.Infrastructure; using Backbone.Modules.Synchronization.Infrastructure.Persistence; using Microsoft.Extensions.Configuration; diff --git a/Modules/Synchronization/src/Synchronization.Module/packages.lock.json b/Modules/Synchronization/src/Synchronization.Module/packages.lock.json index 905056dc13..249f56c040 100644 --- a/Modules/Synchronization/src/Synchronization.Module/packages.lock.json +++ b/Modules/Synchronization/src/Synchronization.Module/packages.lock.json @@ -2,6 +2,22 @@ "version": 2, "dependencies": { "net10.0": { + "FluentValidation": { + "type": "Direct", + "requested": "[12.1.1, 12.1.1]", + "resolved": "12.1.1", + "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" + }, + "FluentValidation.DependencyInjectionExtensions": { + "type": "Direct", + "requested": "[12.1.1, 12.1.1]", + "resolved": "12.1.1", + "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", + "dependencies": { + "FluentValidation": "12.1.1", + "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" + } + }, "ReHackt.Extensions.Options.Validation": { "type": "Direct", "requested": "[10.0.1, 10.0.1]", @@ -1268,19 +1284,12 @@ "Backbone.BuildingBlocks.Domain": "[1.0.0, )" } }, - "Backbone.Modules.Synchronization.Application": { + "Backbone.Modules.Synchronization.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Files.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Synchronization.Domain": "[1.0.0, )" } }, "Backbone.Modules.Synchronization.Contracts": { @@ -1302,7 +1311,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Synchronization.Application": "[1.0.0, )", + "Backbone.Modules.Synchronization.Abstractions": "[1.0.0, )", "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", "Microsoft.Data.Sqlite.Core": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1470,22 +1479,6 @@ "Google.Apis.Auth": "1.73.0" } }, - "FluentValidation": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "EPpkIe1yh1a0OXyC100oOA8WMbZvqUu5plwhvYcb7oSELfyUZzfxV48BLhvs3kKo4NwG7MGLNgy1RJiYtT8Dpw==" - }, - "FluentValidation.DependencyInjectionExtensions": { - "type": "CentralTransitive", - "requested": "[12.1.1, 12.1.1]", - "resolved": "12.1.1", - "contentHash": "D0VXh4dtjjX2aQizuaa0g6R8X3U1JaVqJPfGCvLwZX9t/O2h7tkpbitbadQMfwcgSPdDbI2vDxuwRMv/Uf9dHA==", - "dependencies": { - "FluentValidation": "12.1.1", - "Microsoft.Extensions.DependencyInjection.Abstractions": "2.1.0" - } - }, "Google.Cloud.PubSub.V1": { "type": "CentralTransitive", "requested": "[3.36.0, 3.36.0]", diff --git a/Modules/Synchronization/test/Synchronization.Application.Tests/ApplicationDbContextExtensions.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/ApplicationDbContextExtensions.cs similarity index 91% rename from Modules/Synchronization/test/Synchronization.Application.Tests/ApplicationDbContextExtensions.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/ApplicationDbContextExtensions.cs index cc5a0a4065..7828565aea 100644 --- a/Modules/Synchronization/test/Synchronization.Application.Tests/ApplicationDbContextExtensions.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/ApplicationDbContextExtensions.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Synchronization.Infrastructure.Persistence.Database; -namespace Backbone.Modules.Synchronization.Application.Tests; +namespace Backbone.Modules.Synchronization.Module.Tests; public static class ApplicationDbContextExtensions { diff --git a/Modules/Synchronization/test/Synchronization.Application.Tests/ApplicationDbContextWithDelayedSave.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/ApplicationDbContextWithDelayedSave.cs similarity index 92% rename from Modules/Synchronization/test/Synchronization.Application.Tests/ApplicationDbContextWithDelayedSave.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/ApplicationDbContextWithDelayedSave.cs index 06740eb51a..273e474809 100644 --- a/Modules/Synchronization/test/Synchronization.Application.Tests/ApplicationDbContextWithDelayedSave.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/ApplicationDbContextWithDelayedSave.cs @@ -3,7 +3,7 @@ using FakeItEasy; using Microsoft.EntityFrameworkCore; -namespace Backbone.Modules.Synchronization.Application.Tests; +namespace Backbone.Modules.Synchronization.Module.Tests; public class ApplicationDbContextWithDelayedSave : SynchronizationDbContext { diff --git a/Modules/Synchronization/test/Synchronization.Application.Tests/DatawalletExtensions.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/DatawalletExtensions.cs similarity index 94% rename from Modules/Synchronization/test/Synchronization.Application.Tests/DatawalletExtensions.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/DatawalletExtensions.cs index 5800d38675..cef5a45283 100644 --- a/Modules/Synchronization/test/Synchronization.Application.Tests/DatawalletExtensions.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/DatawalletExtensions.cs @@ -1,7 +1,7 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Synchronization.Domain.Entities; -namespace Backbone.Modules.Synchronization.Application.Tests; +namespace Backbone.Modules.Synchronization.Module.Tests; public static class DatawalletExtensions { diff --git a/Modules/Synchronization/test/Synchronization.Application.Tests/ExternalEventBuilder.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/ExternalEventBuilder.cs similarity index 96% rename from Modules/Synchronization/test/Synchronization.Application.Tests/ExternalEventBuilder.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/ExternalEventBuilder.cs index 335187c872..b732b4beca 100644 --- a/Modules/Synchronization/test/Synchronization.Application.Tests/ExternalEventBuilder.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/ExternalEventBuilder.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Synchronization.Domain.Entities.Relationships; using Backbone.Modules.Synchronization.Domain.Entities.Sync; -namespace Backbone.Modules.Synchronization.Application.Tests; +namespace Backbone.Modules.Synchronization.Module.Tests; public class ExternalEventBuilder { diff --git a/Modules/Synchronization/test/Synchronization.Application.Tests/GlobalUsings.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/GlobalUsings.cs similarity index 100% rename from Modules/Synchronization/test/Synchronization.Application.Tests/GlobalUsings.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/GlobalUsings.cs diff --git a/Modules/Synchronization/test/Synchronization.Application.Tests/SyncRunBuilder.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/SyncRunBuilder.cs similarity index 97% rename from Modules/Synchronization/test/Synchronization.Application.Tests/SyncRunBuilder.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/SyncRunBuilder.cs index a22cc4eb83..bf1531b52f 100644 --- a/Modules/Synchronization/test/Synchronization.Application.Tests/SyncRunBuilder.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/SyncRunBuilder.cs @@ -1,7 +1,7 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Synchronization.Domain.Entities.Sync; -namespace Backbone.Modules.Synchronization.Application.Tests; +namespace Backbone.Modules.Synchronization.Module.Tests; public class SyncRunBuilder { diff --git a/Modules/Synchronization/test/Synchronization.Application.Tests/Synchronization.Application.Tests.csproj b/Modules/Synchronization/test/Synchronization.Module.Tests/Synchronization.Module.Tests.csproj similarity index 87% rename from Modules/Synchronization/test/Synchronization.Application.Tests/Synchronization.Application.Tests.csproj rename to Modules/Synchronization/test/Synchronization.Module.Tests/Synchronization.Module.Tests.csproj index de24516b90..6d3f179da3 100644 --- a/Modules/Synchronization/test/Synchronization.Application.Tests/Synchronization.Application.Tests.csproj +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Synchronization.Module.Tests.csproj @@ -16,7 +16,7 @@ - + diff --git a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/Datawallet/Commands/PushDatawalletModifications/HandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/Commands/PushDatawalletModifications/HandlerTests.cs similarity index 93% rename from Modules/Synchronization/test/Synchronization.Application.Tests/Tests/Datawallet/Commands/PushDatawalletModifications/HandlerTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/Commands/PushDatawalletModifications/HandlerTests.cs index dbe16268ca..5b0cb90010 100644 --- a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/Datawallet/Commands/PushDatawalletModifications/HandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/Commands/PushDatawalletModifications/HandlerTests.cs @@ -2,15 +2,15 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Synchronization.Application.Datawallets.Commands.PushDatawalletModifications; -using Backbone.Modules.Synchronization.Application.Datawallets.DTOs; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.PushDatawalletModifications; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; using Backbone.Modules.Synchronization.Infrastructure.Persistence.Database; using Backbone.UnitTestTools.Shouldly.Extensions; using FakeItEasy; using Microsoft.Data.Sqlite; using Microsoft.EntityFrameworkCore; -namespace Backbone.Modules.Synchronization.Application.Tests.Tests.Datawallet.Commands.PushDatawalletModifications; +namespace Backbone.Modules.Synchronization.Module.Tests.Tests.Datawallet.Commands.PushDatawalletModifications; public class HandlerTests : AbstractTestsBase { diff --git a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/Datawallet/Commands/PushDatawalletModifications/PushDatawalletModificationsCommandValidatorTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/Commands/PushDatawalletModifications/PushDatawalletModificationsCommandValidatorTests.cs similarity index 84% rename from Modules/Synchronization/test/Synchronization.Application.Tests/Tests/Datawallet/Commands/PushDatawalletModifications/PushDatawalletModificationsCommandValidatorTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/Commands/PushDatawalletModifications/PushDatawalletModificationsCommandValidatorTests.cs index c882a60f7d..b69c9aa91b 100644 --- a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/Datawallet/Commands/PushDatawalletModifications/PushDatawalletModificationsCommandValidatorTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/Commands/PushDatawalletModifications/PushDatawalletModificationsCommandValidatorTests.cs @@ -1,8 +1,8 @@ -using Backbone.Modules.Synchronization.Application.Datawallets.Commands.PushDatawalletModifications; -using Backbone.Modules.Synchronization.Application.Datawallets.DTOs; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.PushDatawalletModifications; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; using FluentValidation.TestHelper; -namespace Backbone.Modules.Synchronization.Application.Tests.Tests.Datawallet.Commands.PushDatawalletModifications; +namespace Backbone.Modules.Synchronization.Module.Tests.Tests.Datawallet.Commands.PushDatawalletModifications; public class PushDatawalletModificationsCommandValidatorTests : AbstractTestsBase { diff --git a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/Datawallet/DTOs/PushDatawalletModificationItemValidatorTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/DTOs/PushDatawalletModificationItemValidatorTests.cs similarity index 94% rename from Modules/Synchronization/test/Synchronization.Application.Tests/Tests/Datawallet/DTOs/PushDatawalletModificationItemValidatorTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/DTOs/PushDatawalletModificationItemValidatorTests.cs index 799b7dbb82..a138fa645f 100644 --- a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/Datawallet/DTOs/PushDatawalletModificationItemValidatorTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/DTOs/PushDatawalletModificationItemValidatorTests.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Synchronization.Application.Datawallets.DTOs; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; using FluentValidation.TestHelper; -namespace Backbone.Modules.Synchronization.Application.Tests.Tests.Datawallet.DTOs; +namespace Backbone.Modules.Synchronization.Module.Tests.Tests.Datawallet.DTOs; public class PushDatawalletModificationItemValidatorTests : AbstractTestsBase { diff --git a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/Datawallet/Queries/GetDatawalletModifications/HandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/Queries/GetDatawalletModifications/HandlerTests.cs similarity index 98% rename from Modules/Synchronization/test/Synchronization.Application.Tests/Tests/Datawallet/Queries/GetDatawalletModifications/HandlerTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/Queries/GetDatawalletModifications/HandlerTests.cs index be3daf701d..3d20c45d19 100644 --- a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/Datawallet/Queries/GetDatawalletModifications/HandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/Queries/GetDatawalletModifications/HandlerTests.cs @@ -1,14 +1,14 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.BuildingBlocks.Application.Pagination; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Synchronization.Application.Datawallets.Queries.ListModifications; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.ListModifications; using Backbone.Modules.Synchronization.Domain.Entities; using Backbone.Modules.Synchronization.Infrastructure.Persistence.Database; using Backbone.UnitTestTools.Shouldly.Extensions; using Backbone.UnitTestTools.TestDoubles.Fakes; using FakeItEasy; -namespace Backbone.Modules.Synchronization.Application.Tests.Tests.Datawallet.Queries.GetDatawalletModifications; +namespace Backbone.Modules.Synchronization.Module.Tests.Tests.Datawallet.Queries.GetDatawalletModifications; public class HandlerTests : AbstractTestsBase { diff --git a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/DomainEvents/IdentityDeletionProcessStartedDomainEventHandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/IdentityDeletionProcessStartedDomainEventHandlerTests.cs similarity index 88% rename from Modules/Synchronization/test/Synchronization.Application.Tests/Tests/DomainEvents/IdentityDeletionProcessStartedDomainEventHandlerTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/IdentityDeletionProcessStartedDomainEventHandlerTests.cs index 4652475d76..34834653d4 100644 --- a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/DomainEvents/IdentityDeletionProcessStartedDomainEventHandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/IdentityDeletionProcessStartedDomainEventHandlerTests.cs @@ -1,11 +1,11 @@ using Backbone.Modules.Devices.Contracts.DomainEvents; -using Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.IdentityDeletionProcessStarted; -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.IdentityDeletionProcessStarted; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using FakeItEasy; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Synchronization.Application.Tests.Tests.DomainEvents; +namespace Backbone.Modules.Synchronization.Module.Tests.Tests.DomainEvents; public class IdentityDeletionProcessStartedDomainEventHandlerTests : AbstractTestsBase { diff --git a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/DomainEvents/IdentityDeletionProcessStatusChangedDomainEventHandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/IdentityDeletionProcessStatusChangedDomainEventHandlerTests.cs similarity index 89% rename from Modules/Synchronization/test/Synchronization.Application.Tests/Tests/DomainEvents/IdentityDeletionProcessStatusChangedDomainEventHandlerTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/IdentityDeletionProcessStatusChangedDomainEventHandlerTests.cs index 9855a87233..8104be5baf 100644 --- a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/DomainEvents/IdentityDeletionProcessStatusChangedDomainEventHandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/IdentityDeletionProcessStatusChangedDomainEventHandlerTests.cs @@ -1,11 +1,11 @@ using Backbone.Modules.Devices.Contracts.DomainEvents; -using Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.IdentityDeletionProcessStatusChanged; -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.IdentityDeletionProcessStatusChanged; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using FakeItEasy; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Synchronization.Application.Tests.Tests.DomainEvents; +namespace Backbone.Modules.Synchronization.Module.Tests.Tests.DomainEvents; public class IdentityDeletionProcessStatusChangedDomainEventHandlerTests : AbstractTestsBase { diff --git a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/DomainEvents/MessageCreatedDomainEventHandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/MessageCreatedDomainEventHandlerTests.cs similarity index 95% rename from Modules/Synchronization/test/Synchronization.Application.Tests/Tests/DomainEvents/MessageCreatedDomainEventHandlerTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/MessageCreatedDomainEventHandlerTests.cs index 7d666331e8..097b2eb966 100644 --- a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/DomainEvents/MessageCreatedDomainEventHandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/MessageCreatedDomainEventHandlerTests.cs @@ -1,13 +1,13 @@ using Backbone.Modules.Messages.Contracts.DomainEvents; -using Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.MessageCreated; -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.MessageCreated; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Relationships; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using Backbone.Tooling; using FakeItEasy; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Synchronization.Application.Tests.Tests.DomainEvents; +namespace Backbone.Modules.Synchronization.Module.Tests.Tests.DomainEvents; public class MessageCreatedDomainEventHandlerTests : AbstractTestsBase { diff --git a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/DomainEvents/PeerDeletedDomainEventHandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/PeerDeletedDomainEventHandlerTests.cs similarity index 82% rename from Modules/Synchronization/test/Synchronization.Application.Tests/Tests/DomainEvents/PeerDeletedDomainEventHandlerTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/PeerDeletedDomainEventHandlerTests.cs index 7cb7c1f720..4d84b29d73 100644 --- a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/DomainEvents/PeerDeletedDomainEventHandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/PeerDeletedDomainEventHandlerTests.cs @@ -1,11 +1,11 @@ using Backbone.Modules.Relationships.Contracts.DomainEvents; -using Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.PeerDeleted; -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerDeleted; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using FakeItEasy; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Synchronization.Application.Tests.Tests.DomainEvents; +namespace Backbone.Modules.Synchronization.Module.Tests.Tests.DomainEvents; public class PeerDeletedDomainEventHandlerTests : AbstractTestsBase { diff --git a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/DomainEvents/PeerDeletionCancelledDomainEventHandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/PeerDeletionCancelledDomainEventHandlerTests.cs similarity index 82% rename from Modules/Synchronization/test/Synchronization.Application.Tests/Tests/DomainEvents/PeerDeletionCancelledDomainEventHandlerTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/PeerDeletionCancelledDomainEventHandlerTests.cs index a95f205f4c..272e21a5a2 100644 --- a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/DomainEvents/PeerDeletionCancelledDomainEventHandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/PeerDeletionCancelledDomainEventHandlerTests.cs @@ -1,11 +1,11 @@ using Backbone.Modules.Relationships.Contracts.DomainEvents; -using Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.PeerDeletionCancelled; -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerDeletionCancelled; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using FakeItEasy; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Synchronization.Application.Tests.Tests.DomainEvents; +namespace Backbone.Modules.Synchronization.Module.Tests.Tests.DomainEvents; public class PeerDeletionCancelledDomainEventHandlerTests : AbstractTestsBase { diff --git a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/DomainEvents/PeerToBeDeletedDomainEventHandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/PeerToBeDeletedDomainEventHandlerTests.cs similarity index 84% rename from Modules/Synchronization/test/Synchronization.Application.Tests/Tests/DomainEvents/PeerToBeDeletedDomainEventHandlerTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/PeerToBeDeletedDomainEventHandlerTests.cs index 3a1e86e717..78a1d38bfc 100644 --- a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/DomainEvents/PeerToBeDeletedDomainEventHandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/PeerToBeDeletedDomainEventHandlerTests.cs @@ -1,11 +1,11 @@ using Backbone.Modules.Relationships.Contracts.DomainEvents; -using Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.PeerToBeDeleted; -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerToBeDeleted; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using FakeItEasy; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Synchronization.Application.Tests.Tests.DomainEvents; +namespace Backbone.Modules.Synchronization.Module.Tests.Tests.DomainEvents; public class PeerToBeDeletedDomainEventHandlerTests : AbstractTestsBase { diff --git a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/DomainEvents/RelationshipReactivationCompletedDomainEventHandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/RelationshipReactivationCompletedDomainEventHandlerTests.cs similarity index 92% rename from Modules/Synchronization/test/Synchronization.Application.Tests/Tests/DomainEvents/RelationshipReactivationCompletedDomainEventHandlerTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/RelationshipReactivationCompletedDomainEventHandlerTests.cs index adcb845480..db5405cc7f 100644 --- a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/DomainEvents/RelationshipReactivationCompletedDomainEventHandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/RelationshipReactivationCompletedDomainEventHandlerTests.cs @@ -1,12 +1,12 @@ using Backbone.Modules.Relationships.Contracts.DomainEvents; -using Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.RelationshipReactivationCompleted; -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipReactivationCompleted; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Relationships; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using FakeItEasy; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Synchronization.Application.Tests.Tests.DomainEvents; +namespace Backbone.Modules.Synchronization.Module.Tests.Tests.DomainEvents; public class RelationshipReactivationCompletedDomainEventHandlerTests : AbstractTestsBase { diff --git a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/DomainEvents/RelationshipStatusChangedDomainEventHandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/RelationshipStatusChangedDomainEventHandlerTests.cs similarity index 95% rename from Modules/Synchronization/test/Synchronization.Application.Tests/Tests/DomainEvents/RelationshipStatusChangedDomainEventHandlerTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/RelationshipStatusChangedDomainEventHandlerTests.cs index f65fd88a9a..135ec5666a 100644 --- a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/DomainEvents/RelationshipStatusChangedDomainEventHandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/RelationshipStatusChangedDomainEventHandlerTests.cs @@ -1,12 +1,12 @@ using Backbone.Modules.Relationships.Contracts.DomainEvents; -using Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.RelationshipStatusChanged; -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipStatusChanged; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Relationships; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using FakeItEasy; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Synchronization.Application.Tests.Tests.DomainEvents; +namespace Backbone.Modules.Synchronization.Module.Tests.Tests.DomainEvents; public class RelationshipStatusChangedDomainEventHandlerTests : AbstractTestsBase { diff --git a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/DomainEvents/TokenLockedDomainEventHandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/TokenLockedDomainEventHandlerTests.cs similarity index 77% rename from Modules/Synchronization/test/Synchronization.Application.Tests/Tests/DomainEvents/TokenLockedDomainEventHandlerTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/TokenLockedDomainEventHandlerTests.cs index 9f2f9e6953..6e41bc3fc9 100644 --- a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/DomainEvents/TokenLockedDomainEventHandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/TokenLockedDomainEventHandlerTests.cs @@ -1,10 +1,10 @@ -using Backbone.Modules.Synchronization.Application.DomainEvents.Incoming.TokenLocked; -using Backbone.Modules.Synchronization.Application.Infrastructure; +using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.TokenLocked; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using Backbone.Modules.Tokens.Contracts.DomainEvents; using FakeItEasy; -namespace Backbone.Modules.Synchronization.Application.Tests.Tests.DomainEvents; +namespace Backbone.Modules.Synchronization.Module.Tests.Tests.DomainEvents; public class TokenLockedDomainEventHandlerTests : AbstractTestsBase { diff --git a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/Identities/IdentityDeleterTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Identities/IdentityDeleterTests.cs similarity index 82% rename from Modules/Synchronization/test/Synchronization.Application.Tests/Tests/Identities/IdentityDeleterTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Identities/IdentityDeleterTests.cs index 155d73896c..74524eee64 100644 --- a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/Identities/IdentityDeleterTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Identities/IdentityDeleterTests.cs @@ -1,12 +1,12 @@ using Backbone.BuildingBlocks.Application.Identities; -using Backbone.Modules.Synchronization.Application.Datawallets.Commands.DeleteDatawalletsOfIdentity; -using Backbone.Modules.Synchronization.Application.Identities; -using Backbone.Modules.Synchronization.Application.SyncRuns.Commands.DeleteExternalEventsOfIdentity; -using Backbone.Modules.Synchronization.Application.SyncRuns.Commands.DeleteSyncRunsOfIdentity; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.DeleteDatawalletsOfIdentity; +using Backbone.Modules.Synchronization.Module.Features.Identities.DeleteIdentity; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteExternalEventsOfIdentity; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteSyncRunsOfIdentity; using FakeItEasy; using MediatR; -namespace Backbone.Modules.Synchronization.Application.Tests.Tests.Identities; +namespace Backbone.Modules.Synchronization.Module.Tests.Tests.Identities; public class IdentityDeleterTests : AbstractTestsBase { diff --git a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/SyncRuns/Commands/FinalizeSyncRun/HandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/FinalizeSyncRun/HandlerTests.cs similarity index 97% rename from Modules/Synchronization/test/Synchronization.Application.Tests/Tests/SyncRuns/Commands/FinalizeSyncRun/HandlerTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/FinalizeSyncRun/HandlerTests.cs index cef0bce37c..a670e76e77 100644 --- a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/SyncRuns/Commands/FinalizeSyncRun/HandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/FinalizeSyncRun/HandlerTests.cs @@ -1,13 +1,13 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Synchronization.Application.Datawallets.DTOs; -using Backbone.Modules.Synchronization.Application.SyncRuns.Commands.FinalizeSyncRun; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeExternalEventSync; using Backbone.Modules.Synchronization.Infrastructure.Persistence.Database; using Backbone.UnitTestTools.Shouldly.Extensions; using FakeItEasy; -namespace Backbone.Modules.Synchronization.Application.Tests.Tests.SyncRuns.Commands.FinalizeSyncRun; +namespace Backbone.Modules.Synchronization.Module.Tests.Tests.SyncRuns.Commands.FinalizeSyncRun; public class HandlerTests : RequestHandlerTestsBase { diff --git a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/SyncRuns/Commands/RefreshExpirationTimeOfSyncRun/HandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/RefreshExpirationTimeOfSyncRun/HandlerTests.cs similarity index 94% rename from Modules/Synchronization/test/Synchronization.Application.Tests/Tests/SyncRuns/Commands/RefreshExpirationTimeOfSyncRun/HandlerTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/RefreshExpirationTimeOfSyncRun/HandlerTests.cs index c0c6439a9c..0a0c9a2737 100644 --- a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/SyncRuns/Commands/RefreshExpirationTimeOfSyncRun/HandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/RefreshExpirationTimeOfSyncRun/HandlerTests.cs @@ -1,13 +1,13 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Synchronization.Application.SyncRuns.Commands.RefreshExpirationTimeOfSyncRun; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.RefreshExpirationTimeOfSyncRun; using Backbone.Modules.Synchronization.Infrastructure.Persistence.Database; using Backbone.Tooling; using Backbone.UnitTestTools.Shouldly.Extensions; using FakeItEasy; -namespace Backbone.Modules.Synchronization.Application.Tests.Tests.SyncRuns.Commands.RefreshExpirationTimeOfSyncRun; +namespace Backbone.Modules.Synchronization.Module.Tests.Tests.SyncRuns.Commands.RefreshExpirationTimeOfSyncRun; public class HandlerTests : RequestHandlerTestsBase { diff --git a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/SyncRuns/Commands/StartSyncRun/HandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/StartSyncRun/HandlerTests.cs similarity index 97% rename from Modules/Synchronization/test/Synchronization.Application.Tests/Tests/SyncRuns/Commands/StartSyncRun/HandlerTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/StartSyncRun/HandlerTests.cs index 50ab30ae5e..063809cedd 100644 --- a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/SyncRuns/Commands/StartSyncRun/HandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/StartSyncRun/HandlerTests.cs @@ -2,8 +2,8 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Synchronization.Application.SyncRuns.Commands.StartSyncRun; -using Backbone.Modules.Synchronization.Application.SyncRuns.DTOs; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.StartSyncRun; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using Backbone.Modules.Synchronization.Infrastructure.Persistence.Database; using Backbone.Tooling; @@ -12,7 +12,7 @@ using Microsoft.Data.Sqlite; using Microsoft.EntityFrameworkCore; -namespace Backbone.Modules.Synchronization.Application.Tests.Tests.SyncRuns.Commands.StartSyncRun; +namespace Backbone.Modules.Synchronization.Module.Tests.Tests.SyncRuns.Commands.StartSyncRun; public class HandlerTests : AbstractTestsBase { diff --git a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/SyncRuns/Commands/StartSyncRun/StartSyncRunCommandValidatorTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/StartSyncRun/StartSyncRunCommandValidatorTests.cs similarity index 79% rename from Modules/Synchronization/test/Synchronization.Application.Tests/Tests/SyncRuns/Commands/StartSyncRun/StartSyncRunCommandValidatorTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/StartSyncRun/StartSyncRunCommandValidatorTests.cs index d36dd4e3f7..1dd44c0f69 100644 --- a/Modules/Synchronization/test/Synchronization.Application.Tests/Tests/SyncRuns/Commands/StartSyncRun/StartSyncRunCommandValidatorTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/StartSyncRun/StartSyncRunCommandValidatorTests.cs @@ -1,8 +1,8 @@ -using Backbone.Modules.Synchronization.Application.SyncRuns.Commands.StartSyncRun; -using Backbone.Modules.Synchronization.Application.SyncRuns.DTOs; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.StartSyncRun; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; using FluentValidation.TestHelper; -namespace Backbone.Modules.Synchronization.Application.Tests.Tests.SyncRuns.Commands.StartSyncRun; +namespace Backbone.Modules.Synchronization.Module.Tests.Tests.SyncRuns.Commands.StartSyncRun; public class StartSyncRunCommandValidatorTests : AbstractTestsBase { diff --git a/Modules/Synchronization/test/Synchronization.Application.Tests/packages.lock.json b/Modules/Synchronization/test/Synchronization.Module.Tests/packages.lock.json similarity index 60% rename from Modules/Synchronization/test/Synchronization.Application.Tests/packages.lock.json rename to Modules/Synchronization/test/Synchronization.Module.Tests/packages.lock.json index 328c7b0cb7..b5b26313a6 100644 --- a/Modules/Synchronization/test/Synchronization.Application.Tests/packages.lock.json +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/packages.lock.json @@ -38,6 +38,22 @@ "xunit.v3.core.mtp-v2": "[3.2.2]" } }, + "Asp.Versioning.Abstractions": { + "type": "Transitive", + "resolved": "10.1.0", + "contentHash": "RwdgC5O0baZ4pt30pAKKPQHq2CV4unBKA4HWoTeu7NY9ZwXM0dWYGf1Ipc5GK0eFBe9cMeqz4pGpPncMz4/ZNQ==", + "dependencies": { + "Microsoft.Extensions.Primitives": "10.0.0" + } + }, + "Asp.Versioning.Http": { + "type": "Transitive", + "resolved": "10.0.1", + "contentHash": "g0ayV/9ho3tGgooC6eF5p1063I1WzlxFJDYQrigcGnW+mLvui6eXrcW5hzTHhQREroUR3ZwXQrIN2SAIoi+KDw==", + "dependencies": { + "Asp.Versioning.Abstractions": "10.1.0" + } + }, "AWSSDK.Core": { "type": "Transitive", "resolved": "4.0.100.9", @@ -66,16 +82,6 @@ "System.Memory.Data": "1.0.2" } }, - "Azure.Identity": { - "type": "Transitive", - "resolved": "1.17.1", - "contentHash": "MSZkBrctcpiGxs9Cvr2VKKoN6qFLZlP3I6xuCWJ9iTgitI5Rgxtk5gfOSpXPZE3+CJmZ/mnqpQyGyjawFn5Vvg==", - "dependencies": { - "Azure.Core": "1.50.0", - "Microsoft.Identity.Client": "4.78.0", - "Microsoft.Identity.Client.Extensions.Msal": "4.78.0" - } - }, "Azure.Storage.Common": { "type": "Transitive", "resolved": "12.28.0", @@ -250,6 +256,25 @@ "Microsoft.AspNetCore.Cryptography.Internal": "10.0.10" } }, + "Microsoft.AspNetCore.DataProtection": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "5sfrNrBShTlJeXvWNxjPS7ilLY4H6MICZPMZr/2vjoDoBH5Z8sQYJwbhulqfXh4yIpxIto0TcmOQHOElvpq+iQ==", + "dependencies": { + "Microsoft.AspNetCore.Cryptography.Internal": "10.0.10", + "Microsoft.AspNetCore.DataProtection.Abstractions": "10.0.10", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", + "Microsoft.Extensions.Logging.Abstractions": "10.0.10", + "Microsoft.Extensions.Options": "10.0.10", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "Microsoft.AspNetCore.DataProtection.Abstractions": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "q2RNx0N/qrsU+JgbPE78I9pu5ekwguitAFVoeE1NCgxtkUTguvf7oTzBnn42zSQxuugJ4fmj0RSarob8Rvorrg==" + }, "Microsoft.Azure.Amqp": { "type": "Transitive", "resolved": "2.7.0", @@ -260,6 +285,11 @@ "resolved": "10.0.9", "contentHash": "Aq7M8lG6BrHeatqKqncVm9m55ec34k6nnfPRLe/PvGg+b/pAsRM2ejofeKmCLjTXMa+5NGXm382f8CG/D5WDow==" }, + "Microsoft.Bcl.Cryptography": { + "type": "Transitive", + "resolved": "10.0.2", + "contentHash": "LG9Yll3B5aNpxv0+D47g6LiOiKBIlodhcHdQwcYzo8VeexFLGqx5ymetmA2aBRyo9cCcWsQWrFsdbsr8LvmWDw==" + }, "Microsoft.CodeCoverage": { "type": "Transitive", "resolved": "18.8.1", @@ -267,22 +297,34 @@ }, "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", + "dependencies": { + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" + } + }, + "Microsoft.Data.SqlClient.Extensions.Abstractions": { + "type": "Transitive", + "resolved": "7.0.2", + "contentHash": "Zx7z61fG2Nc6LdDn4jA7b5Aj1ABrljkOPRE31RvVUdjF6IgbG60leDUhMCafsnWFgaheiK3iqpLe+kbf5Z5L8Q==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)" } }, + "Microsoft.Data.SqlClient.Internal.Logging": { + "type": "Transitive", + "resolved": "7.0.2", + "contentHash": "iqgYBbGSVy/DIYWjzmQOa964Kn4rs4wW5vg2IamqVK0fQqfTiILVR5hMK27XWqoyONtAZs+VxH354cPJBtSnbg==" + }, "Microsoft.Data.SqlClient.SNI.runtime": { "type": "Transitive", "resolved": "6.0.2", @@ -329,6 +371,21 @@ "Microsoft.SqlServer.Types": "160.1000.6" } }, + "Microsoft.Extensions.AmbientMetadata.Application": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "/FYCIyhRLrDwIg29tB/21/Rp7XMaEP/gWR5Cxyi4GgWcN/v/XXUpU52yhQux0s2SQy1Z0C1wnhptCMvLaaT45Q==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.10", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10" + } + }, + "Microsoft.Extensions.ApiDescription.Server": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "NCWCGiwRwje8773yzPQhvucYnnfeR+ZoB1VRIrIMp4uaeUNw7jvEPHij3HIbwCDuNCrNcphA00KSAR9yD9qmbg==" + }, "Microsoft.Extensions.Caching.Abstractions": { "type": "Transitive", "resolved": "10.0.10", @@ -399,6 +456,14 @@ "Microsoft.Extensions.FileProviders.Physical": "10.0.10" } }, + "Microsoft.Extensions.DependencyInjection.AutoActivation": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "LXwOAsnrflu2ln+Bxj7y3Zc/Pn4HquCCRzW81oOIuRsM8F75TxwA/ZpSFZ5E1+YkVpndz7BcHY4ThFSjjA4vbQ==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10" + } + }, "Microsoft.Extensions.DependencyModel": { "type": "Transitive", "resolved": "10.0.10", @@ -423,6 +488,14 @@ "Microsoft.Extensions.Options": "10.0.10" } }, + "Microsoft.Extensions.Diagnostics.ExceptionSummarization": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "tXmzwQeWgiycaLOtvSFnz0TPkJxXTyZrkwSVPTr83FgSiMj3BD/8eIbvrpGi5rzc2AgfKyegKo1ntJlJFey1Zg==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10" + } + }, "Microsoft.Extensions.Diagnostics.HealthChecks": { "type": "Transitive", "resolved": "10.0.10", @@ -462,6 +535,48 @@ "resolved": "10.0.10", "contentHash": "jSOCVxEwCd4Aq925kJVz1kSO1EpX2OHYKL04qVREXkDU7Ce3pVDdHPYm+fEy8y/th2kJf/DAstRHpJAqoNWP8w==" }, + "Microsoft.Extensions.Http": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "DuEBLw2y7ZBfilnaJtlge8f2M49932v43t7j1InceXVjcZzxNrSEkobYXdgZkXuPFnFbKcbWpAS+fZgYEW1BhA==", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "10.0.10", + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", + "Microsoft.Extensions.Diagnostics": "10.0.10", + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.Extensions.Logging.Abstractions": "10.0.10", + "Microsoft.Extensions.Options": "10.0.10" + } + }, + "Microsoft.Extensions.Http.Diagnostics": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "2pYnolFkigH7N6A5WHdGx93iZ8dIhrBnu4ZkjvB6RwbHzYmIy/iXVe12pdrViNDdeBSmKZ5FA9YP/xhwLT7q7A==", + "dependencies": { + "Microsoft.Extensions.Http": "10.0.10", + "Microsoft.Extensions.Telemetry": "10.8.0" + } + }, + "Microsoft.Extensions.Http.Polly": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "ceKyX9V/C+mtapMfXQ0ClKRkxDHAW2AAJoDgTcsh7UdOteCQKB5wRTFgHJ82Lh/3O+UlPA47LRGEZkRxtz/lCA==", + "dependencies": { + "Microsoft.Extensions.Http": "10.0.10", + "Polly": "7.2.4", + "Polly.Extensions.Http": "3.0.0" + } + }, + "Microsoft.Extensions.Http.Resilience": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "XtbZyYVxSNn1Aj2Z0PA8yauS12hPszTWDZ3GtZ5Vww7Ai3d8Pm841jMBnTvoTf1t9mRf3eSB38V5KUWxH6/4oQ==", + "dependencies": { + "Microsoft.Extensions.Http.Diagnostics": "10.8.0", + "Microsoft.Extensions.ObjectPool": "10.0.10", + "Microsoft.Extensions.Resilience": "10.8.0" + } + }, "Microsoft.Extensions.Logging.Configuration": { "type": "Transitive", "resolved": "10.0.10", @@ -545,6 +660,31 @@ "resolved": "10.0.10", "contentHash": "5wu/GrYVd8mG2DVUw3vFJzF+O336TyTGg/Kmcgw9bfwYhCoFiV5lR5QeEmKecJyrW4W54nMfD3p3589E8a7czQ==" }, + "Microsoft.Extensions.Resilience": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "RH/gv0ZcCnQ3d30lxb8+T2o661TwZq/K5eMwp488goQLX1QYqWN3i8L8XlN9DhrqP2Zcf0EtsWaKpJO3yHDUTw==", + "dependencies": { + "Microsoft.Extensions.Diagnostics": "10.0.10", + "Microsoft.Extensions.Diagnostics.ExceptionSummarization": "10.8.0", + "Microsoft.Extensions.Options.ConfigurationExtensions": "10.0.10", + "Microsoft.Extensions.Telemetry.Abstractions": "10.8.0", + "Polly.Extensions": "8.4.2", + "Polly.RateLimiting": "8.4.2" + } + }, + "Microsoft.Extensions.Telemetry": { + "type": "Transitive", + "resolved": "10.8.0", + "contentHash": "IIWjDZguUJt6yNld9J4V88xuOUzpC76wBwfnRJLRmacmyTTl9jA8+KP5PuHPi7CKz/Vk/q+lQYmobiopuzapzA==", + "dependencies": { + "Microsoft.Extensions.AmbientMetadata.Application": "10.8.0", + "Microsoft.Extensions.DependencyInjection.AutoActivation": "10.8.0", + "Microsoft.Extensions.Logging.Configuration": "10.0.10", + "Microsoft.Extensions.ObjectPool": "10.0.10", + "Microsoft.Extensions.Telemetry.Abstractions": "10.8.0" + } + }, "Microsoft.Extensions.Telemetry.Abstractions": { "type": "Transitive", "resolved": "10.8.0", @@ -575,50 +715,57 @@ }, "Microsoft.IdentityModel.Abstractions": { "type": "Transitive", - "resolved": "8.14.0", - "contentHash": "iwbCpSjD3ehfTwBhtSNEtKPK0ICun6ov7Ibx6ISNA9bfwIyzI2Siwyi9eJFCJBwxowK9xcA1mj+jBWiigeqgcQ==" + "resolved": "8.19.2", + "contentHash": "HJbo/lnSfNHUfphPRT910poQc4T2/9+8svFLvzuaYHGAOJ2Tu+oEDqpX0BVP3BJ4OuUM1kylEKyaiX2fCAK3Cw==" }, "Microsoft.IdentityModel.JsonWebTokens": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "3Izi75UCUssvo8LPx3OVnEeZay58qaFicrtSnbtUt7q8qQi0gy46gh4V8VUTkMVMKXV6VMyjBVmeNNgeCUJuIw==", + "resolved": "8.19.2", + "contentHash": "ui3fuBT4fs8kdKfBthI4NzLYIBIneEVS8UrL1JVBzAn80UiKmngBBi0BEByE7n/9c+EElcfFlCMFFTqpkBSLNA==", "dependencies": { - "Microsoft.IdentityModel.Tokens": "7.7.1" + "Microsoft.IdentityModel.Tokens": "8.19.2" } }, "Microsoft.IdentityModel.Logging": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "BZNgSq/o8gsKExdYoBKPR65fdsxW0cTF8PsdqB8y011AGUJJW300S/ZIsEUD0+sOmGc003Gwv3FYbjrVjvsLNQ==", + "resolved": "8.19.2", + "contentHash": "r5YLDIxGOnkVJHrqXv/iD1FM1CgGrQOdriXuvuWvTPmKbnGANhEysq9XKmN6IHjf2a+9bAGEpnoRBsAQlvJU5w==", "dependencies": { - "Microsoft.IdentityModel.Abstractions": "7.7.1" + "Microsoft.IdentityModel.Abstractions": "8.19.2" } }, "Microsoft.IdentityModel.Protocols": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "h+fHHBGokepmCX+QZXJk4Ij8OApCb2n2ktoDkNX5CXteXsOxTHMNgjPGpAwdJMFvAL7TtGarUnk3o97NmBq2QQ==", + "resolved": "8.19.2", + "contentHash": "sGxSsSrZXNmca6D+jHH2rVRyo2nNRd/g4H9CFbPmLLq0xgoH1U0orLWE5minfijw7+zq49tBs7txenbfAErRoQ==", "dependencies": { - "Microsoft.IdentityModel.Tokens": "7.7.1" + "Microsoft.IdentityModel.Tokens": "8.19.2" } }, "Microsoft.IdentityModel.Protocols.OpenIdConnect": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "yT2Hdj8LpPbcT9C9KlLVxXl09C8zjFaVSaApdOwuecMuoV4s6Sof/mnTDz/+F/lILPIBvrWugR9CC7iRVZgbfQ==", + "resolved": "8.16.0", + "contentHash": "h4yVXyJsEBBX5lg2G5ftMsi5JzcNEGAzrNphA6DQ6eOd8P0s+cDCOyPwVTYLePZvJL5unbPvYIvzrbTXzFjXnQ==", "dependencies": { - "Microsoft.IdentityModel.Protocols": "7.7.1", - "System.IdentityModel.Tokens.Jwt": "7.7.1" + "Microsoft.IdentityModel.Protocols": "8.16.0", + "System.IdentityModel.Tokens.Jwt": "8.16.0" } }, "Microsoft.IdentityModel.Tokens": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "fQ0VVCba75lknUHGldi3iTKAYUQqbzp1Un8+d9cm9nON0Gs8NAkXddNg8iaUB0qi/ybtAmNWizTR4avdkCJ9pQ==", + "resolved": "8.19.2", + "contentHash": "GtPC1S02uH1gOO4fQ+zRysIicKmEXaYFP8PIkdJYXqMyruYhopre4ozVHp0XiDSA0+GJvOZH9prxCPvgBMg4Ww==", "dependencies": { - "Microsoft.IdentityModel.Logging": "7.7.1" + "Microsoft.Bcl.Cryptography": "10.0.2", + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.IdentityModel.Logging": "8.19.2" } }, + "Microsoft.OpenApi": { + "type": "Transitive", + "resolved": "2.7.5", + "contentHash": "0FA67RSnRM4tcBKqiqVu/HPdZ9+QOKbmeRjxRUGTCjPU4C0bmUhd97Dso7Yild5P7nOV6GxJ2xrK0Kv/O9xp0w==" + }, "Microsoft.SqlServer.Server": { "type": "Transitive", "resolved": "1.0.0", @@ -706,11 +853,257 @@ "Microsoft.Extensions.Logging.Abstractions": "10.0.0" } }, + "OpenIddict": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "Dih/QGs3ptgvsioSOdvn/6KMy3el5ImMimp/9SV9VX/FqTT6CxBOGoxaukfJeVqgcxQrgge1vQvFp3kWtgOKGg==", + "dependencies": { + "OpenIddict.Abstractions": "7.6.0", + "OpenIddict.Client": "7.6.0", + "OpenIddict.Client.SystemIntegration": "7.6.0", + "OpenIddict.Client.SystemNetHttp": "7.6.0", + "OpenIddict.Client.WebIntegration": "7.6.0", + "OpenIddict.Core": "7.6.0", + "OpenIddict.Server": "7.6.0", + "OpenIddict.Validation": "7.6.0", + "OpenIddict.Validation.ServerIntegration": "7.6.0", + "OpenIddict.Validation.SystemNetHttp": "7.6.0" + } + }, + "OpenIddict.Abstractions": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "Fp2MUvm6wwsqk6+ieUM/3MTMlbCL1zwSXixM0xC22FgKcl5EQB7E0vV38IRI/rSF8UGgvC/AOjMOF6FoFyks8g==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.10", + "Microsoft.Extensions.Primitives": "10.0.10", + "Microsoft.IdentityModel.Tokens": "8.19.2" + } + }, + "OpenIddict.Client": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "X+Sg1wRKeVOeayJuZ4/0M74zXRENvXOAl2JRPF4MaEOoS9Pj6WCWMLriWS0wwEC1ODxQmLaG3tYZfcdC9hU40g==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.IdentityModel.JsonWebTokens": "8.19.2", + "Microsoft.IdentityModel.Protocols": "8.19.2", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.Client.AspNetCore": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "XjEj75mTkvMn1sj4jONWLTRK6KzeY/Hou8218nwLnJnqYmKJ1th7UDfadNTb530KSC+WPLxfvi7grzIv0xzebw==", + "dependencies": { + "OpenIddict.Client": "7.6.0" + } + }, + "OpenIddict.Client.DataProtection": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ZVhuFSzPbAaZkiRRrr77oyJnciWhytPnTZ1ByaCGfDx1b977crbcJww2asfkMpgNzcbWWAR6SgcS05hklsQflw==", + "dependencies": { + "Microsoft.AspNetCore.DataProtection": "10.0.10", + "OpenIddict.Client": "7.6.0", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "OpenIddict.Client.SystemIntegration": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "yqnyQH6CG46+y2Rp4UcIOXNcWgDvITW43PULI9sr6xYCS34J/kO6GU6fhwOGUfUJjRdOis3Xj00WwUZxZUQ5ZQ==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.10", + "OpenIddict.Client": "7.6.0" + } + }, + "OpenIddict.Client.SystemNetHttp": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "HsiL7rCRCFd7D1uvi6+HLmlkw9ykbLsEJ1GJMttuLB3/C8/LcqX+wHxr1W/GXl2YXhleNMW21I5AeVtGnfd9tg==", + "dependencies": { + "Microsoft.Extensions.Http.Polly": "10.0.10", + "Microsoft.Extensions.Http.Resilience": "10.8.0", + "OpenIddict.Client": "7.6.0" + } + }, + "OpenIddict.Client.WebIntegration": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "vJzIkHZwjB8vp6Hhxa8s9ruh/L+ZgpJUszGVP+kQQoqDQ8yZygbl0xWKuAHQ4OCIk3FTeSib9xH8uetm47YPgg==", + "dependencies": { + "OpenIddict.Client": "7.6.0", + "OpenIddict.Client.SystemNetHttp": "7.6.0" + } + }, + "OpenIddict.EntityFrameworkCore.Models": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "DrWB0dLfsg3mZhWABAlqSZKXin4Q4Pn8V4S7/1JxP5T/7Ncl0y45rM9L2EWv/zdydaiTOFKi4jRDBZAgBxUjaQ==" + }, + "OpenIddict.Server": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "0c7wlRYcP2Smgjp3PWyyojZ972H26otp6irW/WAFEbg4ZylcUvtlw0lkrCr/K8s5lAnYZwrpyzguwrJhXGKPVg==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.IdentityModel.JsonWebTokens": "8.19.2", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.Server.AspNetCore": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "m2Hk2R4gaTlEYBvNHz2fvIr38p1agiR2nW2gi5WMgSByFHxeEK5uhxqVGdSB2kEHRtp9kza/zBWBgIM4TdcVqw==", + "dependencies": { + "OpenIddict.Server": "7.6.0" + } + }, + "OpenIddict.Server.DataProtection": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ScGEt6uNuk2MZ/6DzVAMi/QegZulkvYKPRMrRu5/8/uI8P5o5XbEhEvancFx9YmBHL1uGE8SIByfTfxJx8kefA==", + "dependencies": { + "Microsoft.AspNetCore.DataProtection": "10.0.10", + "OpenIddict.Server": "7.6.0", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "OpenIddict.Validation": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ovzLQJ31uWZpgLdRVuD9Gmu8wxvhvbXW32MFTglFblhfqRwj/hMcEGOo8hdl+ir3QpDr9NUDAORA+v3S7xc6IA==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.IdentityModel.JsonWebTokens": "8.19.2", + "Microsoft.IdentityModel.Protocols": "8.19.2", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.Validation.AspNetCore": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "oby5/Ymdxd+g1TGtyTGrcK5J3/NSI80aw2CJgULwwIxraiCjiIfexrBjCxkPchWqPNFe6aAdGJ/Jz6amHNfrzg==", + "dependencies": { + "OpenIddict.Validation": "7.6.0" + } + }, + "OpenIddict.Validation.DataProtection": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "ckC2xcPeJ/kLSyJXNOmpmFLnA1qM6zC8RR5d2pUtoToA6caMikebkL3NmRjBgxBRVvFmi7x9lMJ7+YmrI+uAlg==", + "dependencies": { + "Microsoft.AspNetCore.DataProtection": "10.0.10", + "OpenIddict.Validation": "7.6.0", + "System.Security.Cryptography.Xml": "10.0.10" + } + }, + "OpenIddict.Validation.ServerIntegration": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "0bHhKsMV45UMPM5Phh51+g/tMUJNRzOWe6p/5opKeMQV8XoO3y3J9o/ZbfZ0j4qTTbQ7pqzEKSZaS4cGs0B3nQ==", + "dependencies": { + "OpenIddict.Server": "7.6.0", + "OpenIddict.Validation": "7.6.0" + } + }, + "OpenIddict.Validation.SystemNetHttp": { + "type": "Transitive", + "resolved": "7.6.0", + "contentHash": "N3MHlVaik22apnhxCTsqP6TjwRB/h874+5ks/m1+wKmOWqMyJ5UjIaZCvUOrDSMtDiEVted8qkjEJRzjAe0rGQ==", + "dependencies": { + "Microsoft.Extensions.Http.Polly": "10.0.10", + "Microsoft.Extensions.Http.Resilience": "10.8.0", + "OpenIddict.Validation": "7.6.0" + } + }, + "OpenTelemetry": { + "type": "Transitive", + "resolved": "1.18.0", + "contentHash": "13AKxycK+olOLe061MjliPTNBR/DUkjyRr0b9zwUhKyMjFS8lXS7G31R85rkbM55up2YFmdykWdAw2giBDJpiQ==", + "dependencies": { + "Microsoft.Extensions.Configuration.EnvironmentVariables": "10.0.0", + "Microsoft.Extensions.Diagnostics.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Configuration": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "1.18.0" + } + }, + "OpenTelemetry.Api.ProviderBuilderExtensions": { + "type": "Transitive", + "resolved": "1.18.0", + "contentHash": "io6A6PJFp3vIObRGf6oPjdHsdglkinXt/0SpTDJHrVnsLxUtOzwh/QwTsnhBJ43wJ6QcGMkyNzsSSY8XEB1Q5Q==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "OpenTelemetry.Api": "1.18.0" + } + }, "Polly.Core": { "type": "Transitive", "resolved": "8.7.0", "contentHash": "BS2t+nsBer16PIebCEPNBK5fgMisADQyRCd7K+BgkMWpFmSaiYE+rVVNpFhGRqUkJmNSLmw0uCNzHHWfgml28Q==" }, + "Polly.Extensions": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "GZ9vRVmR0jV2JtZavt+pGUsQ1O1cuRKG7R7VOZI6ZDy9y6RNPvRvXK1tuS4ffUrv8L0FTea59oEuQzgS0R7zSA==", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "Polly.Core": "8.4.2" + } + }, + "Polly.Extensions.Http": { + "type": "Transitive", + "resolved": "3.0.0", + "contentHash": "drrG+hB3pYFY7w1c3BD+lSGYvH2oIclH8GRSehgfyP5kjnFnHKQuuBhuHLv+PWyFuaTDyk/vfRpnxOzd11+J8g==", + "dependencies": { + "Polly": "7.1.0" + } + }, + "Polly.RateLimiting": { + "type": "Transitive", + "resolved": "8.4.2", + "contentHash": "ehTImQ/eUyO07VYW2WvwSmU9rRH200SKJ/3jku9rOkyWE0A2JxNFmAVms8dSn49QLSjmjFRRSgfNyOgr/2PSmA==", + "dependencies": { + "Polly.Core": "8.4.2", + "System.Threading.RateLimiting": "8.0.0" + } + }, + "runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "A8v6PGmk+UGbfWo5Ixup0lPM4swuSwOiayJExZwKIOjTlFFQIsu3QnDXECosBEyrWSPryxBVrdqtJyhK3BaupQ==", + "dependencies": { + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": "4.4.0", + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": "4.4.0" + } + }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, + "Serilog.Extensions.Logging": { + "type": "Transitive", + "resolved": "10.0.0", + "contentHash": "vx0kABKl2dWbBhhqAfTOk53/i8aV/5VaT3a6il9gn72Wqs2pM7EK2OB6No6xdqK2IaY6Zf9gdjLuK9BVa2rT+Q==", + "dependencies": { + "Microsoft.Extensions.Logging": "10.0.0", + "Serilog": "4.2.0" + } + }, "SQLitePCLRaw.bundle_e_sqlite3": { "type": "Transitive", "resolved": "2.1.11", @@ -733,6 +1126,27 @@ "SQLitePCLRaw.core": "2.1.11" } }, + "Swashbuckle.AspNetCore.Swagger": { + "type": "Transitive", + "resolved": "10.2.3", + "contentHash": "1jUUs3WQnrS0FUtaZPLSy1yYMEwS1zlvDmvQ2/eldPHUANX0LJSLVZecCMgSMdeGiRqeaRrIXLtSz++TCiTMww==", + "dependencies": { + "Microsoft.OpenApi": "2.7.5" + } + }, + "Swashbuckle.AspNetCore.SwaggerGen": { + "type": "Transitive", + "resolved": "10.2.3", + "contentHash": "y7t4coDRAeFYChmvlMRiH2OjbiRrm9AVIDgt17fQfs3x9PVAI5PiwWYOhg+4F13R4Q36WDc9lqfoOnNa3tNbGg==", + "dependencies": { + "Swashbuckle.AspNetCore.Swagger": "10.2.3" + } + }, + "Swashbuckle.AspNetCore.SwaggerUI": { + "type": "Transitive", + "resolved": "10.2.3", + "contentHash": "nthWONRs/FJ4yyG206g1cC52WEG8EqrjuMWjGdR+5XG7lbjFto6NqcI9EMICgVFom/UivIjUVwI76ZHbHwTPfQ==" + }, "System.ClientModel": { "type": "Transitive", "resolved": "1.14.0", @@ -751,11 +1165,11 @@ }, "System.Configuration.ConfigurationManager": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "vPinosRgEk1CGjohbv0pDuz6gPprkWo5xvBTjOJjks5JOgOEWvPndq5NngGxiTcBcy1+k9GwzZ1c3Bp2fU5ezw==", + "resolved": "9.0.13", + "contentHash": "GbBrJq9S/gYpHzm7Pxx6Y5tDyfSfyxW6tlP5oiKJV38uf19Wp+GIIAnWfyL1zmNiz1+EjwVapw2WkBFvvqKQzg==", "dependencies": { - "System.Diagnostics.EventLog": "9.0.11", - "System.Security.Cryptography.ProtectedData": "9.0.11" + "System.Diagnostics.EventLog": "9.0.13", + "System.Security.Cryptography.ProtectedData": "9.0.13" } }, "System.Diagnostics.EventLog": { @@ -765,11 +1179,11 @@ }, "System.IdentityModel.Tokens.Jwt": { "type": "Transitive", - "resolved": "7.7.1", - "contentHash": "rQkO1YbAjLwnDJSMpRhRtrc6XwIcEOcUvoEcge+evurpzSZM3UNK+MZfD3sKyTlYsvknZ6eJjSBfnmXqwOsT9Q==", + "resolved": "8.16.0", + "contentHash": "rrs2u7DRMXQG2yh0oVyF/vLwosfRv20Ld2iEpYcKwQWXHjfV+gFXNQsQ9p008kR9Ou4pxBs68Q6/9zC8Gi1wjg==", "dependencies": { - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Tokens": "7.7.1" + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Tokens": "8.16.0" } }, "System.IO.Hashing": { @@ -792,13 +1206,21 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "System.Security.Cryptography.ProtectedData": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "s8yUYuYYu+PAwvBdhLG1KyrGrk9gkYeuPxfAsXsTqqWyepwSyEw8hAaflW4nO98NG52YpYI1am2+9o+79h2RtQ==" + "resolved": "9.0.13", + "contentHash": "t8S9IDpjJKsLpLkeBdW8cWtcPyYqrGu93Dej1RO6WwuL/lkFSqWlan3rMJfortqz1mRIh+sys2AFsSA6jWJ3Jg==" + }, + "System.Security.Cryptography.Xml": { + "type": "Transitive", + "resolved": "10.0.10", + "contentHash": "Mz6Y+s+uMQKj1H2BUF0OhlmaOQkLgSG34/IrUaBDirYBQ6bgwcFvO/XtXWcoDlBLFoFB0uKqDNhybHOd+fQK1A==", + "dependencies": { + "System.Security.Cryptography.Pkcs": "10.0.10" + } }, "System.Threading.RateLimiting": { "type": "Transitive", @@ -862,6 +1284,33 @@ "xunit.v3.runner.common": "[3.2.2]" } }, + "Backbone.BuildingBlocks.API": { + "type": "Project", + "dependencies": { + "Asp.Versioning.Mvc": "[10.0.1, 10.0.1]", + "Asp.Versioning.Mvc.ApiExplorer": "[10.0.1, 10.0.1]", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Module": "[1.0.0, )", + "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "Backbone.Modules.Devices.Infrastructure": "[1.0.0, )", + "Backbone.Tooling": "[1.0.0, )", + "DotNetDiag.HealthChecks.NpgSql": "[10.0.10, 10.0.10]", + "DotNetDiag.HealthChecks.SqlServer": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.Relational": "[10.0.10, 10.0.10]", + "OpenTelemetry.Exporter.OpenTelemetryProtocol": "[1.18.0, )", + "OpenTelemetry.Extensions.Hosting": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.AspNetCore": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.EntityFrameworkCore": "[1.18.0-beta.1, )", + "OpenTelemetry.Instrumentation.Http": "[1.18.0, 1.18.0]", + "OpenTelemetry.Instrumentation.Runtime": "[1.18.0, 1.18.0]", + "Polly": "[8.7.0, 8.7.0]", + "Serilog.Enrichers.Sensitive": "[2.1.0, 2.1.0]", + "Serilog.Extensions.Hosting": "[10.0.0, 10.0.0]", + "Swashbuckle.AspNetCore": "[10.2.3, 10.2.3]", + "System.Data.SqlClient": "[4.9.1, 4.9.1]" + } + }, "Backbone.BuildingBlocks.Application": { "type": "Project", "dependencies": { @@ -919,6 +1368,15 @@ "Serilog": "[4.4.0, 4.4.0]" } }, + "Backbone.BuildingBlocks.Module": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Microsoft.Extensions.Configuration.Abstractions": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.DependencyInjection.Abstractions": "[10.0.10, 10.0.10]", + "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" + } + }, "Backbone.Common.Infrastructure": { "type": "Project", "dependencies": { @@ -936,12 +1394,53 @@ "SimpleBase": "[5.6.3, 5.6.3]" } }, + "Backbone.Modules.Devices.Abstractions": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Application": "[1.0.0, )", + "Backbone.Modules.Devices.Domain": "[1.0.0, )" + } + }, "Backbone.Modules.Devices.Contracts": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Domain": "[1.0.0, )" } }, + "Backbone.Modules.Devices.Domain": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Domain": "[1.0.0, )", + "Backbone.DevelopmentKit.Identity": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Tooling": "[1.0.0, )", + "CSharpFunctionalExtensions": "[3.7.0, 3.7.0]", + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]" + } + }, + "Backbone.Modules.Devices.Infrastructure": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", + "Backbone.Modules.Devices.Abstractions": "[1.0.0, )", + "Backbone.Modules.Devices.Domain": "[1.0.0, )", + "BouncyCastle.Cryptography": "[2.7.0, 2.7.0]", + "FirebaseAdmin": "[3.6.0, 3.6.0]", + "JWT": "[11.1.0, 11.1.0]", + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.Relational": "[10.0.10, 10.0.10]", + "Microsoft.EntityFrameworkCore.SqlServer": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.DependencyInjection": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Identity.Core": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Identity.Stores": "[10.0.10, 10.0.10]", + "Microsoft.Extensions.Logging": "[10.0.10, 10.0.10]", + "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, 10.0.3]", + "OpenIddict.AspNetCore": "[7.6.0, 7.6.0]", + "OpenIddict.EntityFrameworkCore": "[7.6.0, 7.6.0]", + "Polly": "[8.7.0, 8.7.0]" + } + }, "Backbone.Modules.Files.Contracts": { "type": "Project", "dependencies": { @@ -960,19 +1459,12 @@ "Backbone.BuildingBlocks.Domain": "[1.0.0, )" } }, - "Backbone.Modules.Synchronization.Application": { + "Backbone.Modules.Synchronization.Abstractions": { "type": "Project", "dependencies": { "Backbone.BuildingBlocks.Application": "[1.0.0, )", "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", - "Backbone.Modules.Devices.Contracts": "[1.0.0, )", - "Backbone.Modules.Files.Contracts": "[1.0.0, )", - "Backbone.Modules.Messages.Contracts": "[1.0.0, )", - "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", - "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", - "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", - "FluentValidation": "[12.1.1, 12.1.1]", - "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]" + "Backbone.Modules.Synchronization.Domain": "[1.0.0, )" } }, "Backbone.Modules.Synchronization.Contracts": { @@ -994,7 +1486,7 @@ "dependencies": { "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", "Backbone.BuildingBlocks.Infrastructure": "[1.0.0, )", - "Backbone.Modules.Synchronization.Application": "[1.0.0, )", + "Backbone.Modules.Synchronization.Abstractions": "[1.0.0, )", "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", "Microsoft.Data.Sqlite.Core": "[10.0.10, 10.0.10]", "Microsoft.EntityFrameworkCore": "[10.0.10, 10.0.10]", @@ -1002,6 +1494,40 @@ "Npgsql.EntityFrameworkCore.PostgreSQL": "[10.0.3, 10.0.3]" } }, + "Backbone.Modules.Synchronization.Infrastructure.Database.Postgres": { + "type": "Project", + "dependencies": { + "Backbone.Modules.Synchronization.Infrastructure": "[1.0.0, )" + } + }, + "Backbone.Modules.Synchronization.Infrastructure.Database.SqlServer": { + "type": "Project", + "dependencies": { + "Backbone.Modules.Synchronization.Infrastructure": "[1.0.0, )" + } + }, + "Backbone.Modules.Synchronization.Module": { + "type": "Project", + "dependencies": { + "Backbone.BuildingBlocks.API": "[1.0.0, )", + "Backbone.BuildingBlocks.Application": "[1.0.0, )", + "Backbone.BuildingBlocks.Application.Abstractions": "[1.0.0, )", + "Backbone.BuildingBlocks.Module": "[1.0.0, )", + "Backbone.Modules.Devices.Contracts": "[1.0.0, )", + "Backbone.Modules.Files.Contracts": "[1.0.0, )", + "Backbone.Modules.Messages.Contracts": "[1.0.0, )", + "Backbone.Modules.Relationships.Contracts": "[1.0.0, )", + "Backbone.Modules.Synchronization.Abstractions": "[1.0.0, )", + "Backbone.Modules.Synchronization.Domain": "[1.0.0, )", + "Backbone.Modules.Synchronization.Infrastructure": "[1.0.0, )", + "Backbone.Modules.Synchronization.Infrastructure.Database.Postgres": "[1.0.0, )", + "Backbone.Modules.Synchronization.Infrastructure.Database.SqlServer": "[1.0.0, )", + "Backbone.Modules.Tokens.Contracts": "[1.0.0, )", + "FluentValidation": "[12.1.1, 12.1.1]", + "FluentValidation.DependencyInjectionExtensions": "[12.1.1, 12.1.1]", + "ReHackt.Extensions.Options.Validation": "[10.0.1, 10.0.1]" + } + }, "Backbone.Modules.Tokens.Contracts": { "type": "Project", "dependencies": { @@ -1029,6 +1555,24 @@ "Shouldly": "[4.3.0, 4.3.0]" } }, + "Asp.Versioning.Mvc": { + "type": "CentralTransitive", + "requested": "[10.0.1, 10.0.1]", + "resolved": "10.0.1", + "contentHash": "OqoFPKKxXkNmw62H3CgXkPrf1L4PPwwyYr9QMP6itt/khKTIayqaHhK6F2e3jt6KHc4s23cWAUbu+Z5GPEeMaw==", + "dependencies": { + "Asp.Versioning.Http": "10.0.1" + } + }, + "Asp.Versioning.Mvc.ApiExplorer": { + "type": "CentralTransitive", + "requested": "[10.0.1, 10.0.1]", + "resolved": "10.0.1", + "contentHash": "ylPZe+LheFp0pt2tSMq2pPeGAkMLqWVOn5+1/xOB/eUj889n9b35Sny08bSQ0ziAGIFjp3BBTXaYsWJjRoFV4A==", + "dependencies": { + "Asp.Versioning.Mvc": "10.0.1" + } + }, "Autofac": { "type": "CentralTransitive", "requested": "[9.3.2, 9.3.2]", @@ -1065,12 +1609,44 @@ "Azure.Storage.Common": "12.28.0" } }, + "BouncyCastle.Cryptography": { + "type": "CentralTransitive", + "requested": "[2.7.0, 2.7.0]", + "resolved": "2.7.0", + "contentHash": "U+12df8UEWHgBi04YVf/Lgi2dy3SItlIYvHjjEVa/BngCQIzDCDRBk50DDByCfDvSbe5pRNFr3b7UrVK2kMcLw==" + }, + "CSharpFunctionalExtensions": { + "type": "CentralTransitive", + "requested": "[3.7.0, 3.7.0]", + "resolved": "3.7.0", + "contentHash": "eMZp8tc88O96eEFutiIskF3LE8lFY3fjbNRGfNa1ca0CD9sB8A00r5ltyYDih/7UFdJdVbhVq7tGeHI8xj6DlQ==" + }, "Dapper": { "type": "CentralTransitive", "requested": "[2.1.79, 2.1.79]", "resolved": "2.1.79", "contentHash": "8YijbzgTfmqmQOnVNorYM6K++pxqnW3nJ4aC1sRHzxUA2CcuoJ9gsTem3kgBnPRMc38zZHl4Esb6hAezXIEEuw==" }, + "DotNetDiag.HealthChecks.NpgSql": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "lxb6wQ1YC/TpvZMVgbyeLP5dYOg/RJWLg1xlR+I0FeyfyMmukppKdwzBOrKRtZ8FHG3nV9xrVTaPdwRw0yL4Vw==", + "dependencies": { + "Microsoft.Extensions.Diagnostics.HealthChecks": "10.0.9", + "Npgsql": "10.0.3" + } + }, + "DotNetDiag.HealthChecks.SqlServer": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "6t2HP5VQR0GZDJiw8iZvzOTRC+84irUeaUuWvcqcnc4K5Mzrn/A9V0ucoyjySXOF1vGkdTHjlJMknJVYC9c2Hg==", + "dependencies": { + "Microsoft.Data.SqlClient": "7.0.2", + "Microsoft.Extensions.Diagnostics.HealthChecks": "10.0.9" + } + }, "EFCore.BulkExtensions.Core": { "type": "CentralTransitive", "requested": "[10.0.1, 10.0.1]", @@ -1104,6 +1680,16 @@ "NetTopologySuite.IO.SqlServerBytes": "2.1.0" } }, + "FirebaseAdmin": { + "type": "CentralTransitive", + "requested": "[3.6.0, 3.6.0]", + "resolved": "3.6.0", + "contentHash": "aP8UWyQYACDOZqnHN9WB77TS0DlB8kVj8/HB7evUaAhAgPJQ9y4NmISJ3kkYkWBG5va3PHvYN5H+ZDBhABSEFQ==", + "dependencies": { + "Google.Api.Gax.Rest": "4.13.1", + "Google.Apis.Auth": "1.73.0" + } + }, "FluentValidation": { "type": "CentralTransitive", "requested": "[12.1.1, 12.1.1]", @@ -1140,6 +1726,15 @@ "Google.Apis.Storage.v1": "[1.74.0.4115, 2.0.0)" } }, + "JWT": { + "type": "CentralTransitive", + "requested": "[11.1.0, 11.1.0]", + "resolved": "11.1.0", + "contentHash": "GbmNr2WUyY3Ma0rwuvmTDnE5tIV8gFNDWeua9Fn54HwrpvGfwQzi7HtEAnMgI4quf4MuJr0iwPkt9sKrNCq1Tg==", + "dependencies": { + "Newtonsoft.Json": "13.0.4" + } + }, "MediatR": { "type": "CentralTransitive", "requested": "[12.5.0, 12.5.0]", @@ -1156,6 +1751,16 @@ "resolved": "2.0.1", "contentHash": "FYv95bNT4UwcNA+G/J1oX5OpRiSUxteXaUt2BJbRSdRNiIUNbggJF69wy6mnk2wYToaanpdXZdCwVylt96MpwQ==" }, + "Microsoft.AspNetCore.Identity.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "/ZV8RMWbWob1ZGsF5f1wVJNNlFLPKCf2ba834PpQiNhirVQ/ksup5SujtuUsvByHEZgv+9dmjC/4Xdi75axmXQ==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "10.0.10", + "Microsoft.Extensions.Identity.Stores": "10.0.10" + } + }, "Microsoft.Data.Sqlite.Core": { "type": "CentralTransitive", "requested": "[10.0.10, 10.0.10]", @@ -1371,6 +1976,17 @@ "Microsoft.Extensions.Options": "10.0.10" } }, + "Microsoft.Extensions.Identity.Stores": { + "type": "CentralTransitive", + "requested": "[10.0.10, 10.0.10]", + "resolved": "10.0.10", + "contentHash": "WMG/9wPJPnwU2w1R/WPLO/RL2UpGpBhw9z6odAAUkFdZypzzXl620FJWEoPpuBUq6Q4GYgMg0FQVRCO6gO4MQQ==", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "10.0.10", + "Microsoft.Extensions.Identity.Core": "10.0.10", + "Microsoft.Extensions.Logging": "10.0.10" + } + }, "Microsoft.Extensions.Logging": { "type": "CentralTransitive", "requested": "[10.0.10, 10.0.10]", @@ -1412,12 +2028,109 @@ "Npgsql": "10.0.3" } }, + "OpenIddict.AspNetCore": { + "type": "CentralTransitive", + "requested": "[7.6.0, 7.6.0]", + "resolved": "7.6.0", + "contentHash": "FblhXU1SzSjL1nPsK5kqi+uMofNYLg1gwBU/qqc8diOafTv/6jLOhpCzzk+wISR8OnkS7H3oFMcTjy8aaTm8ww==", + "dependencies": { + "OpenIddict": "7.6.0", + "OpenIddict.Client.AspNetCore": "7.6.0", + "OpenIddict.Client.DataProtection": "7.6.0", + "OpenIddict.Server.AspNetCore": "7.6.0", + "OpenIddict.Server.DataProtection": "7.6.0", + "OpenIddict.Validation.AspNetCore": "7.6.0", + "OpenIddict.Validation.DataProtection": "7.6.0" + } + }, + "OpenIddict.Core": { + "type": "CentralTransitive", + "requested": "[7.6.0, 7.6.0]", + "resolved": "7.6.0", + "contentHash": "LJQ+GsSY6Nfw5FZ4NzCvL2kwYU1GNz6ygiUNGvqcKP0qXwstU59RDAjNKTCGkPPq4TQGnETqr4UsJgyK+AFxeA==", + "dependencies": { + "Microsoft.Extensions.Caching.Memory": "10.0.10", + "Microsoft.Extensions.Logging": "10.0.10", + "Microsoft.Extensions.Options": "10.0.10", + "OpenIddict.Abstractions": "7.6.0" + } + }, + "OpenIddict.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[7.6.0, 7.6.0]", + "resolved": "7.6.0", + "contentHash": "BWbgvgKbDcg3EuNJvmXtUzeLxg9c4bU+PfDnZetCjGwcnlCsWcASkjVexKKevtUgWxRWJTQFRchMA09OKmOF/w==", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "10.0.10", + "OpenIddict.Core": "7.6.0", + "OpenIddict.EntityFrameworkCore.Models": "7.6.0" + } + }, "OpenTelemetry.Api": { "type": "CentralTransitive", "requested": "[1.18.0, )", "resolved": "1.18.0", "contentHash": "Dhzm5oughIY9EWckt2J1yXcEbXpki5WCL2q7prJoYxzH6C7jdkfGtPMTkUVZZ4AhjJKzQnlC+kLSIlmIVwC4Vw==" }, + "OpenTelemetry.Exporter.OpenTelemetryProtocol": { + "type": "CentralTransitive", + "requested": "[1.18.0, )", + "resolved": "1.18.0", + "contentHash": "Et3WAviooKGObZjUZN8d6eTsdJs1YM3ZoN+KlWSAHksTmHG1nyGi9XGo2wb0fkFMWK0g80FOPdR1njg52Dm+aw==", + "dependencies": { + "OpenTelemetry": "1.18.0" + } + }, + "OpenTelemetry.Extensions.Hosting": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "u+JMA82H65MKwMvd2qUpL8C2qE4Jux2nvX9hmy036UK/Apv2YyIRYCttF/vlX6nMPcAKI8BXkscmL4QG3C69fw==", + "dependencies": { + "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", + "OpenTelemetry": "1.18.0" + } + }, + "OpenTelemetry.Instrumentation.AspNetCore": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "hBiMXE/CGIAHUOpi0gScNkjHB0L9XbCin5lZObL+dMBl4OmpndnHgxP3JZDnnGtU6qOzdeh8TYUV9f6Jgmmhlw==", + "dependencies": { + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.EntityFrameworkCore": { + "type": "CentralTransitive", + "requested": "[1.18.0-beta.1, )", + "resolved": "1.18.0-beta.1", + "contentHash": "n15cNXxkSl9G6KD41wZYmujjERYOBiIgn2VeesTFhLtHZ+QQQE3baLrCk7UyzidEw/uGObRcW3SKhqpyMpGe1w==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Http": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "/X57peOOa4a+9V4DSVXbuIWdsAxmU5gsxw8lu+gJU0zuewsYhC9f6qdm8GEW0VvqG9e+gxn0HdVR5G3YHcWDTw==", + "dependencies": { + "Microsoft.Extensions.Configuration": "10.0.0", + "Microsoft.Extensions.Options": "10.0.0", + "OpenTelemetry.Api.ProviderBuilderExtensions": "[1.18.0, 2.0.0)" + } + }, + "OpenTelemetry.Instrumentation.Runtime": { + "type": "CentralTransitive", + "requested": "[1.18.0, 1.18.0]", + "resolved": "1.18.0", + "contentHash": "McuXGjBJDL/Cown2PxfUQysK98MZG7ZDjO/IKUtaAx8t1m0PB0d+QtJC79RFTVipMhRIwjJiULNOp0OGfZbvwg==", + "dependencies": { + "OpenTelemetry.Api": "[1.18.0, 2.0.0)" + } + }, "Polly": { "type": "CentralTransitive", "requested": "[8.7.0, 8.7.0]", @@ -1452,6 +2165,25 @@ "resolved": "4.4.0", "contentHash": "ZC6Le3rr4TVJJjS4KsQAesxeF1EhW9qcZmmG7eP5Y2G3+gTGkJEUXkq4+tZNPtyp05I0wWOxnIjwtxFweJsObw==" }, + "Serilog.Enrichers.Sensitive": { + "type": "CentralTransitive", + "requested": "[2.1.0, 2.1.0]", + "resolved": "2.1.0", + "contentHash": "nlaEYMoHjJqncjQgc0Nv4LOIkAwUt4Nvmx3EMNjY4MKC7QqZs9zB0v/NwFnaWzLF7qztc7mna1bjn20Auohu0g==" + }, + "Serilog.Extensions.Hosting": { + "type": "CentralTransitive", + "requested": "[10.0.0, 10.0.0]", + "resolved": "10.0.0", + "contentHash": "E7juuIc+gzoGxgzFooFgAV8g9BfiSXNKsUok9NmEpyAXg2odkcPsMa/Yo4axkJRlh0se7mkYQ1GXDaBemR+b6w==", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "10.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "10.0.0", + "Microsoft.Extensions.Logging.Abstractions": "10.0.0", + "Serilog": "4.3.0", + "Serilog.Extensions.Logging": "10.0.0" + } + }, "Shouldly": { "type": "CentralTransitive", "requested": "[4.3.0, 4.3.0]", @@ -1473,25 +2205,45 @@ "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "Swashbuckle.AspNetCore": { + "type": "CentralTransitive", + "requested": "[10.2.3, 10.2.3]", + "resolved": "10.2.3", + "contentHash": "8KNh1RWvofdU6DVLyBs4Z/OpUMnmf8oNvJQc0QxpwySRbi42bwLfdVMMrXZWANg5U5KQGQq1xW6r/hlcqw99tQ==", + "dependencies": { + "Microsoft.Extensions.ApiDescription.Server": "10.0.0", + "Swashbuckle.AspNetCore.Swagger": "10.2.3", + "Swashbuckle.AspNetCore.SwaggerGen": "10.2.3", + "Swashbuckle.AspNetCore.SwaggerUI": "10.2.3" + } + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/linux-arm64": { "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1512,6 +2264,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1527,33 +2294,41 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "SQLitePCLRaw.lib.e_sqlite3": { "type": "CentralTransitive", "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/linux-x64": { "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1574,6 +2349,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1589,33 +2379,41 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "SQLitePCLRaw.lib.e_sqlite3": { "type": "CentralTransitive", "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/osx-arm64": { "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1636,6 +2434,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1651,33 +2464,41 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "SQLitePCLRaw.lib.e_sqlite3": { "type": "CentralTransitive", "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } }, "net10.0/win-x64": { "Microsoft.Data.SqlClient": { "type": "Transitive", - "resolved": "6.1.4", - "contentHash": "lQcSog5LLImg4yNEuuG6ccvdzXnCvER8Rms9Ngk9zB4Q8na4f+S7/abSoC7gnEltBg4e5xTnLAWmMLIOtLg4pg==", + "resolved": "7.0.2", + "contentHash": "zwv76lANFQQI6Gmp6ntkzMWIWVqm8Wf4Mz00AeGCk1n8HCi5afi6bNynSe18uI0xeL0n6J+Myjk9AiIsL5oSqw==", "dependencies": { - "Azure.Core": "1.50.0", - "Azure.Identity": "1.17.1", - "Microsoft.Data.SqlClient.SNI.runtime": "6.0.2", - "Microsoft.Extensions.Caching.Memory": "9.0.11", - "Microsoft.Identity.Client": "4.80.0", - "Microsoft.IdentityModel.JsonWebTokens": "7.7.1", - "Microsoft.IdentityModel.Protocols.OpenIdConnect": "7.7.1", - "Microsoft.SqlServer.Server": "1.0.0", - "System.Configuration.ConfigurationManager": "9.0.11", - "System.IdentityModel.Tokens.Jwt": "7.7.1", - "System.Security.Cryptography.Pkcs": "9.0.11" + "Microsoft.Bcl.Cryptography": "9.0.13", + "Microsoft.Data.SqlClient.Extensions.Abstractions": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.Internal.Logging": "[7.0.2, 8.0.0)", + "Microsoft.Data.SqlClient.SNI.runtime": "[6.0.2, 7.0.0)", + "Microsoft.Extensions.Caching.Memory": "9.0.13", + "Microsoft.IdentityModel.JsonWebTokens": "8.16.0", + "Microsoft.IdentityModel.Protocols.OpenIdConnect": "8.16.0", + "Microsoft.SqlServer.Server": "[1.0.0, 2.0.0)", + "System.Configuration.ConfigurationManager": "9.0.13", + "System.Security.Cryptography.Pkcs": "9.0.13" } }, "Microsoft.Data.SqlClient.SNI.runtime": { @@ -1698,6 +2519,21 @@ "resolved": "5.0.0", "contentHash": "dDoKi0PnDz31yAyETfRntsLArTlVAVzUzCIvvEDsDsucrl33Dl8pIJG06ePTJTI3tGpeyHS9Cq7Foc/s4EeKcg==" }, + "runtime.win-arm64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "LbrynESTp3bm5O/+jGL8v0Qg5SJlTV08lpIpFesXjF6uGNMWqFnUQbYBJwZTeua6E/Y7FIM1C54Ey1btLWupdg==" + }, + "runtime.win-x64.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "38ugOfkYJqJoX9g6EYRlZB5U2ZJH51UP8ptxZgdpS07FgOEToV+lS11ouNK2PM12Pr6X/PpT5jK82G3DwH/SxQ==" + }, + "runtime.win-x86.runtime.native.System.Data.SqlClient.sni": { + "type": "Transitive", + "resolved": "4.4.0", + "contentHash": "YhEdSQUsTx+C8m8Bw7ar5/VesXvCFMItyZF7G1AUY+OM0VPZUOeAVpJ4Wl6fydBGUYZxojTDR3I6Bj/+BPkJNA==" + }, "System.Diagnostics.EventLog": { "type": "Transitive", "resolved": "10.0.10", @@ -1713,14 +2549,23 @@ }, "System.Security.Cryptography.Pkcs": { "type": "Transitive", - "resolved": "9.0.11", - "contentHash": "YS2YqtN6fFjlTDIQI+ucjbbrEvwMn796r+VLTQRr/5Oy6g+i+m7nIou83KnJCnAcKna2I+5eVJRks6SoHSpetQ==" + "resolved": "10.0.10", + "contentHash": "KG8t5RHczdgB3IWvRndpI0nE1DSo7ikDYSDbITxfgRFyIvnYiKzuPjaZOsPnwFQ1aOGUl9sEulJul9wlHLEUoA==" }, "SQLitePCLRaw.lib.e_sqlite3": { "type": "CentralTransitive", "requested": "[2.1.12, 2.1.12]", "resolved": "2.1.12", "contentHash": "fWi8Dbknuhgg72fWinIdjXVaqO1hHL4YBBwVLnr7e1c9TAZwJ0QE38j9syW1hwx6HaqEVTwI+O07WPdZn8Rp0w==" + }, + "System.Data.SqlClient": { + "type": "CentralTransitive", + "requested": "[4.9.1, 4.9.1]", + "resolved": "4.9.1", + "contentHash": "A7RK9I4UaVHJ407GTfy37S4ABHt1+lZ+/uoA54zTv0XaaWgHO5BtXSMzMVqB6socIHEeeK5K1YRgaxCEfD79wQ==", + "dependencies": { + "runtime.native.System.Data.SqlClient.sni": "4.4.0" + } } } } From 0f85490ce7e8e47e7dccdf2cf0abace44110a796 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20H=C3=BCgel?= Date: Fri, 2 Oct 2026 13:48:15 +0200 Subject: [PATCH 19/25] refactor: simplify naming --- .../Controllers/AnnouncementsController.cs | 20 +++---- .../Controllers/ChallengesController.cs | 6 +- .../AdminApi/Controllers/ClientsController.cs | 26 ++++----- .../Controllers/IdentitiesController.cs | 38 ++++++------- .../AdminApi/Controllers/MetricsController.cs | 6 +- .../AdminApi/Controllers/TiersController.cs | 22 ++++---- .../AdminApi/Controllers/TokensController.cs | 12 ++-- .../DeleteAnnouncementCommand.cs | 4 +- .../Announcements/SendAnnouncementCommand.cs | 5 +- .../Commands/Clients/CreateClientCommand.cs | 2 +- .../Commands/Clients/DeleteClientsCommand.cs | 4 +- .../Commands/Clients/ListClientsCommand.cs | 4 +- .../Commands/Tiers/CreateTierCommand.cs | 2 +- .../Commands/Tiers/ListTiersCommand.cs | 4 +- .../ResetAccessFailedCountOfTokenCommand.cs | 2 +- .../ConsumerApi/src/DevicesDbContextSeeder.cs | 12 ++-- .../ConsumerApi/src/QuotasDbContextSeeder.cs | 6 +- .../Housekeeper/src/Housekeeper/Executor.cs | 14 ++--- .../DeletionProcessLogger.cs | 6 +- .../Workers/ActualDeletionWorker.cs | 22 ++++---- .../Workers/SendGracePeriodRemindersWorker.cs | 4 +- .../Tests/ActualDeletionWorkerTests.cs | 36 ++++++------ .../SseServer/Controllers/SseController.cs | 8 ++- Backbone.Tests.ArchUnit/CQRS.cs | 5 +- .../MessagesCleanArchitecture.cs | 2 +- .../Extensions/ServiceCollectionExtensions.cs | 3 +- .../JsonSchemaNameAttribute.cs | 7 +++ .../ApplicationServiceCollectionExtensions.cs | 3 +- .../CreateAnnouncement/Command.cs | 3 +- .../CreateAnnouncement/Handler.cs | 4 +- .../CreateAnnouncement/Validator.cs | 4 +- .../DeleteAnnouncementById/Command.cs | 3 +- .../DeleteAnnouncementById/Handler.cs | 4 +- .../DeleteAnnouncementById/Validator.cs | 4 +- .../DeleteAnnouncementRecipients/Command.cs | 3 +- .../DeleteAnnouncementRecipients/Handler.cs | 4 +- .../DeleteAnnouncementRecipients/Validator.cs | 4 +- .../ExecuteHousekeeping/Command.cs | 3 +- .../ExecuteHousekeeping/Handler.cs | 4 +- .../GetAnnouncementById/Handler.cs | 4 +- .../GetAnnouncementById/Query.cs | 3 +- .../GetAnnouncementById/Validator.cs | 4 +- .../ListAnnouncements/Handler.cs | 6 +- .../Announcements/ListAnnouncements/Query.cs | 3 +- .../ListAnnouncements/Response.cs | 5 +- .../ListAnnouncementsInLanguage/Endpoint.cs | 4 +- .../ListAnnouncementsInLanguage/Handler.cs | 6 +- .../ListAnnouncementsInLanguage/Query.cs | 3 +- .../ListAnnouncementsInLanguage/Response.cs | 5 +- .../ListAnnouncementsInLanguage/Validator.cs | 2 +- .../DeleteIdentity/IdentityDeleter.cs | 4 +- .../AnonymizeRecipient/HandlerTests.cs | 3 +- .../CreateAnnouncement/ValidatorTests.cs | 5 +- .../Announcements/IdentityDeleterTests.cs | 4 +- .../ApplicationServiceCollectionExtensions.cs | 6 +- .../Challenges/CreateChallenge/Command.cs | 3 +- .../Challenges/CreateChallenge/Endpoint.cs | 2 +- .../Challenges/CreateChallenge/Handler.cs | 4 +- .../Challenges/CreateChallenge/Validator.cs | 2 +- .../DeleteChallengesOfIdentity/Command.cs | 3 +- .../DeleteChallengesOfIdentity/Handler.cs | 4 +- .../DeleteChallengesOfIdentity/Validator.cs | 4 +- .../Challenges/ExecuteHousekeeping/Command.cs | 3 +- .../Challenges/ExecuteHousekeeping/Handler.cs | 4 +- .../Challenges/GetChallengeById/Endpoint.cs | 2 +- .../Challenges/GetChallengeById/Handler.cs | 4 +- .../Challenges/GetChallengeById/Query.cs | 3 +- .../Challenges/GetChallengeById/Validator.cs | 4 +- .../DeleteIdentity/IdentityDeleter.cs | 4 +- .../ValidatorTests.cs | 7 ++- .../GetChallengeById/ValidatorTests.cs | 7 ++- .../Tests/Identities/IdentityDeleterTests.cs | 4 +- .../ApplicationServiceCollectionExtensions.cs | 6 +- .../DevicesEventBusExtensions.cs | 24 ++++---- .../Clients/ChangeClientSecret/Command.cs | 3 +- .../Clients/ChangeClientSecret/Handler.cs | 6 +- .../Clients/ChangeClientSecret/Response.cs | 5 +- .../Clients/ChangeClientSecret/Validator.cs | 2 +- .../Features/Clients/CreateClient/Command.cs | 3 +- .../Features/Clients/CreateClient/Handler.cs | 8 +-- .../Features/Clients/CreateClient/Response.cs | 5 +- .../Clients/CreateClient/Validator.cs | 4 +- .../Features/Clients/DeleteClient/Command.cs | 3 +- .../Features/Clients/DeleteClient/Handler.cs | 4 +- .../Clients/DeleteClient/Validator.cs | 4 +- .../Features/Clients/GetClient/Handler.cs | 4 +- .../Features/Clients/GetClient/Query.cs | 3 +- .../Features/Clients/ListClients/Handler.cs | 6 +- .../Features/Clients/ListClients/Query.cs | 3 +- .../Features/Clients/ListClients/Response.cs | 5 +- .../Features/Clients/UpdateClient/Command.cs | 3 +- .../Features/Clients/UpdateClient/Handler.cs | 6 +- .../Features/Clients/UpdateClient/Response.cs | 5 +- .../Clients/UpdateClient/Validator.cs | 4 +- .../Devices/ChangePassword/Command.cs | 3 +- .../Devices/ChangePassword/Endpoint.cs | 2 +- .../Devices/ChangePassword/Handler.cs | 4 +- .../Devices/ChangePassword/Validator.cs | 2 +- .../Features/Devices/DeleteDevice/Command.cs | 3 +- .../Features/Devices/DeleteDevice/Endpoint.cs | 2 +- .../Features/Devices/DeleteDevice/Handler.cs | 4 +- .../Devices/DeleteDevice/Validator.cs | 4 +- .../Devices/ExecuteHousekeeping/Command.cs | 3 +- .../Devices/ExecuteHousekeeping/Handler.cs | 4 +- .../Devices/GetActiveDevice/Endpoint.cs | 2 +- .../Devices/GetActiveDevice/Handler.cs | 4 +- .../Features/Devices/GetActiveDevice/Query.cs | 3 +- .../Features/Devices/ListDevices/Endpoint.cs | 4 +- .../Features/Devices/ListDevices/Handler.cs | 6 +- .../Features/Devices/ListDevices/Query.cs | 3 +- .../Features/Devices/ListDevices/Response.cs | 5 +- .../Features/Devices/ListDevices/Validator.cs | 4 +- .../Devices/RegisterDevice/Command.cs | 3 +- .../Devices/RegisterDevice/Endpoint.cs | 4 +- .../Devices/RegisterDevice/Handler.cs | 6 +- .../Devices/RegisterDevice/Response.cs | 5 +- .../Devices/RegisterDevice/Validator.cs | 4 +- .../Devices/UpdateActiveDevice/Command.cs | 3 +- .../Devices/UpdateActiveDevice/Endpoint.cs | 2 +- .../Devices/UpdateActiveDevice/Handler.cs | 4 +- .../Devices/UpdateActiveDevice/Validator.cs | 2 +- .../AnnouncementCreated/Handler.cs | 4 +- .../DomainEvents/BackupDeviceUsed/Handler.cs | 4 +- .../DatawalletModificationCreated/Handler.cs | 4 +- .../ExternalEventCreated/Handler.cs | 4 +- .../IdentityDeletionProcessStarted/Handler.cs | 4 +- .../DomainEvents/TokenLocked/Handler.cs | 4 +- .../CancelDeletionProcess/Command.cs | 3 +- .../CancelDeletionProcess/Endpoint.cs | 4 +- .../CancelDeletionProcess/Handler.cs | 6 +- .../CancelDeletionProcess/Response.cs | 5 +- .../CancelDeletionProcess/Validator.cs | 4 +- .../Identities/ChangeFeatureFlags/Command.cs | 3 +- .../Identities/ChangeFeatureFlags/Endpoint.cs | 2 +- .../Identities/ChangeFeatureFlags/Handler.cs | 6 +- .../ChangeFeatureFlags/Validator.cs | 2 +- .../Identities/CreateIdentity/Command.cs | 3 +- .../Identities/CreateIdentity/Endpoint.cs | 4 +- .../Identities/CreateIdentity/Handler.cs | 10 ++-- .../Identities/CreateIdentity/Response.cs | 5 +- .../Identities/CreateIdentity/Validator.cs | 4 +- .../Identities/DeleteIdentity/Command.cs | 3 +- .../Identities/DeleteIdentity/Handler.cs | 4 +- .../DeleteIdentity/IdentityDeleter.cs | 5 +- .../Identities/DeleteIdentity/Validator.cs | 4 +- .../GetDeletionProcessAsOwner/Endpoint.cs | 2 +- .../GetDeletionProcessAsOwner/Handler.cs | 4 +- .../GetDeletionProcessAsOwner/Query.cs | 3 +- .../GetDeletionProcessAsOwner/Validator.cs | 4 +- .../GetDeletionProcessAsSupport/Handler.cs | 4 +- .../GetDeletionProcessAsSupport/Query.cs | 3 +- .../GetDeletionProcessAsSupport/Validator.cs | 6 +- .../Identities/GetIdentity/Handler.cs | 6 +- .../GetIdentity/IdentityStatusProvider.cs | 2 +- .../Features/Identities/GetIdentity/Query.cs | 3 +- .../Identities/GetIdentity/Response.cs | 5 +- .../Identities/GetIdentity/Validator.cs | 4 +- .../Identities/GetOwnIdentity/Endpoint.cs | 4 +- .../Identities/GetOwnIdentity/Handler.cs | 6 +- .../Identities/GetOwnIdentity/Query.cs | 3 +- .../Identities/GetOwnIdentity/Response.cs | 5 +- .../HandleCompletedDeletionProcess/Command.cs | 3 +- .../HandleCompletedDeletionProcess/Handler.cs | 6 +- .../Validator.cs | 4 +- .../Command.cs | 3 +- .../Handler.cs | 4 +- .../IsIdentityOfUserDeleted/Endpoint.cs | 4 +- .../IsIdentityOfUserDeleted/Handler.cs | 6 +- .../IsIdentityOfUserDeleted/Query.cs | 3 +- .../IsIdentityOfUserDeleted/Response.cs | 5 +- .../IsIdentityOfUserDeleted/Validator.cs | 4 +- .../Handler.cs | 6 +- .../Query.cs | 3 +- .../Response.cs | 5 +- .../ListDeletionProcessesAsOwner/Endpoint.cs | 4 +- .../ListDeletionProcessesAsOwner/Handler.cs | 6 +- .../ListDeletionProcessesAsOwner/Query.cs | 3 +- .../ListDeletionProcessesAsOwner/Response.cs | 5 +- .../ListDeletionProcessesAsSupport/Handler.cs | 6 +- .../ListDeletionProcessesAsSupport/Query.cs | 3 +- .../Response.cs | 5 +- .../Validator.cs | 4 +- .../ListDeletionProcessesAuditLogs/Handler.cs | 6 +- .../ListDeletionProcessesAuditLogs/Query.cs | 3 +- .../Response.cs | 5 +- .../Validator.cs | 4 +- .../Identities/ListFeatureFlags/Endpoint.cs | 4 +- .../Identities/ListFeatureFlags/Handler.cs | 6 +- .../Identities/ListFeatureFlags/Query.cs | 3 +- .../Identities/ListFeatureFlags/Response.cs | 5 +- .../Identities/ListFeatureFlags/Validator.cs | 4 +- .../Identities/ListIdentities/Handler.cs | 6 +- .../Identities/ListIdentities/Query.cs | 3 +- .../Identities/ListIdentities/Response.cs | 5 +- .../Identities/ListIdentities/Validator.cs | 4 +- .../Identities/LogDeletionProcess/Command.cs | 3 +- .../Identities/LogDeletionProcess/Handler.cs | 4 +- .../LogDeletionProcess/Validator.cs | 4 +- .../Command.cs | 3 +- .../Handler.cs | 4 +- .../StartDeletionProcess/Command.cs | 3 +- .../StartDeletionProcess/Endpoint.cs | 6 +- .../StartDeletionProcess/Handler.cs | 6 +- .../StartDeletionProcess/Response.cs | 5 +- .../TriggerRipeDeletionProcesses/Command.cs | 3 +- .../TriggerRipeDeletionProcesses/Handler.cs | 6 +- .../TriggerRipeDeletionProcesses/Response.cs | 7 ++- .../Identities/UpdateIdentity/Command.cs | 3 +- .../Identities/UpdateIdentity/Handler.cs | 4 +- .../Identities/UpdateIdentity/Validator.cs | 6 +- .../Notifications/SendNotification/Command.cs | 3 +- .../SendNotification/Endpoint.cs | 2 +- .../Notifications/SendNotification/Handler.cs | 6 +- .../SendNotification/Validator.cs | 4 +- .../DeleteDeviceRegistration/Command.cs | 3 +- .../DeleteDeviceRegistration/Endpoint.cs | 2 +- .../DeleteDeviceRegistration/Handler.cs | 4 +- .../Command.cs | 3 +- .../Handler.cs | 4 +- .../Validator.cs | 4 +- .../SendTestNotification/Command.cs | 3 +- .../SendTestNotification/Endpoint.cs | 2 +- .../SendTestNotification/Handler.cs | 4 +- .../SendTestNotification/Validator.cs | 2 +- .../UpdateDeviceRegistration/Command.cs | 3 +- .../UpdateDeviceRegistration/Endpoint.cs | 4 +- .../UpdateDeviceRegistration/Handler.cs | 6 +- .../UpdateDeviceRegistration/Response.cs | 5 +- .../UpdateDeviceRegistration/Validator.cs | 2 +- .../CreateQueuedForDeletionTier/Command.cs | 3 +- .../CreateQueuedForDeletionTier/Handler.cs | 4 +- .../Features/Tiers/CreateTier/Command.cs | 3 +- .../Features/Tiers/CreateTier/Handler.cs | 6 +- .../Features/Tiers/CreateTier/Response.cs | 5 +- .../Features/Tiers/CreateTier/Validator.cs | 2 +- .../Features/Tiers/DeleteTier/Command.cs | 3 +- .../Features/Tiers/DeleteTier/Handler.cs | 4 +- .../Features/Tiers/DeleteTier/Validator.cs | 4 +- .../Features/Tiers/ListTiers/Handler.cs | 6 +- .../Features/Tiers/ListTiers/Query.cs | 3 +- .../Features/Tiers/ListTiers/Response.cs | 5 +- .../Features/Users/SeedTestUsers/Command.cs | 3 +- .../Features/Users/SeedTestUsers/Handler.cs | 4 +- .../Commands/DeleteDevice/ValidatorTests.cs | 7 ++- .../Queries/ListDevices/ValidatorTests.cs | 7 ++- ...ouncementCreatedDomainEventHandlerTests.cs | 6 +- ...rnalEventCreatedDomainEventHandlerTests.cs | 8 +-- .../TokenLockedDomainEventHandlerTests.cs | 4 +- .../CancelDeletionProcess/HandlerTests.cs | 5 +- .../CancelDeletionProcess/ValidatorTests.cs | 7 ++- .../Commands/DeleteIdentity/ValidatorTests.cs | 7 ++- .../LogDeletionProcess/ValidatorTests.cs | 7 ++- .../HandlerTests.cs | 13 +++-- .../StartDeletionProcess/HandlerTests.cs | 5 +- .../UpdateDeletionProcesses/HandlerTests.cs | 7 ++- .../Commands/UpdateIdentity/HandlerTests.cs | 5 +- .../Commands/UpdateIdentity/ValidatorTests.cs | 11 ++-- .../Tests/Identities/IdentityDeleterTests.cs | 7 ++- .../ValidatorTests.cs | 7 ++- .../ValidatorTests.cs | 11 ++-- .../ValidatorTests.cs | 7 ++- .../HandlerTests.cs | 11 ++-- .../ValidatorTests.cs | 7 ++- .../Queries/GetIdentity/ValidatorTests.cs | 7 ++- .../Queries/ListIdentities/ValidatorTests.cs | 7 ++- .../DatawalletModified/HandlerTests.cs | 4 +- .../ValidatorTests.cs | 7 ++- .../UpdateDeviceRegistration/HandlerTests.cs | 3 +- .../Commands/CreateTier/ValidatorTests.cs | 5 +- .../Tiers/Commands/DeleteTier/HandlerTests.cs | 5 +- .../Commands/DeleteTier/ValidatorTests.cs | 7 ++- .../ApplicationServiceCollectionExtensions.cs | 3 +- .../Files/ClaimFileOwnership/Command.cs | 3 +- .../Files/ClaimFileOwnership/Endpoint.cs | 4 +- .../Files/ClaimFileOwnership/Handler.cs | 6 +- .../Files/ClaimFileOwnership/Response.cs | 5 +- .../Files/ClaimFileOwnership/Validator.cs | 4 +- .../Features/Files/CreateFile/Command.cs | 3 +- .../Features/Files/CreateFile/Endpoint.cs | 4 +- .../Features/Files/CreateFile/Handler.cs | 6 +- .../Features/Files/CreateFile/Response.cs | 5 +- .../Features/Files/CreateFile/Validator.cs | 2 +- .../Features/Files/DeleteFile/Command.cs | 3 +- .../Features/Files/DeleteFile/Endpoint.cs | 2 +- .../Features/Files/DeleteFile/Handler.cs | 4 +- .../Features/Files/DeleteFile/Validator.cs | 4 +- .../Files/ExecuteHousekeeping/Command.cs | 3 +- .../Files/ExecuteHousekeeping/Handler.cs | 4 +- .../Features/Files/GetFileContent/Endpoint.cs | 2 +- .../Features/Files/GetFileContent/Handler.cs | 6 +- .../Features/Files/GetFileContent/Query.cs | 3 +- .../Features/Files/GetFileContent/Response.cs | 3 +- .../Files/GetFileContent/Validator.cs | 4 +- .../Files/GetFileMetadata/Endpoint.cs | 2 +- .../Features/Files/GetFileMetadata/Handler.cs | 4 +- .../Features/Files/GetFileMetadata/Query.cs | 3 +- .../Files/GetFileMetadata/Validator.cs | 4 +- .../Files/ListFileMetadata/Endpoint.cs | 4 +- .../Files/ListFileMetadata/Handler.cs | 6 +- .../Features/Files/ListFileMetadata/Query.cs | 3 +- .../Files/ListFileMetadata/Response.cs | 5 +- .../Files/ListFileMetadata/Validator.cs | 4 +- .../RegenerateFileOwnershipToken/Command.cs | 3 +- .../RegenerateFileOwnershipToken/Endpoint.cs | 4 +- .../RegenerateFileOwnershipToken/Handler.cs | 6 +- .../RegenerateFileOwnershipToken/Response.cs | 5 +- .../RegenerateFileOwnershipToken/Validator.cs | 4 +- .../ValidateFileOwnershipToken/Endpoint.cs | 4 +- .../ValidateFileOwnershipToken/Handler.cs | 6 +- .../Files/ValidateFileOwnershipToken/Query.cs | 3 +- .../ValidateFileOwnershipToken/Response.cs | 3 +- .../ValidateFileOwnershipToken/Validator.cs | 4 +- .../AnonymizeCreatedByOfFiles/Command.cs | 3 +- .../AnonymizeCreatedByOfFiles/Handler.cs | 4 +- .../AnonymizeCreatedByOfFiles/Validator.cs | 4 +- .../DeleteFilesOfIdentity/Command.cs | 3 +- .../DeleteFilesOfIdentity/Handler.cs | 4 +- .../DeleteFilesOfIdentity/Validator.cs | 4 +- .../DeleteIdentity/IdentityDeleter.cs | 10 ++-- .../Queries/GetFileContent/ValidatorTests.cs | 9 +-- .../Queries/GetFileMetadata/ValidatorTests.cs | 9 +-- .../ListFileMetadata/ValidatorTests.cs | 9 +-- .../DeleteFilesOfIdentity/HandlerTests.cs | 5 +- .../DeleteFilesOfIdentity/ValidatorTests.cs | 9 +-- .../Tests/Identities/IdentityDeleterTests.cs | 6 +- .../Features/Messages/GetMessage/Endpoint.cs | 2 +- .../Features/Messages/GetMessage/Handler.cs | 4 +- .../Features/Messages/GetMessage/Query.cs | 3 +- .../Features/Messages/GetMessage/Validator.cs | 4 +- .../Messages/ListMessages/Endpoint.cs | 4 +- .../Features/Messages/ListMessages/Handler.cs | 6 +- .../Features/Messages/ListMessages/Query.cs | 3 +- .../Messages/ListMessages/Response.cs | 5 +- .../Messages/ListMessages/Validator.cs | 4 +- .../Features/Messages/SendMessage/Command.cs | 3 +- .../Features/Messages/SendMessage/Endpoint.cs | 4 +- .../Features/Messages/SendMessage/Handler.cs | 8 +-- .../Features/Messages/SendMessage/Response.cs | 5 +- .../Messages/SendMessage/Validator.cs | 2 +- .../ApplicationServiceCollectionExtensions.cs | 4 +- .../DomainEvents/FileUploaded/Handler.cs | 4 +- .../DomainEvents/IdentityCreated/Handler.cs | 6 +- .../DomainEvents/MessageCreated/Handler.cs | 4 +- .../RelationshipStatusChanged/Handler.cs | 4 +- .../RelationshipTemplateCreated/Handler.cs | 4 +- .../DomainEvents/TierCreated/Handler.cs | 6 +- .../DomainEvents/TierDeleted/Handler.cs | 6 +- .../TierOfIdentityChanged/Handler.cs | 4 +- .../TierQuotaDefinitionCreated/Handler.cs | 8 +-- .../TierQuotaDefinitionDeleted/Handler.cs | 8 +-- .../DomainEvents/TokenCreated/Handler.cs | 4 +- .../CreateQuotaForIdentity/Command.cs | 3 +- .../CreateQuotaForIdentity/Handler.cs | 4 +- .../CreateQuotaForIdentity/Validator.cs | 4 +- .../Identities/DeleteIdentity/Command.cs | 3 +- .../Identities/DeleteIdentity/Handler.cs | 4 +- .../DeleteIdentity/IdentityDeleter.cs | 2 +- .../Identities/DeleteIdentity/Validator.cs | 4 +- .../DeleteQuotaForIdentity/Command.cs | 3 +- .../DeleteQuotaForIdentity/Handler.cs | 4 +- .../DeleteQuotaForIdentity/Validator.cs | 6 +- .../Identities/GetIdentity/Handler.cs | 6 +- .../Features/Identities/GetIdentity/Query.cs | 3 +- .../Identities/GetIdentity/Response.cs | 7 ++- .../Identities/GetIdentity/Validator.cs | 4 +- .../ListQuotasForIdentity/Endpoint.cs | 4 +- .../ListQuotasForIdentity/Handler.cs | 6 +- .../Identities/ListQuotasForIdentity/Query.cs | 3 +- .../ListQuotasForIdentity/Response.cs | 5 +- .../Features/Metrics/ListMetrics/Handler.cs | 6 +- .../Features/Metrics/ListMetrics/Query.cs | 3 +- .../Features/Metrics/ListMetrics/Response.cs | 5 +- .../Tiers/CreateQuotaForTier/Command.cs | 3 +- .../Tiers/CreateQuotaForTier/Handler.cs | 4 +- .../Tiers/CreateQuotaForTier/Validator.cs | 4 +- .../DeleteTierQuotaDefinition/Command.cs | 3 +- .../DeleteTierQuotaDefinition/Handler.cs | 4 +- .../DeleteTierQuotaDefinition/Validator.cs | 6 +- .../Features/Tiers/GetTier/Handler.cs | 4 +- .../Features/Tiers/GetTier/Query.cs | 3 +- .../Features/Tiers/GetTier/Validator.cs | 4 +- .../SeedQueuedForDeletionTier/Command.cs | 3 +- .../SeedQueuedForDeletionTier/Handler.cs | 4 +- .../Quotas.Module/QuotasEventBusExtensions.cs | 44 +++++++-------- .../TierDeletedDomainEventHandlerTests.cs | 6 +- .../HandlerTests.cs | 5 +- .../IdentityCreatedDomainEventHandlerTests.cs | 8 +-- .../Tests/Identities/IdentityDeleterTests.cs | 5 +- ...efinitionCreatedDomainEventHandlerTests.cs | 8 +-- .../CreateQuotaForIdentity/HandlerTests.cs | 5 +- .../TierCreatedDomainEventHandlerTests.cs | 8 +-- .../ApplicationServiceCollectionExtensions.cs | 3 +- .../FeatureFlagsOfIdentityChanged/Handler.cs | 4 +- .../DomainEvents/IdentityDeleted/Handler.cs | 4 +- .../IdentityDeletionCancelled/Handler.cs | 4 +- .../IdentityToBeDeleted/Handler.cs | 4 +- .../DeleteIdentity/IdentityDeleter.cs | 16 +++--- .../Endpoint.cs | 2 +- .../Handler.cs | 4 +- .../Query.cs | 3 +- .../Command.cs | 3 +- .../Handler.cs | 4 +- .../Validator.cs | 4 +- .../Command.cs | 3 +- .../Handler.cs | 4 +- .../Validator.cs | 4 +- .../CreateRelationshipTemplate/Command.cs | 3 +- .../CreateRelationshipTemplate/Endpoint.cs | 4 +- .../CreateRelationshipTemplate/Handler.cs | 6 +- .../CreateRelationshipTemplate/Response.cs | 5 +- .../CreateRelationshipTemplate/Validator.cs | 4 +- .../DeleteRelationshipTemplate/Command.cs | 3 +- .../DeleteRelationshipTemplate/Endpoint.cs | 2 +- .../DeleteRelationshipTemplate/Handler.cs | 4 +- .../DeleteRelationshipTemplate/Validator.cs | 4 +- .../Command.cs | 3 +- .../Handler.cs | 4 +- .../Validator.cs | 4 +- .../GetRelationshipTemplate/Endpoint.cs | 2 +- .../GetRelationshipTemplate/Handler.cs | 4 +- .../GetRelationshipTemplate/Query.cs | 3 +- .../GetRelationshipTemplate/Validator.cs | 4 +- .../ListRelationshipTemplates/Endpoint.cs | 4 +- .../ListRelationshipTemplates/Handler.cs | 6 +- .../ListRelationshipTemplates/Query.cs | 3 +- .../ListRelationshipTemplates/Response.cs | 5 +- .../ListRelationshipTemplates/Validator.cs | 4 +- .../AcceptRelationship/Command.cs | 3 +- .../AcceptRelationship/Endpoint.cs | 4 +- .../AcceptRelationship/Handler.cs | 6 +- .../AcceptRelationship/Response.cs | 5 +- .../AcceptRelationship/Validator.cs | 4 +- .../AcceptRelationshipReactivation/Command.cs | 3 +- .../Endpoint.cs | 4 +- .../AcceptRelationshipReactivation/Handler.cs | 6 +- .../Response.cs | 5 +- .../Validator.cs | 4 +- .../CanEstablishRelationship/Endpoint.cs | 6 +- .../CanEstablishRelationship/Handler.cs | 6 +- .../CanEstablishRelationship/Query.cs | 3 +- .../CanEstablishRelationship/Response.cs | 3 +- ...tionshipQueryValidator.cs => Validator.cs} | 4 +- .../CreateRelationship/Command.cs | 3 +- .../CreateRelationship/Endpoint.cs | 7 ++- .../CreateRelationship/Handler.cs | 8 +-- .../CreateRelationship/Response.cs | 5 +- .../CreateRelationship/Validator.cs | 4 +- .../Command.cs | 3 +- .../Handler.cs | 4 +- .../Validator.cs | 4 +- .../DecomposeRelationship/Command.cs | 3 +- .../DecomposeRelationship/Endpoint.cs | 4 +- .../DecomposeRelationship/Handler.cs | 6 +- .../DecomposeRelationship/Response.cs | 5 +- .../DecomposeRelationship/Validator.cs | 4 +- .../ExecuteHousekeeping/Command.cs | 3 +- .../ExecuteHousekeeping/Handler.cs | 4 +- .../Handler.cs | 6 +- .../Query.cs | 3 +- .../Response.cs | 3 +- .../Validator.cs | 4 +- .../Relationships/GetRelationship/Endpoint.cs | 2 +- .../Relationships/GetRelationship/Handler.cs | 4 +- .../Relationships/GetRelationship/Query.cs | 3 +- .../GetRelationship/Validator.cs | 4 +- .../ListRelationships/Endpoint.cs | 4 +- .../ListRelationships/Handler.cs | 6 +- .../Relationships/ListRelationships/Query.cs | 3 +- .../ListRelationships/Response.cs | 5 +- .../ListRelationships/Validator.cs | 4 +- .../ListRelationshipsOfIdentity/Handler.cs | 6 +- .../ListRelationshipsOfIdentity/Query.cs | 3 +- .../ListRelationshipsOfIdentity/Response.cs | 5 +- .../ListRelationshipsOfIdentity/Validator.cs | 4 +- .../RejectRelationship/Command.cs | 3 +- .../RejectRelationship/Endpoint.cs | 4 +- .../RejectRelationship/Handler.cs | 6 +- .../RejectRelationship/Response.cs | 5 +- .../RejectRelationship/Validator.cs | 4 +- .../RejectRelationshipReactivation/Command.cs | 3 +- .../Endpoint.cs | 4 +- .../RejectRelationshipReactivation/Handler.cs | 6 +- .../Response.cs | 5 +- .../Validator.cs | 4 +- .../Command.cs | 3 +- .../Endpoint.cs | 4 +- .../Handler.cs | 6 +- .../Response.cs | 5 +- .../Validator.cs | 4 +- .../RevokeRelationship/Command.cs | 3 +- .../RevokeRelationship/Endpoint.cs | 4 +- .../RevokeRelationship/Handler.cs | 6 +- .../RevokeRelationship/Response.cs | 5 +- .../RevokeRelationship/Validator.cs | 4 +- .../RevokeRelationshipReactivation/Command.cs | 3 +- .../Endpoint.cs | 4 +- .../RevokeRelationshipReactivation/Handler.cs | 6 +- .../Response.cs | 5 +- .../Validator.cs | 4 +- .../TerminateRelationship/Command.cs | 3 +- .../TerminateRelationship/Endpoint.cs | 2 +- .../TerminateRelationship/Handler.cs | 4 +- .../TerminateRelationship/Validator.cs | 4 +- .../RelationshipsEventBusExtensions.cs | 16 +++--- ...IdentityDeletedDomainEventHandler.Tests.cs | 8 +-- ...letionCancelledDomainEventHandler.Tests.cs | 8 +-- ...tityToBeDeletedDomainEventHandler.Tests.cs | 8 +-- .../Identities/IdentityDeleter.Tests.cs | 18 +++--- .../Validator.Tests.cs | 23 ++++---- .../Handler.Tests.cs | 5 +- .../Validator.Tests.cs | 7 ++- .../Handler.Tests.cs | 5 +- .../ListRelationshipsValidator.Tests.cs | 11 ++-- .../ApplicationServiceCollectionExtensions.cs | 6 +- .../EventBusExtensions.cs | 56 +++++++++---------- ...walletsOfIdentityCommand.cs => Command.cs} | 3 +- .../DeleteDatawalletsOfIdentity/Handler.cs | 4 +- .../DeleteDatawalletsOfIdentity/Validator.cs | 4 +- .../Datawallets/GetDatawallet/Endpoint.cs | 2 +- .../Datawallets/GetDatawallet/Handler.cs | 4 +- .../{GetDatawalletQuery.cs => Query.cs} | 3 +- .../Datawallets/ListModifications/Endpoint.cs | 4 +- .../Datawallets/ListModifications/Handler.cs | 6 +- .../ListModificationsResponse.cs | 11 ---- .../{ListModificationsQuery.cs => Query.cs} | 3 +- .../Datawallets/ListModifications/Response.cs | 12 ++++ ...lletModificationsCommand.cs => Command.cs} | 3 +- .../PushDatawalletModifications/Endpoint.cs | 4 +- .../PushDatawalletModifications/Handler.cs | 10 ++-- ...etModificationsResponse.cs => Response.cs} | 3 +- .../PushDatawalletModifications/Validator.cs | 2 +- ...laimedDomainEventHandler.cs => Handler.cs} | 6 +- ...LockedDomainEventHandler.cs => Handler.cs} | 6 +- ...tartedDomainEventHandler.cs => Handler.cs} | 6 +- ...hangedDomainEventHandler.cs => Handler.cs} | 8 +-- ...reatedDomainEventHandler.cs => Handler.cs} | 6 +- ...eletedDomainEventHandler.cs => Handler.cs} | 6 +- ...celledDomainEventHandler.cs => Handler.cs} | 6 +- ...hangedDomainEventHandler.cs => Handler.cs} | 6 +- ...eletedDomainEventHandler.cs => Handler.cs} | 6 +- ...pletedDomainEventHandler.cs => Handler.cs} | 6 +- ...uestedDomainEventHandler.cs => Handler.cs} | 6 +- ...hangedDomainEventHandler.cs => Handler.cs} | 6 +- ...austedDomainEventHandler.cs => Handler.cs} | 6 +- ...LockedDomainEventHandler.cs => Handler.cs} | 4 +- .../DeleteIdentity/IdentityDeleter.cs | 12 ++-- ...lEventsOfIdentityCommand.cs => Command.cs} | 3 +- .../DeleteExternalEventsOfIdentity/Handler.cs | 4 +- .../Validator.cs | 4 +- ...yncRunsOfIdentityCommand.cs => Command.cs} | 3 +- .../DeleteSyncRunsOfIdentity/Handler.cs | 4 +- .../DeleteSyncRunsOfIdentity/Validator.cs | 4 +- .../SyncRuns/ExecuteHousekeeping/Command.cs | 6 ++ .../ExecuteHousekeepingCommand.cs | 5 -- .../SyncRuns/ExecuteHousekeeping/Handler.cs | 4 +- ...ionUpgradeSyncRunCommand.cs => Command.cs} | 3 +- .../Endpoint.cs | 5 +- .../Handler.cs | 6 +- ...nUpgradeSyncRunResponse.cs => Response.cs} | 3 +- ...yncRunCommandValidator.cs => Validator.cs} | 6 +- ...lEventSyncSyncRunCommand.cs => Command.cs} | 3 +- .../FinalizeExternalEventSync/Endpoint.cs | 6 +- .../FinalizeExternalEventSync/Handler.cs | 6 +- ...ventSyncSyncRunResponse.cs => Response.cs} | 3 +- ...yncRunCommandValidator.cs => Validator.cs} | 10 ++-- .../SyncRuns/GetSyncRunById/Endpoint.cs | 2 +- .../SyncRuns/GetSyncRunById/Handler.cs | 4 +- .../{GetSyncRunByIdQuery.cs => Query.cs} | 3 +- .../SyncRuns/GetSyncRunById/Validator.cs | 4 +- .../ListExternalEventsOfSyncRun/Endpoint.cs | 4 +- .../ListExternalEventsOfSyncRun/Handler.cs | 6 +- .../ListExternalEventsOfSyncRunResponse.cs | 11 ---- ...ternalEventsOfSyncRunQuery.cs => Query.cs} | 3 +- .../ListExternalEventsOfSyncRun/Response.cs | 12 ++++ .../ListExternalEventsOfSyncRun/Validator.cs | 4 +- ...tionTimeOfSyncRunCommand.cs => Command.cs} | 3 +- .../Endpoint.cs | 4 +- .../RefreshExpirationTimeOfSyncRun/Handler.cs | 6 +- ...onTimeOfSyncRunResponse.cs => Response.cs} | 3 +- .../Validator.cs | 4 +- .../{StartSyncRunCommand.cs => Command.cs} | 3 +- .../SyncRuns/StartSyncRun/Endpoint.cs | 6 +- .../Features/SyncRuns/StartSyncRun/Handler.cs | 14 ++--- .../{StartSyncRunResponse.cs => Response.cs} | 5 +- .../SyncRuns/StartSyncRun/Validator.cs | 2 +- .../HandlerTests.cs | 5 +- ...alletModificationsCommandValidatorTests.cs | 5 +- .../HandlerTests.cs | 23 ++++---- ...onProcessStartedDomainEventHandlerTests.cs | 6 +- ...essStatusChangedDomainEventHandlerTests.cs | 12 ++-- .../MessageCreatedDomainEventHandlerTests.cs | 10 ++-- .../PeerDeletedDomainEventHandlerTests.cs | 8 +-- ...eletionCancelledDomainEventHandlerTests.cs | 8 +-- .../PeerToBeDeletedDomainEventHandlerTests.cs | 8 +-- ...ivationCompletedDomainEventHandlerTests.cs | 10 ++-- ...hipStatusChangedDomainEventHandlerTests.cs | 8 +-- .../TokenLockedDomainEventHandlerTests.cs | 4 +- .../Tests/Identities/IdentityDeleterTests.cs | 14 ++--- .../Commands/FinalizeSyncRun/HandlerTests.cs | 27 ++++----- .../HandlerTests.cs | 9 +-- .../Commands/StartSyncRun/HandlerTests.cs | 19 ++++--- .../StartSyncRunCommandValidatorTests.cs | 5 +- .../ApplicationServiceCollectionExtensions.cs | 4 +- .../Features/Tags/ListTags/Endpoint.cs | 4 +- .../Features/Tags/ListTags/Handler.cs | 6 +- .../Features/Tags/ListTags/Query.cs | 3 +- .../Features/Tags/ListTags/Response.cs | 3 +- .../ApplicationServiceCollectionExtensions.cs | 3 +- .../DeleteIdentity/IdentityDeleter.cs | 14 ++--- .../Command.cs | 3 +- .../Handler.cs | 4 +- .../Validator.cs | 4 +- .../AnonymizeTokensForIdentity/Command.cs | 3 +- .../AnonymizeTokensForIdentity/Handler.cs | 4 +- .../AnonymizeTokensForIdentity/Validator.cs | 4 +- .../Features/Tokens/CreateToken/Command.cs | 3 +- .../Features/Tokens/CreateToken/Endpoint.cs | 4 +- .../Features/Tokens/CreateToken/Handler.cs | 6 +- .../Features/Tokens/CreateToken/Response.cs | 5 +- .../Features/Tokens/CreateToken/Validator.cs | 4 +- .../Features/Tokens/DeleteToken/Command.cs | 3 +- .../Features/Tokens/DeleteToken/Endpoint.cs | 2 +- .../Features/Tokens/DeleteToken/Handler.cs | 4 +- .../Features/Tokens/DeleteToken/Validator.cs | 4 +- .../Tokens/DeleteTokensOfIdentity/Command.cs | 3 +- .../Tokens/DeleteTokensOfIdentity/Handler.cs | 4 +- .../DeleteTokensOfIdentity/Validator.cs | 4 +- .../Tokens/ExecuteHousekeeping/Command.cs | 3 +- .../Tokens/ExecuteHousekeeping/Handler.cs | 4 +- .../Features/Tokens/GetToken/Endpoint.cs | 2 +- .../Features/Tokens/GetToken/Handler.cs | 4 +- .../Features/Tokens/GetToken/Query.cs | 3 +- .../Features/Tokens/GetToken/Validator.cs | 4 +- .../Features/Tokens/ListTokens/Endpoint.cs | 2 +- .../Features/Tokens/ListTokens/Handler.cs | 6 +- .../Features/Tokens/ListTokens/Query.cs | 3 +- .../Features/Tokens/ListTokens/Validator.cs | 4 +- .../Tokens/ListTokensByIdentity/Handler.cs | 6 +- .../Tokens/ListTokensByIdentity/Query.cs | 3 +- .../Tokens/ListTokensByIdentity/Validator.cs | 2 +- .../ResetAccessFailedCountOfToken/Command.cs | 3 +- .../ResetAccessFailedCountOfToken/Handler.cs | 4 +- .../Validator.cs | 4 +- .../{ListTokensResponse.cs => Response.cs} | 3 +- .../Tokens/UpdateTokenContent/Command.cs | 3 +- .../Tokens/UpdateTokenContent/Endpoint.cs | 4 +- .../Tokens/UpdateTokenContent/Handler.cs | 6 +- .../Tokens/UpdateTokenContent/Response.cs | 5 +- .../Tokens/UpdateTokenContent/Validator.cs | 4 +- .../Tests/Identities/IdentityDeleterTests.cs | 6 +- .../Tokens/CreateToken/ValidatorTests.cs | 29 +++++----- .../DeleteTokensOfIdentity/HandlerTests.cs | 5 +- 652 files changed, 1809 insertions(+), 1549 deletions(-) create mode 100644 BuildingBlocks/src/BuildingBlocks.Application.Abstractions/JsonSchemaNameAttribute.cs rename Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/{CanEstablishRelationshipQueryValidator.cs => Validator.cs} (66%) rename Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/DeleteDatawalletsOfIdentity/{DeleteDatawalletsOfIdentityCommand.cs => Command.cs} (56%) rename Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/{GetDatawalletQuery.cs => Query.cs} (57%) delete mode 100644 Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/ListModificationsResponse.cs rename Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/{ListModificationsQuery.cs => Query.cs} (72%) create mode 100644 Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Response.cs rename Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/{PushDatawalletModificationsCommand.cs => Command.cs} (72%) rename Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/{PushDatawalletModificationsResponse.cs => Response.cs} (85%) rename Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/FileOwnershipClaimed/{FileOwnershipClaimedDomainEventHandler.cs => Handler.cs} (78%) rename Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/FileOwnershipLocked/{FileOwnershipLockedDomainEventHandler.cs => Handler.cs} (77%) rename Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/IdentityDeletionProcessStarted/{IdentityDeletionProcessStartedDomainEventHandler.cs => Handler.cs} (80%) rename Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/IdentityDeletionProcessStatusChanged/{IdentityDeletionProcessStatusChangedDomainEventHandler.cs => Handler.cs} (80%) rename Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/MessageCreated/{MessageCreatedDomainEventHandler.cs => Handler.cs} (88%) rename Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerDeleted/{PeerDeletedDomainEventHandler.cs => Handler.cs} (82%) rename Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerDeletionCancelled/{PeerDeletionCancelledDomainEventHandler.cs => Handler.cs} (81%) rename Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerFeatureFlagsChanged/{PeerFeatureFlagsChangedDomainEventHandler.cs => Handler.cs} (79%) rename Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerToBeDeleted/{PeerToBeDeletedDomainEventHandler.cs => Handler.cs} (81%) rename Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipReactivationCompleted/{RelationshipReactivationCompletedDomainEventHandler.cs => Handler.cs} (83%) rename Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipReactivationRequested/{RelationshipReactivationRequestedDomainEventHandler.cs => Handler.cs} (77%) rename Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipStatusChanged/{RelationshipStatusChangedDomainEventHandler.cs => Handler.cs} (89%) rename Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipTemplateAllocationsExhausted/{RelationshipTemplateAllocationsExhaustedDomainEventHandler.cs => Handler.cs} (73%) rename Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/TokenLocked/{TokenLockedDomainEventHandler.cs => Handler.cs} (83%) rename Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteExternalEventsOfIdentity/{DeleteExternalEventsOfIdentityCommand.cs => Command.cs} (56%) rename Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteSyncRunsOfIdentity/{DeleteSyncRunsOfIdentityCommand.cs => Command.cs} (56%) create mode 100644 Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ExecuteHousekeeping/Command.cs delete mode 100644 Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs rename Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/{FinalizeDatawalletVersionUpgradeSyncRunCommand.cs => Command.cs} (72%) rename Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/{FinalizeDatawalletVersionUpgradeSyncRunResponse.cs => Response.cs} (71%) rename Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/{FinalizeDatawalletVersionUpgradeSyncRunCommandValidator.cs => Validator.cs} (66%) rename Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/{FinalizeExternalEventSyncSyncRunCommand.cs => Command.cs} (84%) rename Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/{FinalizeExternalEventSyncSyncRunResponse.cs => Response.cs} (75%) rename Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/{FinalizeExternalEventSyncSyncRunCommandValidator.cs => Validator.cs} (56%) rename Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/{GetSyncRunByIdQuery.cs => Query.cs} (63%) delete mode 100644 Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/ListExternalEventsOfSyncRunResponse.cs rename Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/{ListExternalEventsOfSyncRunQuery.cs => Query.cs} (67%) create mode 100644 Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Response.cs rename Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/{RefreshExpirationTimeOfSyncRunCommand.cs => Command.cs} (53%) rename Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/{RefreshExpirationTimeOfSyncRunResponse.cs => Response.cs} (53%) rename Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/{StartSyncRunCommand.cs => Command.cs} (72%) rename Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/{StartSyncRunResponse.cs => Response.cs} (75%) rename Modules/Tokens/src/Tokens.Module/Features/Tokens/Shared/{ListTokensResponse.cs => Response.cs} (70%) diff --git a/Applications/AdminApi/src/AdminApi/Controllers/AnnouncementsController.cs b/Applications/AdminApi/src/AdminApi/Controllers/AnnouncementsController.cs index 3435a8c987..62b27f7a08 100644 --- a/Applications/AdminApi/src/AdminApi/Controllers/AnnouncementsController.cs +++ b/Applications/AdminApi/src/AdminApi/Controllers/AnnouncementsController.cs @@ -1,11 +1,11 @@ -using Backbone.AdminApi.Versions; +using CreateAnnouncement = Backbone.Modules.Announcements.Module.Features.Announcements.CreateAnnouncement; +using DeleteAnnouncementById = Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementById; +using GetAnnouncementById = Backbone.Modules.Announcements.Module.Features.Announcements.GetAnnouncementById; +using ListAnnouncements = Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncements; +using Backbone.AdminApi.Versions; using Backbone.BuildingBlocks.API.Mvc; using Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; -using Backbone.Modules.Announcements.Module.Features.Announcements.CreateAnnouncement; -using Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementById; using Backbone.Modules.Announcements.Module.Features.Announcements.Shared; -using Backbone.Modules.Announcements.Module.Features.Announcements.GetAnnouncementById; -using Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncements; using MediatR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; @@ -24,7 +24,7 @@ public AnnouncementsController(IMediator mediator) : base(mediator) [HttpPost] [ProducesResponseType(typeof(AnnouncementDTO), StatusCodes.Status201Created)] [ProducesError(StatusCodes.Status400BadRequest)] - public async Task CreateAnnouncement([FromBody] CreateAnnouncementCommand request, CancellationToken cancellationToken) + public async Task CreateAnnouncement([FromBody] CreateAnnouncement.Command request, CancellationToken cancellationToken) { var response = await _mediator.Send(request, cancellationToken); return Created(response); @@ -36,7 +36,7 @@ public async Task CreateAnnouncement([FromBody] CreateAnnouncemen [ProducesError(StatusCodes.Status404NotFound)] public async Task DeleteAnnouncement(string id, CancellationToken cancellationToken) { - await _mediator.Send(new DeleteAnnouncementByIdCommand { Id = id }, cancellationToken); + await _mediator.Send(new DeleteAnnouncementById.Command { Id = id }, cancellationToken); return NoContent(); } @@ -45,15 +45,15 @@ public async Task DeleteAnnouncement(string id, CancellationToken [ProducesError(StatusCodes.Status404NotFound)] public async Task GetAnnouncement(string id, CancellationToken cancellationToken) { - var response = await _mediator.Send(new GetAnnouncementByIdQuery { Id = id }, cancellationToken); + var response = await _mediator.Send(new GetAnnouncementById.Query { Id = id }, cancellationToken); return Ok(response); } [HttpGet] - [ProducesResponseType(typeof(ListAnnouncementsResponse), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(ListAnnouncements.Response), StatusCodes.Status200OK)] public async Task ListAnnouncements(CancellationToken cancellationToken) { - var response = await _mediator.Send(new ListAnnouncementsQuery(), cancellationToken); + var response = await _mediator.Send(new ListAnnouncements.Query(), cancellationToken); return Ok(response); } } diff --git a/Applications/AdminApi/src/AdminApi/Controllers/ChallengesController.cs b/Applications/AdminApi/src/AdminApi/Controllers/ChallengesController.cs index 909a69de6f..bd3c595cf0 100644 --- a/Applications/AdminApi/src/AdminApi/Controllers/ChallengesController.cs +++ b/Applications/AdminApi/src/AdminApi/Controllers/ChallengesController.cs @@ -1,8 +1,8 @@ -using Backbone.AdminApi.Versions; +using CreateChallenge = Backbone.Modules.Challenges.Module.Features.Challenges.CreateChallenge; +using Backbone.AdminApi.Versions; using Backbone.BuildingBlocks.API; using Backbone.BuildingBlocks.API.Mvc; using Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; -using Backbone.Modules.Challenges.Module.Features.Challenges.CreateChallenge; using Backbone.Modules.Challenges.Module.Features.Challenges.Shared; using MediatR; using Microsoft.AspNetCore.Authorization; @@ -24,7 +24,7 @@ public ChallengesController(IMediator mediator) : base(mediator) [ProducesError(StatusCodes.Status400BadRequest)] public async Task Create(CancellationToken cancellationToken) { - var response = await _mediator.Send(new CreateChallengeCommand(), cancellationToken); + var response = await _mediator.Send(new CreateChallenge.Command(), cancellationToken); return CreatedAtAction(nameof(Create), new { id = response.Id }, response); } } diff --git a/Applications/AdminApi/src/AdminApi/Controllers/ClientsController.cs b/Applications/AdminApi/src/AdminApi/Controllers/ClientsController.cs index b9781cf7ee..26c7a51bf6 100644 --- a/Applications/AdminApi/src/AdminApi/Controllers/ClientsController.cs +++ b/Applications/AdminApi/src/AdminApi/Controllers/ClientsController.cs @@ -1,15 +1,15 @@ +using ChangeClientSecret = Backbone.Modules.Devices.Module.Features.Clients.ChangeClientSecret; +using CreateClient = Backbone.Modules.Devices.Module.Features.Clients.CreateClient; +using DeleteClient = Backbone.Modules.Devices.Module.Features.Clients.DeleteClient; +using GetClient = Backbone.Modules.Devices.Module.Features.Clients.GetClient; +using UpdateClient = Backbone.Modules.Devices.Module.Features.Clients.UpdateClient; using Backbone.AdminApi.DTOs; using Backbone.AdminApi.Infrastructure.Persistence.Database; using Backbone.AdminApi.Versions; using Backbone.BuildingBlocks.API; using Backbone.BuildingBlocks.API.Mvc; using Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; -using Backbone.Modules.Devices.Module.Features.Clients.ChangeClientSecret; -using Backbone.Modules.Devices.Module.Features.Clients.CreateClient; -using Backbone.Modules.Devices.Module.Features.Clients.DeleteClient; -using Backbone.Modules.Devices.Module.Features.Clients.UpdateClient; using Backbone.Modules.Devices.Module.Features.Clients.Shared; -using Backbone.Modules.Devices.Module.Features.Clients.GetClient; using MediatR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; @@ -51,35 +51,35 @@ public async Task ListClients(CancellationToken cancellationToken [ProducesError(StatusCodes.Status404NotFound)] public async Task GetClient([FromRoute] string id, CancellationToken cancellationToken) { - var client = await _mediator.Send(new GetClientQuery { Id = id }, cancellationToken); + var client = await _mediator.Send(new GetClient.Query { Id = id }, cancellationToken); return Ok(client); } [HttpPost] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] - public async Task CreateOAuthClients(CreateClientCommand command, CancellationToken cancellationToken) + [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] + public async Task CreateOAuthClients(CreateClient.Command command, CancellationToken cancellationToken) { var createdClient = await _mediator.Send(command, cancellationToken); return Created(createdClient); } [HttpPatch("{clientId}/ChangeSecret")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] [ProducesError(StatusCodes.Status404NotFound)] [ProducesError(StatusCodes.Status400BadRequest)] public async Task ChangeClientSecret([FromRoute] string clientId, [FromBody] ChangeClientSecretRequest request, CancellationToken cancellationToken) { - var changedClient = await _mediator.Send(new ChangeClientSecretCommand { ClientId = clientId, NewSecret = request.NewSecret }, cancellationToken); + var changedClient = await _mediator.Send(new ChangeClientSecret.Command { ClientId = clientId, NewSecret = request.NewSecret }, cancellationToken); return Ok(changedClient); } [HttpPut("{clientId}")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] [ProducesError(StatusCodes.Status404NotFound)] [ProducesError(StatusCodes.Status400BadRequest)] public async Task UpdateClient([FromRoute] string clientId, [FromBody] UpdateClientRequest request, CancellationToken cancellationToken) { - var updatedClient = await _mediator.Send(new UpdateClientCommand { ClientId = clientId, DefaultTier = request.DefaultTier, MaxIdentities = request.MaxIdentities }, cancellationToken); + var updatedClient = await _mediator.Send(new UpdateClient.Command { ClientId = clientId, DefaultTier = request.DefaultTier, MaxIdentities = request.MaxIdentities }, cancellationToken); return Ok(updatedClient); } @@ -88,7 +88,7 @@ public async Task UpdateClient([FromRoute] string clientId, [From [ProducesResponseType(StatusCodes.Status404NotFound)] public async Task DeleteClient([FromRoute] string clientId, CancellationToken cancellationToken) { - await _mediator.Send(new DeleteClientCommand { ClientId = clientId }, cancellationToken); + await _mediator.Send(new DeleteClient.Command { ClientId = clientId }, cancellationToken); return NoContent(); } } diff --git a/Applications/AdminApi/src/AdminApi/Controllers/IdentitiesController.cs b/Applications/AdminApi/src/AdminApi/Controllers/IdentitiesController.cs index 4a53898947..84af83a4d7 100644 --- a/Applications/AdminApi/src/AdminApi/Controllers/IdentitiesController.cs +++ b/Applications/AdminApi/src/AdminApi/Controllers/IdentitiesController.cs @@ -1,23 +1,23 @@ +using CreateIdentity = Backbone.Modules.Devices.Module.Features.Identities.CreateIdentity; +using CreateQuotaForIdentity = Backbone.Modules.Quotas.Module.Features.Identities.CreateQuotaForIdentity; +using DeleteQuotaForIdentity = Backbone.Modules.Quotas.Module.Features.Identities.DeleteQuotaForIdentity; +using GetDeletionProcessAsSupport = Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsSupport; +using ListDeletionProcessesAsSupport = Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsSupport; +using ListDeletionProcessesAuditLogs = Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; +using UpdateIdentity = Backbone.Modules.Devices.Module.Features.Identities.UpdateIdentity; using Backbone.AdminApi.Versions; using Backbone.BuildingBlocks.API; using Backbone.BuildingBlocks.API.Mvc; using Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; using Backbone.Modules.Devices.Module.Features.Devices.Shared; using Backbone.Modules.Devices.Module.Features.Shared; -using Backbone.Modules.Devices.Module.Features.Identities.CreateIdentity; -using Backbone.Modules.Devices.Module.Features.Identities.UpdateIdentity; -using Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsSupport; -using Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsSupport; -using Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; using Backbone.Modules.Quotas.Module.Features.Shared; -using Backbone.Modules.Quotas.Module.Features.Identities.CreateQuotaForIdentity; -using Backbone.Modules.Quotas.Module.Features.Identities.DeleteQuotaForIdentity; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using MediatR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; -using GetIdentityQueryDevices = Backbone.Modules.Devices.Module.Features.Identities.GetIdentity.GetIdentityQuery; -using GetIdentityQueryQuotas = Backbone.Modules.Quotas.Module.Features.Identities.GetIdentity.GetIdentityQuery; +using GetIdentityQueryDevices = Backbone.Modules.Devices.Module.Features.Identities.GetIdentity.Query; +using GetIdentityQueryQuotas = Backbone.Modules.Quotas.Module.Features.Identities.GetIdentity.Query; namespace Backbone.AdminApi.Controllers; @@ -37,7 +37,7 @@ public IdentitiesController(IMediator mediator) : base(mediator) public async Task CreateIndividualQuota([FromRoute] string identityAddress, [FromBody] CreateQuotaForIdentityRequest request, CancellationToken cancellationToken) { var createdIndividualQuotaDTO = - await _mediator.Send(new CreateQuotaForIdentityCommand { IdentityAddress = identityAddress, MetricKey = request.MetricKey, Max = request.Max, Period = request.Period }, cancellationToken); + await _mediator.Send(new CreateQuotaForIdentity.Command { IdentityAddress = identityAddress, MetricKey = request.MetricKey, Max = request.Max, Period = request.Period }, cancellationToken); return Created(createdIndividualQuotaDTO); } @@ -47,7 +47,7 @@ public async Task CreateIndividualQuota([FromRoute] string identi [ProducesError(StatusCodes.Status400BadRequest)] public async Task DeleteIndividualQuota([FromRoute] string identityAddress, [FromRoute] string individualQuotaId, CancellationToken cancellationToken) { - await _mediator.Send(new DeleteQuotaForIdentityCommand { IdentityAddress = identityAddress, IndividualQuotaId = individualQuotaId }, cancellationToken); + await _mediator.Send(new DeleteQuotaForIdentity.Command { IdentityAddress = identityAddress, IndividualQuotaId = individualQuotaId }, cancellationToken); return NoContent(); } @@ -80,17 +80,17 @@ public async Task GetIdentityByAddress([FromRoute] string address [ProducesError(StatusCodes.Status404NotFound)] public async Task UpdateIdentity([FromRoute] string identityAddress, [FromBody] UpdateIdentityRequest request, CancellationToken cancellationToken) { - var command = new UpdateIdentityCommand { Address = identityAddress, TierId = request.TierId }; + var command = new UpdateIdentity.Command { Address = identityAddress, TierId = request.TierId }; await _mediator.Send(command, cancellationToken); return NoContent(); } [HttpPost] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status201Created)] + [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status201Created)] [ProducesError(StatusCodes.Status400BadRequest)] public async Task CreateIdentity(CreateIdentityRequest request, CancellationToken cancellationToken) { - var command = new CreateIdentityCommand + var command = new CreateIdentity.Command { ClientId = request.ClientId, DevicePassword = request.DevicePassword, @@ -110,20 +110,20 @@ public async Task CreateIdentity(CreateIdentityRequest request, C } [HttpGet("{identityAddress}/DeletionProcesses")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] [ProducesError(StatusCodes.Status400BadRequest)] public async Task ListDeletionProcessesAsSupport([FromRoute] string identityAddress, CancellationToken cancellationToken) { - var response = await _mediator.Send(new ListDeletionProcessesAsSupportQuery { IdentityAddress = identityAddress }, cancellationToken); + var response = await _mediator.Send(new ListDeletionProcessesAsSupport.Query { IdentityAddress = identityAddress }, cancellationToken); return Ok(response); } [HttpGet("{identityAddress}/DeletionProcesses/AuditLogs")] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] [ProducesError(StatusCodes.Status400BadRequest)] public async Task ListDeletionProcessesAuditLogs([FromRoute] string identityAddress, CancellationToken cancellationToken) { - var response = await _mediator.Send(new ListDeletionProcessesAuditLogsQuery { IdentityAddress = identityAddress }, cancellationToken); + var response = await _mediator.Send(new ListDeletionProcessesAuditLogs.Query { IdentityAddress = identityAddress }, cancellationToken); return Ok(response); } @@ -132,7 +132,7 @@ public async Task ListDeletionProcessesAuditLogs([FromRoute] stri [ProducesError(StatusCodes.Status404NotFound)] public async Task GetDeletionProcessAsSupport([FromRoute] string identityAddress, [FromRoute] string deletionProcessId, CancellationToken cancellationToken) { - var response = await _mediator.Send(new GetDeletionProcessAsSupportQuery { IdentityAddress = identityAddress, DeletionProcessId = deletionProcessId }, cancellationToken); + var response = await _mediator.Send(new GetDeletionProcessAsSupport.Query { IdentityAddress = identityAddress, DeletionProcessId = deletionProcessId }, cancellationToken); return Ok(response); } } diff --git a/Applications/AdminApi/src/AdminApi/Controllers/MetricsController.cs b/Applications/AdminApi/src/AdminApi/Controllers/MetricsController.cs index 54095b7cf5..ebd4c2176a 100644 --- a/Applications/AdminApi/src/AdminApi/Controllers/MetricsController.cs +++ b/Applications/AdminApi/src/AdminApi/Controllers/MetricsController.cs @@ -1,7 +1,7 @@ +using ListMetrics = Backbone.Modules.Quotas.Module.Features.Metrics.ListMetrics; using Backbone.AdminApi.Versions; using Backbone.BuildingBlocks.API; using Backbone.BuildingBlocks.API.Mvc; -using Backbone.Modules.Quotas.Module.Features.Metrics.ListMetrics; using MediatR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; @@ -18,11 +18,11 @@ public MetricsController(IMediator mediator) : base(mediator) } [HttpGet] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status404NotFound)] public async Task ListMetrics(CancellationToken cancellationToken) { - var metrics = await _mediator.Send(new ListMetricsQuery(), cancellationToken); + var metrics = await _mediator.Send(new ListMetrics.Query(), cancellationToken); return Ok(metrics); } } diff --git a/Applications/AdminApi/src/AdminApi/Controllers/TiersController.cs b/Applications/AdminApi/src/AdminApi/Controllers/TiersController.cs index 5066867990..b4ae21e993 100644 --- a/Applications/AdminApi/src/AdminApi/Controllers/TiersController.cs +++ b/Applications/AdminApi/src/AdminApi/Controllers/TiersController.cs @@ -1,15 +1,15 @@ +using CreateQuotaForTier = Backbone.Modules.Quotas.Module.Features.Tiers.CreateQuotaForTier; +using CreateTier = Backbone.Modules.Devices.Module.Features.Tiers.CreateTier; +using DeleteTier = Backbone.Modules.Devices.Module.Features.Tiers.DeleteTier; +using DeleteTierQuotaDefinition = Backbone.Modules.Quotas.Module.Features.Tiers.DeleteTierQuotaDefinition; +using GetTier = Backbone.Modules.Quotas.Module.Features.Tiers.GetTier; using Backbone.AdminApi.DTOs; using Backbone.AdminApi.Infrastructure.Persistence.Database; using Backbone.AdminApi.Versions; using Backbone.BuildingBlocks.API; using Backbone.BuildingBlocks.API.Mvc; using Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; -using Backbone.Modules.Devices.Module.Features.Tiers.CreateTier; -using Backbone.Modules.Devices.Module.Features.Tiers.DeleteTier; using Backbone.Modules.Quotas.Module.Features.Shared; -using Backbone.Modules.Quotas.Module.Features.Tiers.CreateQuotaForTier; -using Backbone.Modules.Quotas.Module.Features.Tiers.DeleteTierQuotaDefinition; -using Backbone.Modules.Quotas.Module.Features.Tiers.GetTier; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using MediatR; using Microsoft.AspNetCore.Authorization; @@ -51,14 +51,14 @@ public async Task ListTiers(CancellationToken cancellationToken) [ProducesError(StatusCodes.Status404NotFound)] public async Task GetTier([FromRoute] string tierId, CancellationToken cancellationToken) { - var tier = await _mediator.Send(new GetTierQuery { Id = tierId }, cancellationToken); + var tier = await _mediator.Send(new GetTier.Query { Id = tierId }, cancellationToken); return Ok(tier); } [HttpPost] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status201Created)] + [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status201Created)] [ProducesError(StatusCodes.Status400BadRequest)] - public async Task PostTiers([FromBody] CreateTierCommand command, CancellationToken cancellationToken) + public async Task PostTiers([FromBody] CreateTier.Command command, CancellationToken cancellationToken) { var createdTier = await _mediator.Send(command, cancellationToken); return Created(createdTier); @@ -70,7 +70,7 @@ public async Task PostTiers([FromBody] CreateTierCommand command, [ProducesError(StatusCodes.Status400BadRequest)] public async Task DeleteTier([FromRoute] string tierId, CancellationToken cancellationToken) { - var command = new DeleteTierCommand { TierId = tierId }; + var command = new DeleteTier.Command { TierId = tierId }; await _mediator.Send(command, cancellationToken); return NoContent(); } @@ -81,7 +81,7 @@ public async Task DeleteTier([FromRoute] string tierId, Cancellat [ProducesError(StatusCodes.Status400BadRequest)] public async Task CreateTierQuota([FromRoute] string tierId, [FromBody] CreateQuotaForTierRequest request, CancellationToken cancellationToken) { - var createdTierQuotaDefinition = await _mediator.Send(new CreateQuotaForTierCommand { TierId = tierId, MetricKey = request.MetricKey, Max = request.Max, Period = request.Period }, + var createdTierQuotaDefinition = await _mediator.Send(new CreateQuotaForTier.Command { TierId = tierId, MetricKey = request.MetricKey, Max = request.Max, Period = request.Period }, cancellationToken); return Created(createdTierQuotaDefinition); } @@ -91,7 +91,7 @@ public async Task CreateTierQuota([FromRoute] string tierId, [Fro [ProducesError(StatusCodes.Status404NotFound)] public async Task DeleteTierQuota([FromRoute] string tierId, [FromRoute] string tierQuotaDefinitionId, CancellationToken cancellationToken) { - await _mediator.Send(new DeleteTierQuotaDefinitionCommand { TierId = tierId, TierQuotaDefinitionId = tierQuotaDefinitionId }, cancellationToken); + await _mediator.Send(new DeleteTierQuotaDefinition.Command { TierId = tierId, TierQuotaDefinitionId = tierQuotaDefinitionId }, cancellationToken); return NoContent(); } } diff --git a/Applications/AdminApi/src/AdminApi/Controllers/TokensController.cs b/Applications/AdminApi/src/AdminApi/Controllers/TokensController.cs index bb59d645e8..b5e2b05ff8 100644 --- a/Applications/AdminApi/src/AdminApi/Controllers/TokensController.cs +++ b/Applications/AdminApi/src/AdminApi/Controllers/TokensController.cs @@ -1,12 +1,12 @@ -using Backbone.AdminApi.Versions; +using ListTokensByIdentity = Backbone.Modules.Tokens.Module.Features.Tokens.ListTokensByIdentity; +using ResetAccessFailedCountOfToken = Backbone.Modules.Tokens.Module.Features.Tokens.ResetAccessFailedCountOfToken; +using Backbone.AdminApi.Versions; using Backbone.BuildingBlocks.API; using Backbone.BuildingBlocks.API.Mvc; using Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Pagination; using Backbone.Modules.Tokens.Module; -using Backbone.Modules.Tokens.Module.Features.Tokens.ResetAccessFailedCountOfToken; -using Backbone.Modules.Tokens.Module.Features.Tokens.ListTokensByIdentity; using Backbone.Modules.Tokens.Module.Features.Tokens.Shared; using MediatR; using Microsoft.AspNetCore.Authorization; @@ -22,7 +22,7 @@ namespace Backbone.AdminApi.Controllers; public class TokensController(IMediator mediator, IOptions options) : ApiControllerBase(mediator) { [HttpGet] - [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] + [ProducesResponseType(typeof(HttpResponseEnvelopeResult), StatusCodes.Status200OK)] public async Task ListTokensByIdentity([FromQuery] PaginationFilter paginationFilter, [FromQuery] string createdBy, CancellationToken cancellationToken) { if (paginationFilter.PageSize != null) @@ -35,7 +35,7 @@ public async Task ListTokensByIdentity([FromQuery] PaginationFilt } } - var request = new ListTokensByIdentityQuery(createdBy, paginationFilter); + var request = new ListTokensByIdentity.Query(createdBy, paginationFilter); var pagedResult = await _mediator.Send(request, cancellationToken); return Paged(pagedResult); @@ -47,7 +47,7 @@ public async Task ListTokensByIdentity([FromQuery] PaginationFilt [ProducesError(StatusCodes.Status400BadRequest)] public async Task ResetAccessFailedCount([FromRoute] string tokenId, CancellationToken cancellationToken) { - var request = new ResetAccessFailedCountOfTokenCommand { TokenId = tokenId }; + var request = new ResetAccessFailedCountOfToken.Command { TokenId = tokenId }; await _mediator.Send(request, cancellationToken); return NoContent(); } diff --git a/Applications/AdminCli/src/AdminCli/Commands/Announcements/DeleteAnnouncementCommand.cs b/Applications/AdminCli/src/AdminCli/Commands/Announcements/DeleteAnnouncementCommand.cs index 28f69efeee..6b5c70c25c 100644 --- a/Applications/AdminCli/src/AdminCli/Commands/Announcements/DeleteAnnouncementCommand.cs +++ b/Applications/AdminCli/src/AdminCli/Commands/Announcements/DeleteAnnouncementCommand.cs @@ -1,6 +1,6 @@ +using DeleteAnnouncementById = Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementById; using System.CommandLine; using Backbone.AdminCli.Commands.BaseClasses; -using Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementById; using MediatR; namespace Backbone.AdminCli.Commands.Announcements; @@ -28,7 +28,7 @@ private async Task DeleteAnnouncement(string announcementId) { try { - await _mediator.Send(new DeleteAnnouncementByIdCommand { Id = announcementId }); + await _mediator.Send(new DeleteAnnouncementById.Command { Id = announcementId }); Console.WriteLine($@"Successfully deleted announcement with id '{announcementId}'"); } catch (Exception e) diff --git a/Applications/AdminCli/src/AdminCli/Commands/Announcements/SendAnnouncementCommand.cs b/Applications/AdminCli/src/AdminCli/Commands/Announcements/SendAnnouncementCommand.cs index 6b3bfbe7ac..19075f8cd8 100644 --- a/Applications/AdminCli/src/AdminCli/Commands/Announcements/SendAnnouncementCommand.cs +++ b/Applications/AdminCli/src/AdminCli/Commands/Announcements/SendAnnouncementCommand.cs @@ -1,4 +1,5 @@ -using System.CommandLine; +using CreateAnnouncement = Backbone.Modules.Announcements.Module.Features.Announcements.CreateAnnouncement; +using System.CommandLine; using System.Text.Json; using Backbone.AdminCli.Commands.BaseClasses; using Backbone.Modules.Announcements.Module.Features.Announcements.CreateAnnouncement; @@ -100,7 +101,7 @@ _ when DateTime.TryParse(expiresAtInput, out var parsedDateTime) => parsedDateTi Console.WriteLine(@"Sending announcement..."); - var response = await _mediator.Send(new CreateAnnouncementCommand + var response = await _mediator.Send(new CreateAnnouncement.Command { Texts = texts, Severity = severity, diff --git a/Applications/AdminCli/src/AdminCli/Commands/Clients/CreateClientCommand.cs b/Applications/AdminCli/src/AdminCli/Commands/Clients/CreateClientCommand.cs index fc8abdf12b..d5821c7497 100644 --- a/Applications/AdminCli/src/AdminCli/Commands/Clients/CreateClientCommand.cs +++ b/Applications/AdminCli/src/AdminCli/Commands/Clients/CreateClientCommand.cs @@ -57,7 +57,7 @@ public CreateClientCommand(IMediator mediator) : base(mediator, "create", "Creat private async Task CreateClient(string? clientId, string? displayName, string? clientSecret, string defaultTier, int? maxIdentities) { - var command = new Modules.Devices.Module.Features.Clients.CreateClient.CreateClientCommand + var command = new Modules.Devices.Module.Features.Clients.CreateClient.Command { ClientId = clientId, DisplayName = displayName, diff --git a/Applications/AdminCli/src/AdminCli/Commands/Clients/DeleteClientsCommand.cs b/Applications/AdminCli/src/AdminCli/Commands/Clients/DeleteClientsCommand.cs index 9bf699bec0..371c434c42 100644 --- a/Applications/AdminCli/src/AdminCli/Commands/Clients/DeleteClientsCommand.cs +++ b/Applications/AdminCli/src/AdminCli/Commands/Clients/DeleteClientsCommand.cs @@ -1,6 +1,6 @@ +using DeleteClient = Backbone.Modules.Devices.Module.Features.Clients.DeleteClient; using System.CommandLine; using Backbone.AdminCli.Commands.BaseClasses; -using Backbone.Modules.Devices.Module.Features.Clients.DeleteClient; using MediatR; namespace Backbone.AdminCli.Commands.Clients; @@ -30,7 +30,7 @@ private async Task DeleteClients(string[] clientIds) { try { - await _mediator.Send(new DeleteClientCommand { ClientId = clientId }, CancellationToken.None); + await _mediator.Send(new DeleteClient.Command { ClientId = clientId }, CancellationToken.None); Console.WriteLine($@"Successfully deleted client '{clientId}'"); } catch (Exception ex) diff --git a/Applications/AdminCli/src/AdminCli/Commands/Clients/ListClientsCommand.cs b/Applications/AdminCli/src/AdminCli/Commands/Clients/ListClientsCommand.cs index 5631c2b512..a5369893be 100644 --- a/Applications/AdminCli/src/AdminCli/Commands/Clients/ListClientsCommand.cs +++ b/Applications/AdminCli/src/AdminCli/Commands/Clients/ListClientsCommand.cs @@ -1,7 +1,7 @@ +using ListClients = Backbone.Modules.Devices.Module.Features.Clients.ListClients; using System.CommandLine; using System.Text.Json; using Backbone.AdminCli.Commands.BaseClasses; -using Backbone.Modules.Devices.Module.Features.Clients.ListClients; using MediatR; namespace Backbone.AdminCli.Commands.Clients; @@ -15,7 +15,7 @@ public ListClientsCommand(IMediator mediator) : base(mediator, "list", "List all private async Task ListClients() { - var response = await _mediator.Send(new ListClientsQuery(), CancellationToken.None); + var response = await _mediator.Send(new ListClients.Query(), CancellationToken.None); Console.WriteLine(@"The following clients are configured:"); diff --git a/Applications/AdminCli/src/AdminCli/Commands/Tiers/CreateTierCommand.cs b/Applications/AdminCli/src/AdminCli/Commands/Tiers/CreateTierCommand.cs index 6b30430e5b..747c04bfde 100644 --- a/Applications/AdminCli/src/AdminCli/Commands/Tiers/CreateTierCommand.cs +++ b/Applications/AdminCli/src/AdminCli/Commands/Tiers/CreateTierCommand.cs @@ -26,7 +26,7 @@ public class CreateTierCommand : AdminCliCommand private async Task CreateTier(string name) { - var response = await _mediator.Send(new Modules.Devices.Module.Features.Tiers.CreateTier.CreateTierCommand { Name = name }, CancellationToken.None); + var response = await _mediator.Send(new Modules.Devices.Module.Features.Tiers.CreateTier.Command { Name = name }, CancellationToken.None); Console.WriteLine(JsonSerializer.Serialize(response, JSON_SERIALIZER_OPTIONS)); } diff --git a/Applications/AdminCli/src/AdminCli/Commands/Tiers/ListTiersCommand.cs b/Applications/AdminCli/src/AdminCli/Commands/Tiers/ListTiersCommand.cs index cfae65f937..624a1fb7d7 100644 --- a/Applications/AdminCli/src/AdminCli/Commands/Tiers/ListTiersCommand.cs +++ b/Applications/AdminCli/src/AdminCli/Commands/Tiers/ListTiersCommand.cs @@ -1,8 +1,8 @@ +using ListTiers = Backbone.Modules.Devices.Module.Features.Tiers.ListTiers; using System.CommandLine; using System.Text.Json; using Backbone.AdminCli.Commands.BaseClasses; using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.Modules.Devices.Module.Features.Tiers.ListTiers; using MediatR; namespace Backbone.AdminCli.Commands.Tiers; @@ -16,7 +16,7 @@ public ListTiersCommand(IMediator mediator) : base(mediator, "list", "List all e private async Task ListTiers() { - var response = await _mediator.Send(new ListTiersQuery { PaginationFilter = new PaginationFilter() }, CancellationToken.None); + var response = await _mediator.Send(new ListTiers.Query { PaginationFilter = new PaginationFilter() }, CancellationToken.None); Console.WriteLine(@"The following tiers are configured:"); diff --git a/Applications/AdminCli/src/AdminCli/Commands/Tokens/ResetAccessFailedCountOfTokenCommand.cs b/Applications/AdminCli/src/AdminCli/Commands/Tokens/ResetAccessFailedCountOfTokenCommand.cs index c64d2fecd6..4b4918f9bb 100644 --- a/Applications/AdminCli/src/AdminCli/Commands/Tokens/ResetAccessFailedCountOfTokenCommand.cs +++ b/Applications/AdminCli/src/AdminCli/Commands/Tokens/ResetAccessFailedCountOfTokenCommand.cs @@ -26,7 +26,7 @@ public ResetAccessFailedCountOfTokenCommand(IMediator mediator) : base(mediator, private async Task ResetAccessFailedCount(string tokenId) { - await _mediator.Send(new Modules.Tokens.Module.Features.Tokens.ResetAccessFailedCountOfToken.ResetAccessFailedCountOfTokenCommand { TokenId = tokenId }, CancellationToken.None); + await _mediator.Send(new Modules.Tokens.Module.Features.Tokens.ResetAccessFailedCountOfToken.Command { TokenId = tokenId }, CancellationToken.None); Console.WriteLine(@"Access failed count has been reset."); } diff --git a/Applications/ConsumerApi/src/DevicesDbContextSeeder.cs b/Applications/ConsumerApi/src/DevicesDbContextSeeder.cs index 47bb609e43..c043969de6 100644 --- a/Applications/ConsumerApi/src/DevicesDbContextSeeder.cs +++ b/Applications/ConsumerApi/src/DevicesDbContextSeeder.cs @@ -1,8 +1,8 @@ +using CreateQueuedForDeletionTier = Backbone.Modules.Devices.Module.Features.Tiers.CreateQueuedForDeletionTier; +using CreateTier = Backbone.Modules.Devices.Module.Features.Tiers.CreateTier; +using SeedTestUsers = Backbone.Modules.Devices.Module.Features.Users.SeedTestUsers; using Backbone.BuildingBlocks.API.Extensions; using Backbone.Modules.Devices.Module.Features.Tiers.Shared; -using Backbone.Modules.Devices.Module.Features.Tiers.CreateQueuedForDeletionTier; -using Backbone.Modules.Devices.Module.Features.Tiers.CreateTier; -using Backbone.Modules.Devices.Module.Features.Users.SeedTestUsers; using Backbone.Modules.Devices.Domain.Aggregates.Tier; using Backbone.Modules.Devices.Infrastructure.Persistence.Database; using MediatR; @@ -37,19 +37,19 @@ private async Task SeedEverything(DevicesDbContext context) private async Task SeedApplicationUsers() { - await _mediator.Send(new SeedTestUsersCommand()); + await _mediator.Send(new SeedTestUsers.Command()); } private async Task SeedBasicTier(DevicesDbContext context) { if (await GetBasicTier(context) == null) { - await _mediator.Send(new CreateTierCommand { Name = TierName.BASIC_DEFAULT_NAME }); + await _mediator.Send(new CreateTier.Command { Name = TierName.BASIC_DEFAULT_NAME }); } } private async Task SeedQueuedForDeletionTier() { - await _mediator.Send(new CreateQueuedForDeletionTierCommand()); + await _mediator.Send(new CreateQueuedForDeletionTier.Command()); } } diff --git a/Applications/ConsumerApi/src/QuotasDbContextSeeder.cs b/Applications/ConsumerApi/src/QuotasDbContextSeeder.cs index d924e52bdf..2cc4741c96 100644 --- a/Applications/ConsumerApi/src/QuotasDbContextSeeder.cs +++ b/Applications/ConsumerApi/src/QuotasDbContextSeeder.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.Extensions; -using Backbone.Modules.Quotas.Module.Features.Tiers.SeedQueuedForDeletionTier; +using SeedQueuedForDeletionTier = Backbone.Modules.Quotas.Module.Features.Tiers.SeedQueuedForDeletionTier; +using Backbone.BuildingBlocks.API.Extensions; using Backbone.Modules.Quotas.Infrastructure.Persistence.Database; using MediatR; @@ -26,6 +26,6 @@ private async Task SeedEverything(QuotasDbContext context) private async Task SeedQueuedForDeletionTierMetrics() { - await _mediator.Send(new SeedQueuedForDeletionTierCommand()); + await _mediator.Send(new SeedQueuedForDeletionTier.Command()); } } diff --git a/Applications/Housekeeper/src/Housekeeper/Executor.cs b/Applications/Housekeeper/src/Housekeeper/Executor.cs index 8495f00cca..e26a7d2d5e 100644 --- a/Applications/Housekeeper/src/Housekeeper/Executor.cs +++ b/Applications/Housekeeper/src/Housekeeper/Executor.cs @@ -1,13 +1,13 @@ using System.Diagnostics; using Backbone.BuildingBlocks.Application.Housekeeping; using MediatR; -using ExecuteAnnouncementsModuleHousekeepingCommand = Backbone.Modules.Announcements.Module.Features.Announcements.ExecuteHousekeeping.ExecuteHousekeepingCommand; -using ExecuteChallengesModuleHousekeepingCommand = Backbone.Modules.Challenges.Module.Features.Challenges.ExecuteHousekeeping.ExecuteHousekeepingCommand; -using ExecuteDevicesModuleHousekeepingCommand = Backbone.Modules.Devices.Module.Features.Devices.ExecuteHousekeeping.ExecuteHousekeepingCommand; -using ExecuteFilesModuleHousekeepingCommand = Backbone.Modules.Files.Module.Features.Files.ExecuteHousekeeping.ExecuteHousekeepingCommand; -using ExecuteRelationshipsModuleHousekeepingCommand = Backbone.Modules.Relationships.Module.Features.Relationships.ExecuteHousekeeping.ExecuteHousekeepingCommand; -using ExecuteSynchronizationModuleHousekeepingCommand = Backbone.Modules.Synchronization.Module.Features.SyncRuns.ExecuteHousekeeping.ExecuteHousekeepingCommand; -using ExecuteTokensModuleHousekeepingCommand = Backbone.Modules.Tokens.Module.Features.Tokens.ExecuteHousekeeping.ExecuteHousekeepingCommand; +using ExecuteAnnouncementsModuleHousekeepingCommand = Backbone.Modules.Announcements.Module.Features.Announcements.ExecuteHousekeeping.Command; +using ExecuteChallengesModuleHousekeepingCommand = Backbone.Modules.Challenges.Module.Features.Challenges.ExecuteHousekeeping.Command; +using ExecuteDevicesModuleHousekeepingCommand = Backbone.Modules.Devices.Module.Features.Devices.ExecuteHousekeeping.Command; +using ExecuteFilesModuleHousekeepingCommand = Backbone.Modules.Files.Module.Features.Files.ExecuteHousekeeping.Command; +using ExecuteRelationshipsModuleHousekeepingCommand = Backbone.Modules.Relationships.Module.Features.Relationships.ExecuteHousekeeping.Command; +using ExecuteSynchronizationModuleHousekeepingCommand = Backbone.Modules.Synchronization.Module.Features.SyncRuns.ExecuteHousekeeping.Command; +using ExecuteTokensModuleHousekeepingCommand = Backbone.Modules.Tokens.Module.Features.Tokens.ExecuteHousekeeping.Command; namespace Backbone.Housekeeper; diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/DeletionProcessLogger.cs b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/DeletionProcessLogger.cs index 32ee8626eb..54b92d33d7 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/DeletionProcessLogger.cs +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/DeletionProcessLogger.cs @@ -1,6 +1,6 @@ -using Backbone.BuildingBlocks.Application.Identities; +using LogDeletionProcess = Backbone.Modules.Devices.Module.Features.Identities.LogDeletionProcess; +using Backbone.BuildingBlocks.Application.Identities; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Module.Features.Identities.LogDeletionProcess; using MediatR; namespace Backbone.Job.IdentityDeletion; @@ -16,6 +16,6 @@ public DeletionProcessLogger(IMediator mediator) public async Task LogDeletion(IdentityAddress identityAddress, string aggregateType) { - await _mediator.Send(new LogDeletionProcessCommand { IdentityAddress = identityAddress, AggregateType = aggregateType }); + await _mediator.Send(new LogDeletionProcess.Command { IdentityAddress = identityAddress, AggregateType = aggregateType }); } } diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Workers/ActualDeletionWorker.cs b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Workers/ActualDeletionWorker.cs index f3f7ab0256..62cd29edba 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Workers/ActualDeletionWorker.cs +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Workers/ActualDeletionWorker.cs @@ -1,11 +1,11 @@ -using Backbone.BuildingBlocks.Application.Identities; +using GetIdentity = Backbone.Modules.Devices.Module.Features.Identities.GetIdentity; +using HandleCompletedDeletionProcess = Backbone.Modules.Devices.Module.Features.Identities.HandleCompletedDeletionProcess; +using HandleErrorDuringIdentityDeletion = Backbone.Modules.Devices.Module.Features.Identities.HandleErrorDuringIdentityDeletion; +using ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting = Backbone.Modules.Devices.Module.Features.Identities.ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting; +using TriggerRipeDeletionProcesses = Backbone.Modules.Devices.Module.Features.Identities.TriggerRipeDeletionProcesses; +using Backbone.BuildingBlocks.Application.Identities; using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.BuildingBlocks.Domain.Errors; -using Backbone.Modules.Devices.Module.Features.Identities.HandleCompletedDeletionProcess; -using Backbone.Modules.Devices.Module.Features.Identities.HandleErrorDuringIdentityDeletion; -using Backbone.Modules.Devices.Module.Features.Identities.TriggerRipeDeletionProcesses; -using Backbone.Modules.Devices.Module.Features.Identities.GetIdentity; -using Backbone.Modules.Devices.Module.Features.Identities.ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting; using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.DeletionProcess; using CSharpFunctionalExtensions; using MediatR; @@ -49,7 +49,7 @@ public Task StopAsync(CancellationToken cancellationToken) public async Task StartProcessing(CancellationToken cancellationToken) { // In case there was an error during a previous run, we need to make sure we also process those identities again. - var addressesOfIdentitiesWithDeletionProcessesTriggeredInThePast = (await _mediator.Send(new ListAddressesOfIdentitiesWithDeletionProcessInStatusDeletingQuery(), cancellationToken)).Addresses; + var addressesOfIdentitiesWithDeletionProcessesTriggeredInThePast = (await _mediator.Send(new ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting.Query(), cancellationToken)).Addresses; var addressesOfIdentitiesWithNewlyTriggeredDeletionProcesses = await TriggerRipeDeletionProcesses(cancellationToken); var allAddressesToProcess = addressesOfIdentitiesWithDeletionProcessesTriggeredInThePast.Union(addressesOfIdentitiesWithNewlyTriggeredDeletionProcesses).Distinct(); @@ -59,7 +59,7 @@ public async Task StartProcessing(CancellationToken cancellationToken) private async Task> TriggerRipeDeletionProcesses(CancellationToken cancellationToken) { - var response = await _mediator.Send(new TriggerRipeDeletionProcessesCommand(), cancellationToken); + var response = await _mediator.Send(new TriggerRipeDeletionProcesses.Command(), cancellationToken); var addressesWithTriggeredDeletionProcesses = response.Results.Where(x => x.Value.IsSuccess).Select(x => x.Key).ToList(); var erroringDeletionTriggers = response.Results.Where(x => x.Value.IsFailure); @@ -102,13 +102,13 @@ private async Task TryDelete(string identityAddress) } catch (Exception ex) { - await _mediator.Send(new HandleErrorDuringIdentityDeletionCommand { IdentityAddress = identityAddress, ErrorMessage = ex.Message }); + await _mediator.Send(new HandleErrorDuringIdentityDeletion.Command { IdentityAddress = identityAddress, ErrorMessage = ex.Message }); } } private async Task Delete(string identityAddress) { - var identity = await _mediator.Send(new GetIdentityQuery { Address = identityAddress }); + var identity = await _mediator.Send(new GetIdentity.Query { Address = identityAddress }); foreach (var identityDeleter in _identityDeleters) { @@ -126,7 +126,7 @@ private async Task Delete(string identityAddress) var usernames = identity.Devices.Select(d => d.Username); - await _mediator.Send(new HandleCompletedDeletionProcessCommand { IdentityAddress = identityAddress, Usernames = usernames }); + await _mediator.Send(new HandleCompletedDeletionProcess.Command { IdentityAddress = identityAddress, Usernames = usernames }); } private void LogErroringDeletionTriggers(IEnumerable>> erroringDeletionTriggers) diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Workers/SendGracePeriodRemindersWorker.cs b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Workers/SendGracePeriodRemindersWorker.cs index a1c7bb7e15..635f1736e0 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Workers/SendGracePeriodRemindersWorker.cs +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Workers/SendGracePeriodRemindersWorker.cs @@ -1,4 +1,4 @@ -using Backbone.Modules.Devices.Module.Features.Identities.SendDeletionProcessGracePeriodReminders; +using SendDeletionProcessGracePeriodReminders = Backbone.Modules.Devices.Module.Features.Identities.SendDeletionProcessGracePeriodReminders; using MediatR; namespace Backbone.Job.IdentityDeletion.Workers; @@ -27,7 +27,7 @@ public async Task StartAsync(CancellationToken cancellationToken) private async Task StartProcessing(CancellationToken cancellationToken) { - await _mediator.Send(new SendDeletionProcessGracePeriodRemindersCommand(), cancellationToken); + await _mediator.Send(new SendDeletionProcessGracePeriodReminders.Command(), cancellationToken); _logger.RemindersSent(); } diff --git a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/Tests/ActualDeletionWorkerTests.cs b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/Tests/ActualDeletionWorkerTests.cs index 435de9dd94..8bd71a04b1 100644 --- a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/Tests/ActualDeletionWorkerTests.cs +++ b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/Tests/ActualDeletionWorkerTests.cs @@ -1,14 +1,14 @@ -using Backbone.BuildingBlocks.Application.Identities; +using GetIdentity = Backbone.Modules.Devices.Module.Features.Identities.GetIdentity; +using ListRelationshipsOfIdentity = Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationshipsOfIdentity; +using TriggerRipeDeletionProcesses = Backbone.Modules.Devices.Module.Features.Identities.TriggerRipeDeletionProcesses; +using Backbone.BuildingBlocks.Application.Identities; using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.BuildingBlocks.Domain.Errors; using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Job.IdentityDeletion.Workers; -using Backbone.Modules.Devices.Module.Features.Identities.TriggerRipeDeletionProcesses; -using Backbone.Modules.Devices.Module.Features.Identities.GetIdentity; using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.DeletionProcess; using Backbone.Modules.Devices.Domain.Aggregates.Tier; using Backbone.Modules.Devices.Domain.Entities.Identities; -using Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationshipsOfIdentity; using CSharpFunctionalExtensions; using FakeItEasy; using MediatR; @@ -32,7 +32,7 @@ public async Task Proxies_triggering_the_deletion_processes_to_command_handler() await worker.StartProcessing(CancellationToken.None); // Assert - A.CallTo(() => mockMediator.Send(A._, A._)).MustHaveHappenedOnceExactly(); + A.CallTo(() => mockMediator.Send(A._, A._)).MustHaveHappenedOnceExactly(); } [Fact] @@ -47,14 +47,14 @@ public async Task Calls_Deleters_For_Each_Identity() var mockIdentityDeleter = A.Fake(); var worker = CreateWorker(fakeMediator, [mockIdentityDeleter]); - A.CallTo(() => fakeMediator.Send(A._, A._)) - .Returns(new ListRelationshipsOfIdentityResponse([])); + A.CallTo(() => fakeMediator.Send(A._, A._)) + .Returns(new ListRelationshipsOfIdentity.Response([])); - A.CallTo(() => fakeMediator.Send(A.That.Matches(q => q.Address == identity1.Address.Value), A._)) - .Returns(new GetIdentityResponse(identity1)); + A.CallTo(() => fakeMediator.Send(A.That.Matches(q => q.Address == identity1.Address.Value), A._)) + .Returns(new GetIdentity.Response(identity1)); - A.CallTo(() => fakeMediator.Send(A.That.Matches(q => q.Address == identity2.Address.Value), A._)) - .Returns(new GetIdentityResponse(identity2)); + A.CallTo(() => fakeMediator.Send(A.That.Matches(q => q.Address == identity2.Address.Value), A._)) + .Returns(new GetIdentity.Response(identity2)); // Act await worker.StartProcessing(CancellationToken.None); @@ -72,13 +72,13 @@ public async Task Sends_push_notification_to_each_deleted_identity() var identity1 = CreateIdentity(); var identity2 = CreateIdentity(); SetupRipeDeletionProcessesCommand(fakeMediator, identity1.Address, identity2.Address); - A.CallTo(() => fakeMediator.Send(A._, A._)).Returns(new ListRelationshipsOfIdentityResponse([])); + A.CallTo(() => fakeMediator.Send(A._, A._)).Returns(new ListRelationshipsOfIdentity.Response([])); - A.CallTo(() => fakeMediator.Send(A.That.Matches(q => q.Address == identity1.Address.Value), A._)) - .Returns(new GetIdentityResponse(identity1)); + A.CallTo(() => fakeMediator.Send(A.That.Matches(q => q.Address == identity1.Address.Value), A._)) + .Returns(new GetIdentity.Response(identity1)); - A.CallTo(() => fakeMediator.Send(A.That.Matches(q => q.Address == identity2.Address.Value), A._)) - .Returns(new GetIdentityResponse(identity2)); + A.CallTo(() => fakeMediator.Send(A.That.Matches(q => q.Address == identity2.Address.Value), A._)) + .Returns(new GetIdentity.Response(identity2)); var mockPushNotificationSender = A.Fake(); var worker = CreateWorker(fakeMediator, [], mockPushNotificationSender); @@ -99,8 +99,8 @@ public async Task Sends_push_notification_to_each_deleted_identity() private static void SetupRipeDeletionProcessesCommand(IMediator mediator, params IdentityAddress[] identityAddresses) { - var commandResponse = new TriggerRipeDeletionProcessesResponse(identityAddresses.ToDictionary(x => x.Value, _ => UnitResult.Success())); - A.CallTo(() => mediator.Send(A._, A._)).Returns(commandResponse); + var commandResponse = new TriggerRipeDeletionProcesses.Response(identityAddresses.ToDictionary(x => x.Value, _ => UnitResult.Success())); + A.CallTo(() => mediator.Send(A._, A._)).Returns(commandResponse); } private static ActualDeletionWorker CreateWorker(IMediator mediator, diff --git a/Applications/SseServer/src/SseServer/Controllers/SseController.cs b/Applications/SseServer/src/SseServer/Controllers/SseController.cs index a216d58730..f44435a929 100644 --- a/Applications/SseServer/src/SseServer/Controllers/SseController.cs +++ b/Applications/SseServer/src/SseServer/Controllers/SseController.cs @@ -1,4 +1,6 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; +using DeleteDeviceRegistration = Backbone.Modules.Devices.Module.Features.PushNotifications.DeleteDeviceRegistration; +using UpdateDeviceRegistration = Backbone.Modules.Devices.Module.Features.PushNotifications.UpdateDeviceRegistration; +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.Modules.Devices.Module.Features.PushNotifications.DeleteDeviceRegistration; using Backbone.Modules.Devices.Module.Features.PushNotifications.UpdateDeviceRegistration; using Backbone.SseServer.Versions; @@ -33,7 +35,7 @@ public async Task Subscribe(CancellationToken cancellationToken) await using (var scope = _scopeFactory.CreateAsyncScope()) { - await scope.ServiceProvider.GetRequiredService().Send(new UpdateDeviceRegistrationCommand + await scope.ServiceProvider.GetRequiredService().Send(new UpdateDeviceRegistration.Command { Handle = "sse-handle", // this is just some dummy value; the SSE connector doesn't use it AppId = "sse-client", // this is just some dummy value; the SSE connector doesn't use it @@ -78,7 +80,7 @@ await scope.ServiceProvider.GetRequiredService().Send(new UpdateDevic _eventQueue.Deregister(address); // we must NOT pass the cancellation token here, because otherwise the device registration would not be deleted in case the request was cancelled await using var scope = _scopeFactory.CreateAsyncScope(); - await scope.ServiceProvider.GetRequiredService().Send(new DeleteDeviceRegistrationCommand(), CancellationToken.None); + await scope.ServiceProvider.GetRequiredService().Send(new DeleteDeviceRegistration.Command(), CancellationToken.None); } } } diff --git a/Backbone.Tests.ArchUnit/CQRS.cs b/Backbone.Tests.ArchUnit/CQRS.cs index c5259e05f2..c4c6ba97a9 100644 --- a/Backbone.Tests.ArchUnit/CQRS.cs +++ b/Backbone.Tests.ArchUnit/CQRS.cs @@ -22,10 +22,11 @@ public class Cqrs .And().HaveNameEndingWith("Query"); [Fact] - public void ClassesInheritingFromIRequestShouldHaveNameEndingWithCommandOrQuery() + public void ClassesInheritingFromIRequestShouldBeNamedCommandOrQuery() { Classes().That().Are(NON_ABSTRACT_CLASSES_IMPLEMENTING_IREQUEST) - .Should().HaveNameMatching(".+(Command|Query)$").As("should have names ending with 'Command' or 'Query'") + .And().AreNot(Backbone.TEST_TYPES) + .Should().HaveNameMatching("^(Command|Query)$").As("should be named 'Command' or 'Query'") .Check(Backbone.ARCHITECTURE); } diff --git a/Backbone.Tests.ArchUnit/MessagesCleanArchitecture.cs b/Backbone.Tests.ArchUnit/MessagesCleanArchitecture.cs index e8c99677c4..ba88d017db 100644 --- a/Backbone.Tests.ArchUnit/MessagesCleanArchitecture.cs +++ b/Backbone.Tests.ArchUnit/MessagesCleanArchitecture.cs @@ -9,7 +9,7 @@ public class MessagesCleanArchitecture private static readonly IObjectProvider USE_CASE_TYPES = Classes().That() .ResideInNamespaceMatching("Backbone.Modules.Messages.Module.Features.*") - .And().HaveNameMatching(".+(Command|Query|Handler|Validator|Response)$") + .And().HaveNameMatching(".*(Command|Query|Handler|Validator|Response)$") .As("Messages use case types"); [Fact] diff --git a/BuildingBlocks/src/BuildingBlocks.API/Extensions/ServiceCollectionExtensions.cs b/BuildingBlocks/src/BuildingBlocks.API/Extensions/ServiceCollectionExtensions.cs index 3252b0fa00..e47a28149b 100644 --- a/BuildingBlocks/src/BuildingBlocks.API/Extensions/ServiceCollectionExtensions.cs +++ b/BuildingBlocks/src/BuildingBlocks.API/Extensions/ServiceCollectionExtensions.cs @@ -2,6 +2,7 @@ using Asp.Versioning.ApiExplorer; using Backbone.BuildingBlocks.API.AspNetCoreIdentityCustomizations; using Backbone.BuildingBlocks.API.Diagnostics; +using Backbone.BuildingBlocks.Application.Abstractions; using Backbone.BuildingBlocks.Infrastructure.EventBus; using Backbone.BuildingBlocks.Infrastructure.Persistence.Database; using Backbone.BuildingBlocks.Module; @@ -191,7 +192,7 @@ static string GetReadableName(Type type) { if (!type.IsGenericType) { - return type.Name + return (type.GetCustomAttribute()?.Name ?? type.Name) .Replace("DTO", string.Empty) .Replace("Command", "Request") .Replace("Query", "Request"); diff --git a/BuildingBlocks/src/BuildingBlocks.Application.Abstractions/JsonSchemaNameAttribute.cs b/BuildingBlocks/src/BuildingBlocks.Application.Abstractions/JsonSchemaNameAttribute.cs new file mode 100644 index 0000000000..d1e4ee393a --- /dev/null +++ b/BuildingBlocks/src/BuildingBlocks.Application.Abstractions/JsonSchemaNameAttribute.cs @@ -0,0 +1,7 @@ +namespace Backbone.BuildingBlocks.Application.Abstractions; + +[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)] +public sealed class JsonSchemaNameAttribute(string name) : Attribute +{ + public string Name { get; } = name; +} diff --git a/Modules/Announcements/src/Announcements.Module/ApplicationServiceCollectionExtensions.cs b/Modules/Announcements/src/Announcements.Module/ApplicationServiceCollectionExtensions.cs index 347927d08d..227acd2e1b 100644 --- a/Modules/Announcements/src/Announcements.Module/ApplicationServiceCollectionExtensions.cs +++ b/Modules/Announcements/src/Announcements.Module/ApplicationServiceCollectionExtensions.cs @@ -1,3 +1,4 @@ +using CreateAnnouncement = Backbone.Modules.Announcements.Module.Features.Announcements.CreateAnnouncement; using Backbone.BuildingBlocks.Application.MediatR; using Backbone.Modules.Announcements.Module.Features.Announcements.CreateAnnouncement; using FluentValidation; @@ -10,7 +11,7 @@ internal static class ApplicationServiceCollectionExtensions public static void AddApplication(this IServiceCollection services) { services.AddMediatR(c => c - .RegisterServicesFromAssemblyContaining() + .RegisterServicesFromAssemblyContaining() .AddOpenBehavior(typeof(LoggingBehavior<,>)) .AddOpenBehavior(typeof(RequestValidationBehavior<,>)) .AddOpenBehavior(typeof(QuotaEnforcerBehavior<,>)) diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/CreateAnnouncement/Command.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/CreateAnnouncement/Command.cs index 1912a032f4..dcb2a543a6 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/CreateAnnouncement/Command.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/CreateAnnouncement/Command.cs @@ -4,7 +4,8 @@ namespace Backbone.Modules.Announcements.Module.Features.Announcements.CreateAnnouncement; -public class CreateAnnouncementCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateAnnouncementCommand")] +public class Command : IRequest { public required AnnouncementSeverity Severity { get; set; } public required bool IsSilent { get; set; } diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/CreateAnnouncement/Handler.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/CreateAnnouncement/Handler.cs index 542d26a418..d00c916061 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/CreateAnnouncement/Handler.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/CreateAnnouncement/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Announcements.Module.Features.Announcements.CreateAnnouncement; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IAnnouncementsRepository _announcementsRepository; @@ -15,7 +15,7 @@ public Handler(IAnnouncementsRepository announcementsRepository) _announcementsRepository = announcementsRepository; } - public async Task Handle(CreateAnnouncementCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var recipients = request.Recipients.Select(r => new AnnouncementRecipient(IdentityAddress.Parse(r))); var texts = request.Texts.Select(t => new AnnouncementText(AnnouncementLanguage.Parse(t.Language), t.Title, t.Body)).ToList(); diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/CreateAnnouncement/Validator.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/CreateAnnouncement/Validator.cs index ab1bb050b3..b889296e75 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/CreateAnnouncement/Validator.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/CreateAnnouncement/Validator.cs @@ -9,7 +9,7 @@ namespace Backbone.Modules.Announcements.Module.Features.Announcements.CreateAnnouncement; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { @@ -28,7 +28,7 @@ public Validator() .WithErrorCode(GenericApplicationErrors.Validation.InvalidPropertyValue().Code); RuleForEach(x => x.Texts).SetValidator(new CreateAnnouncementCommandTextValidator()); - RuleForEach(x => x.Recipients).ValidId(); + RuleForEach(x => x.Recipients).ValidId(); RuleForEach(x => x.Actions).SetValidator(new CreateAnnouncementCommandActionValidator()); } } diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementById/Command.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementById/Command.cs index 995547d6b2..d041405974 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementById/Command.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementById/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementById; -public class DeleteAnnouncementByIdCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteAnnouncementByIdCommand")] +public class Command : IRequest { public required string Id { get; init; } } diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementById/Handler.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementById/Handler.cs index b3693559eb..ec685cd51e 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementById/Handler.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementById/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementById; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IAnnouncementsRepository _announcementsRepository; private readonly ILogger _logger; @@ -17,7 +17,7 @@ public Handler(IAnnouncementsRepository announcementsRepository, ILogger +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.Id).ValidId(); + RuleFor(x => x.Id).ValidId(); } } diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementRecipients/Command.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementRecipients/Command.cs index ac801a2352..f547531acf 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementRecipients/Command.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementRecipients/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementRecipients; -public record DeleteAnnouncementRecipientsCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteAnnouncementRecipientsCommand")] +public record Command : IRequest { public required string IdentityAddress { get; init; } } diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementRecipients/Handler.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementRecipients/Handler.cs index 245eac015c..041e540627 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementRecipients/Handler.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementRecipients/Handler.cs @@ -4,7 +4,7 @@ namespace Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementRecipients; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IAnnouncementsRepository _announcementsRepository; @@ -13,7 +13,7 @@ public Handler(IAnnouncementsRepository announcementsRepository) _announcementsRepository = announcementsRepository; } - public async Task Handle(DeleteAnnouncementRecipientsCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var parsedIdentityAddress = IdentityAddress.Parse(request.IdentityAddress); diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementRecipients/Validator.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementRecipients/Validator.cs index 1355183edc..2581a9041f 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementRecipients/Validator.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementRecipients/Validator.cs @@ -4,11 +4,11 @@ namespace Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementRecipients; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { RuleFor(c => c.IdentityAddress) - .ValidId(); + .ValidId(); } } diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ExecuteHousekeeping/Command.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ExecuteHousekeeping/Command.cs index eba7a4b9f0..6d98859207 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ExecuteHousekeeping/Command.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ExecuteHousekeeping/Command.cs @@ -2,4 +2,5 @@ namespace Backbone.Modules.Announcements.Module.Features.Announcements.ExecuteHousekeeping; -public class ExecuteHousekeepingCommand : IRequest; +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ExecuteHousekeepingCommand")] +public class Command : IRequest; diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ExecuteHousekeeping/Handler.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ExecuteHousekeeping/Handler.cs index 09d2143ff6..a76076d2dc 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ExecuteHousekeeping/Handler.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ExecuteHousekeeping/Handler.cs @@ -5,7 +5,7 @@ namespace Backbone.Modules.Announcements.Module.Features.Announcements.ExecuteHousekeeping; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IAnnouncementsRepository _announcementsRepository; @@ -14,7 +14,7 @@ public Handler(IAnnouncementsRepository announcementsRepository) _announcementsRepository = announcementsRepository; } - public async Task Handle(ExecuteHousekeepingCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { await DeleteAnnouncements(cancellationToken); } diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/GetAnnouncementById/Handler.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/GetAnnouncementById/Handler.cs index 3ea38ff0d6..b9ebf032c5 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/GetAnnouncementById/Handler.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/GetAnnouncementById/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Announcements.Module.Features.Announcements.GetAnnouncementById; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IAnnouncementsRepository _announcementsRepository; @@ -15,7 +15,7 @@ public Handler(IAnnouncementsRepository announcementsRepository) _announcementsRepository = announcementsRepository; } - public async Task Handle(GetAnnouncementByIdQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var announcementId = AnnouncementId.Parse(request.Id); diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/GetAnnouncementById/Query.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/GetAnnouncementById/Query.cs index acf3a40feb..5348b847d4 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/GetAnnouncementById/Query.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/GetAnnouncementById/Query.cs @@ -3,7 +3,8 @@ namespace Backbone.Modules.Announcements.Module.Features.Announcements.GetAnnouncementById; -public class GetAnnouncementByIdQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetAnnouncementByIdQuery")] +public class Query : IRequest { public required string Id { get; init; } } diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/GetAnnouncementById/Validator.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/GetAnnouncementById/Validator.cs index e25b3c5c32..884ddd124c 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/GetAnnouncementById/Validator.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/GetAnnouncementById/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Announcements.Module.Features.Announcements.GetAnnouncementById; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.Id).ValidId(); + RuleFor(x => x.Id).ValidId(); } } diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Handler.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Handler.cs index 77ada000e6..39ed3f537b 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Handler.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Handler.cs @@ -3,7 +3,7 @@ namespace Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncements; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IAnnouncementsRepository _announcementsRepository; @@ -12,10 +12,10 @@ public Handler(IAnnouncementsRepository announcementsRepository) _announcementsRepository = announcementsRepository; } - public async Task Handle(ListAnnouncementsQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var announcements = await _announcementsRepository.List(cancellationToken); - return new ListAnnouncementsResponse(announcements); + return new Response(announcements); } } diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Query.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Query.cs index 50482be67e..03bfba8490 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Query.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Query.cs @@ -2,4 +2,5 @@ namespace Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncements; -public class ListAnnouncementsQuery : IRequest; +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListAnnouncementsQuery")] +public class Query : IRequest; diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Response.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Response.cs index 133bcc8705..1d85b5382e 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Response.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Response.cs @@ -4,9 +4,10 @@ namespace Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncements; -public class ListAnnouncementsResponse : CollectionResponseBase +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListAnnouncementsResponse")] +public class Response : CollectionResponseBase { - public ListAnnouncementsResponse(IEnumerable items) : base(items.Select(a => new AnnouncementDTO(a))) + public Response(IEnumerable items) : base(items.Select(a => new AnnouncementDTO(a))) { } } diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Endpoint.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Endpoint.cs index a953e0b588..50b060c575 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Endpoint.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Endpoint.cs @@ -13,7 +13,7 @@ internal static class Endpoint public static RouteGroupBuilder MapListAnnouncementsInLanguageEndpoint(this RouteGroupBuilder group) { group.MapGet("", Handle) - .Produces>(StatusCodes.Status200OK) + .Produces>(StatusCodes.Status200OK) .Produces(StatusCodes.Status400BadRequest); return group; @@ -21,7 +21,7 @@ public static RouteGroupBuilder MapListAnnouncementsInLanguageEndpoint(this Rout private static async Task Handle([FromQuery] string language, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new ListAnnouncementsForActiveIdentityInLanguageQuery { Language = language }, cancellationToken); + var response = await mediator.Send(new Query { Language = language }, cancellationToken); return EnvelopeHttpResults.Ok(response); } } diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Handler.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Handler.cs index be8ccbd144..e7f7990462 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Handler.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncementsInLanguage; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IAnnouncementsRepository _announcementsRepository; private readonly IdentityAddress _activeIdentity; @@ -17,12 +17,12 @@ public Handler(IAnnouncementsRepository announcementsRepository, IUserContext us _activeIdentity = userContext.GetAddress(); } - public async Task Handle(ListAnnouncementsForActiveIdentityInLanguageQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var announcements = await _announcementsRepository.List(Announcement.IsForRecipient(_activeIdentity), cancellationToken); var expectedLanguage = AnnouncementLanguage.Parse(request.Language); - return new ListAnnouncementsInLanguageResponse(announcements, expectedLanguage); + return new Response(announcements, expectedLanguage); } } diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Query.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Query.cs index 03e2e540c9..07deab05fc 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Query.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Query.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncementsInLanguage; -public class ListAnnouncementsForActiveIdentityInLanguageQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListAnnouncementsForActiveIdentityInLanguageQuery")] +public class Query : IRequest { public required string Language { get; init; } } diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Response.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Response.cs index edf886c1e3..4abfd8b0b5 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Response.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Response.cs @@ -4,9 +4,10 @@ namespace Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncementsInLanguage; -public class ListAnnouncementsInLanguageResponse : CollectionResponseBase +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListAnnouncementsInLanguageResponse")] +public class Response : CollectionResponseBase { - public ListAnnouncementsInLanguageResponse(IEnumerable items, AnnouncementLanguage language) : base(items.Select(a => new SingleLanguageAnnouncementDTO(a, language))) + public Response(IEnumerable items, AnnouncementLanguage language) : base(items.Select(a => new SingleLanguageAnnouncementDTO(a, language))) { } } diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Validator.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Validator.cs index c952b2643f..c3c467b62d 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Validator.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Validator.cs @@ -3,7 +3,7 @@ namespace Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncementsInLanguage; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { diff --git a/Modules/Announcements/src/Announcements.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs b/Modules/Announcements/src/Announcements.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs index 4ffec0c4e1..3fd2bcbba3 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs @@ -1,6 +1,6 @@ +using DeleteAnnouncementRecipients = Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementRecipients; using Backbone.BuildingBlocks.Application.Identities; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementRecipients; using MediatR; namespace Backbone.Modules.Announcements.Module.Features.Identities.DeleteIdentity; @@ -18,7 +18,7 @@ public IdentityDeleter(IMediator mediator, IDeletionProcessLogger deletionProces public async Task Delete(IdentityAddress identityAddress) { - await _mediator.Send(new DeleteAnnouncementRecipientsCommand { IdentityAddress = identityAddress }); + await _mediator.Send(new DeleteAnnouncementRecipients.Command { IdentityAddress = identityAddress }); await _deletionProcessLogger.LogDeletion(identityAddress, "AnnouncementRecipients"); } } diff --git a/Modules/Announcements/test/Announcements.Module.Tests/Tests/Announcements/Commands/AnonymizeRecipient/HandlerTests.cs b/Modules/Announcements/test/Announcements.Module.Tests/Tests/Announcements/Commands/AnonymizeRecipient/HandlerTests.cs index 9ed96cd831..d79b23aec2 100644 --- a/Modules/Announcements/test/Announcements.Module.Tests/Tests/Announcements/Commands/AnonymizeRecipient/HandlerTests.cs +++ b/Modules/Announcements/test/Announcements.Module.Tests/Tests/Announcements/Commands/AnonymizeRecipient/HandlerTests.cs @@ -1,3 +1,4 @@ +using DeleteAnnouncementRecipients = Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementRecipients; using System.Linq.Expressions; using Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementRecipients; using Backbone.Modules.Announcements.Abstractions; @@ -15,7 +16,7 @@ public async Task DeleteRecipientForIdentityCommand_AnonymizesRecipientsSuccessf var mockRepository = A.Fake(); var handler = new Handler(mockRepository); - var command = new DeleteAnnouncementRecipientsCommand { IdentityAddress = CreateRandomIdentityAddress().Value }; + var command = new DeleteAnnouncementRecipients.Command { IdentityAddress = CreateRandomIdentityAddress().Value }; // Act await handler.Handle(command, CancellationToken.None); diff --git a/Modules/Announcements/test/Announcements.Module.Tests/Tests/Announcements/Commands/CreateAnnouncement/ValidatorTests.cs b/Modules/Announcements/test/Announcements.Module.Tests/Tests/Announcements/Commands/CreateAnnouncement/ValidatorTests.cs index 436e79f021..cfe5ab406d 100644 --- a/Modules/Announcements/test/Announcements.Module.Tests/Tests/Announcements/Commands/CreateAnnouncement/ValidatorTests.cs +++ b/Modules/Announcements/test/Announcements.Module.Tests/Tests/Announcements/Commands/CreateAnnouncement/ValidatorTests.cs @@ -1,3 +1,4 @@ +using CreateAnnouncementSlice = Backbone.Modules.Announcements.Module.Features.Announcements.CreateAnnouncement; using Backbone.Modules.Announcements.Module.Features.Announcements.CreateAnnouncement; using Backbone.Modules.Announcements.Domain.Entities; using FluentValidation.TestHelper; @@ -126,11 +127,11 @@ public void Expects_only_valid_characters_for_action_display_names(string displa validationResult.ShouldHaveValidationErrorFor("Actions[0].DisplayName[0]").WithErrorMessage("A display name must not contain line breaks."); } - private static CreateAnnouncementCommand CreateCommand(List? languages = null, string title = "Test Title", string? body = "Test Body", CreateAnnouncementCommandAction? action = null) + private static CreateAnnouncementSlice.Command CreateCommand(List? languages = null, string title = "Test Title", string? body = "Test Body", CreateAnnouncementCommandAction? action = null) { languages ??= ["en", "de"]; - var command = new CreateAnnouncementCommand + var command = new CreateAnnouncementSlice.Command { ExpiresAt = null, Severity = AnnouncementSeverity.Low, diff --git a/Modules/Announcements/test/Announcements.Module.Tests/Tests/Announcements/IdentityDeleterTests.cs b/Modules/Announcements/test/Announcements.Module.Tests/Tests/Announcements/IdentityDeleterTests.cs index 1f5d34da94..f3cca5d7cc 100644 --- a/Modules/Announcements/test/Announcements.Module.Tests/Tests/Announcements/IdentityDeleterTests.cs +++ b/Modules/Announcements/test/Announcements.Module.Tests/Tests/Announcements/IdentityDeleterTests.cs @@ -1,6 +1,6 @@ +using DeleteAnnouncementRecipients = Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementRecipients; using Backbone.BuildingBlocks.Application.Identities; using Backbone.Modules.Announcements.Module.Features.Identities.DeleteIdentity; -using Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementRecipients; using FakeItEasy; using MediatR; @@ -21,7 +21,7 @@ public async Task Deleter_calls_correct_command() await deleter.Delete(identityAddress); // Assert - A.CallTo(() => mockMediator.Send(A + A.CallTo(() => mockMediator.Send(A .That .Matches(command => command.IdentityAddress == identityAddress), A._)) .MustHaveHappened(); diff --git a/Modules/Challenges/src/Challenges.Module/ApplicationServiceCollectionExtensions.cs b/Modules/Challenges/src/Challenges.Module/ApplicationServiceCollectionExtensions.cs index 42fd556d36..95b3107597 100644 --- a/Modules/Challenges/src/Challenges.Module/ApplicationServiceCollectionExtensions.cs +++ b/Modules/Challenges/src/Challenges.Module/ApplicationServiceCollectionExtensions.cs @@ -1,5 +1,5 @@ +using CreateChallenge = Backbone.Modules.Challenges.Module.Features.Challenges.CreateChallenge; using Backbone.BuildingBlocks.Application.MediatR; -using Backbone.Modules.Challenges.Module.Features.Challenges.CreateChallenge; using FluentValidation; using Microsoft.Extensions.DependencyInjection; @@ -10,11 +10,11 @@ internal static class ApplicationServiceCollectionExtensions public static void AddApplication(this IServiceCollection services) { services.AddMediatR(c => c - .RegisterServicesFromAssemblyContaining() + .RegisterServicesFromAssemblyContaining() .AddOpenBehavior(typeof(LoggingBehavior<,>)) .AddOpenBehavior(typeof(RequestValidationBehavior<,>)) .AddOpenBehavior(typeof(QuotaEnforcerBehavior<,>)) ); - services.AddValidatorsFromAssembly(typeof(CreateChallengeCommandValidator).Assembly); + services.AddValidatorsFromAssembly(typeof(CreateChallenge.Validator).Assembly); } } diff --git a/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Command.cs b/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Command.cs index d07ce6dfeb..1080249530 100644 --- a/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Command.cs +++ b/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Command.cs @@ -3,4 +3,5 @@ namespace Backbone.Modules.Challenges.Module.Features.Challenges.CreateChallenge; -public class CreateChallengeCommand : IRequest; +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateChallengeCommand")] +public class Command : IRequest; diff --git a/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Endpoint.cs b/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Endpoint.cs index d8a8e43ccf..faa8e560f8 100644 --- a/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Endpoint.cs +++ b/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Endpoint.cs @@ -22,7 +22,7 @@ public static RouteGroupBuilder MapCreateChallengeEndpoint(this RouteGroupBuilde private static async Task Handle(HttpContext context, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new CreateChallengeCommand(), cancellationToken); + var response = await mediator.Send(new Command(), cancellationToken); return EnvelopeHttpResults.CreatedAtRoute(GetChallengeById.Endpoint.ROUTE_NAME, new { v = context.Request.RouteValues["v"], id = response.Id }, response); } } diff --git a/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Handler.cs b/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Handler.cs index 5ceeb3f2d3..267d701262 100644 --- a/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Handler.cs +++ b/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Challenges.Module.Features.Challenges.CreateChallenge; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IChallengesRepository _challengesRepository; private readonly IUserContext _userContext; @@ -17,7 +17,7 @@ public Handler(IChallengesRepository challengesRepository, IUserContext userCont _userContext = userContext; } - public async Task Handle(CreateChallengeCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var challenge = new Challenge(_userContext.GetAddressOrNull(), _userContext.GetDeviceIdOrNull()); diff --git a/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Validator.cs b/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Validator.cs index d48ffd01be..65b394c3cd 100644 --- a/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Validator.cs +++ b/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Validator.cs @@ -2,4 +2,4 @@ namespace Backbone.Modules.Challenges.Module.Features.Challenges.CreateChallenge; -public class CreateChallengeCommandValidator : AbstractValidator; +public class Validator : AbstractValidator; diff --git a/Modules/Challenges/src/Challenges.Module/Features/Challenges/DeleteChallengesOfIdentity/Command.cs b/Modules/Challenges/src/Challenges.Module/Features/Challenges/DeleteChallengesOfIdentity/Command.cs index 295a8e00dd..893422a376 100644 --- a/Modules/Challenges/src/Challenges.Module/Features/Challenges/DeleteChallengesOfIdentity/Command.cs +++ b/Modules/Challenges/src/Challenges.Module/Features/Challenges/DeleteChallengesOfIdentity/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Challenges.Module.Features.Challenges.DeleteChallengesOfIdentity; -public class DeleteChallengesOfIdentityCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteChallengesOfIdentityCommand")] +public class Command : IRequest { public required string IdentityAddress { get; init; } } diff --git a/Modules/Challenges/src/Challenges.Module/Features/Challenges/DeleteChallengesOfIdentity/Handler.cs b/Modules/Challenges/src/Challenges.Module/Features/Challenges/DeleteChallengesOfIdentity/Handler.cs index aedfcfb63c..c76766d3c8 100644 --- a/Modules/Challenges/src/Challenges.Module/Features/Challenges/DeleteChallengesOfIdentity/Handler.cs +++ b/Modules/Challenges/src/Challenges.Module/Features/Challenges/DeleteChallengesOfIdentity/Handler.cs @@ -4,7 +4,7 @@ namespace Backbone.Modules.Challenges.Module.Features.Challenges.DeleteChallengesOfIdentity; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IChallengesRepository _challengesRepository; @@ -13,7 +13,7 @@ public Handler(IChallengesRepository challengesRepository) _challengesRepository = challengesRepository; } - public async Task Handle(DeleteChallengesOfIdentityCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { await _challengesRepository.Delete(Challenge.WasCreatedBy(request.IdentityAddress), cancellationToken); } diff --git a/Modules/Challenges/src/Challenges.Module/Features/Challenges/DeleteChallengesOfIdentity/Validator.cs b/Modules/Challenges/src/Challenges.Module/Features/Challenges/DeleteChallengesOfIdentity/Validator.cs index fc99f62ed4..1cd2a569e0 100644 --- a/Modules/Challenges/src/Challenges.Module/Features/Challenges/DeleteChallengesOfIdentity/Validator.cs +++ b/Modules/Challenges/src/Challenges.Module/Features/Challenges/DeleteChallengesOfIdentity/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Challenges.Module.Features.Challenges.DeleteChallengesOfIdentity; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.IdentityAddress).ValidId(); + RuleFor(x => x.IdentityAddress).ValidId(); } } diff --git a/Modules/Challenges/src/Challenges.Module/Features/Challenges/ExecuteHousekeeping/Command.cs b/Modules/Challenges/src/Challenges.Module/Features/Challenges/ExecuteHousekeeping/Command.cs index aeccc04062..ef2f8ec372 100644 --- a/Modules/Challenges/src/Challenges.Module/Features/Challenges/ExecuteHousekeeping/Command.cs +++ b/Modules/Challenges/src/Challenges.Module/Features/Challenges/ExecuteHousekeeping/Command.cs @@ -2,4 +2,5 @@ namespace Backbone.Modules.Challenges.Module.Features.Challenges.ExecuteHousekeeping; -public class ExecuteHousekeepingCommand : IRequest; +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ExecuteHousekeepingCommand")] +public class Command : IRequest; diff --git a/Modules/Challenges/src/Challenges.Module/Features/Challenges/ExecuteHousekeeping/Handler.cs b/Modules/Challenges/src/Challenges.Module/Features/Challenges/ExecuteHousekeeping/Handler.cs index ac5826da58..ffcefecd55 100644 --- a/Modules/Challenges/src/Challenges.Module/Features/Challenges/ExecuteHousekeeping/Handler.cs +++ b/Modules/Challenges/src/Challenges.Module/Features/Challenges/ExecuteHousekeeping/Handler.cs @@ -5,7 +5,7 @@ namespace Backbone.Modules.Challenges.Module.Features.Challenges.ExecuteHousekeeping; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IChallengesRepository _challengesRepository; @@ -14,7 +14,7 @@ public Handler(IChallengesRepository challengesRepository) _challengesRepository = challengesRepository; } - public async Task Handle(ExecuteHousekeepingCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { await DeleteChallenges(cancellationToken); } diff --git a/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Endpoint.cs b/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Endpoint.cs index e1fd0cbba5..9c50d555fa 100644 --- a/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Endpoint.cs +++ b/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Endpoint.cs @@ -26,7 +26,7 @@ public static RouteGroupBuilder MapGetChallengeByIdEndpoint(this RouteGroupBuild private static async Task Handle(string id, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new GetChallengeByIdQuery { Id = id }, cancellationToken); + var response = await mediator.Send(new Query { Id = id }, cancellationToken); return EnvelopeHttpResults.Ok(response); } } diff --git a/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Handler.cs b/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Handler.cs index 229b4915ff..e30927a63a 100644 --- a/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Handler.cs +++ b/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Challenges.Module.Features.Challenges.GetChallengeById; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IChallengesRepository _challengesRepository; @@ -15,7 +15,7 @@ public Handler(IChallengesRepository challengesRepository) _challengesRepository = challengesRepository; } - public async Task Handle(GetChallengeByIdQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var challenge = await _challengesRepository.Get(ChallengeId.Parse(request.Id), cancellationToken); diff --git a/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Query.cs b/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Query.cs index aaf2ff125b..1d70e11575 100644 --- a/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Query.cs +++ b/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Query.cs @@ -3,7 +3,8 @@ namespace Backbone.Modules.Challenges.Module.Features.Challenges.GetChallengeById; -public class GetChallengeByIdQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetChallengeByIdQuery")] +public class Query : IRequest { public required string Id { get; init; } } diff --git a/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Validator.cs b/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Validator.cs index fb09833b26..5b971aefd4 100644 --- a/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Validator.cs +++ b/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Challenges.Module.Features.Challenges.GetChallengeById; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.Id).ValidId(); + RuleFor(x => x.Id).ValidId(); } } diff --git a/Modules/Challenges/src/Challenges.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs b/Modules/Challenges/src/Challenges.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs index 8dd079fd34..3b7d3084d1 100644 --- a/Modules/Challenges/src/Challenges.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs +++ b/Modules/Challenges/src/Challenges.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs @@ -1,6 +1,6 @@ +using DeleteChallengesOfIdentity = Backbone.Modules.Challenges.Module.Features.Challenges.DeleteChallengesOfIdentity; using Backbone.BuildingBlocks.Application.Identities; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Challenges.Module.Features.Challenges.DeleteChallengesOfIdentity; using MediatR; namespace Backbone.Modules.Challenges.Module.Features.Identities.DeleteIdentity; @@ -18,7 +18,7 @@ public IdentityDeleter(IMediator mediator, IDeletionProcessLogger deletionProces public async Task Delete(IdentityAddress identityAddress) { - await _mediator.Send(new DeleteChallengesOfIdentityCommand { IdentityAddress = identityAddress }); + await _mediator.Send(new DeleteChallengesOfIdentity.Command { IdentityAddress = identityAddress }); await _deletionProcessLogger.LogDeletion(identityAddress, "Challenges"); } } diff --git a/Modules/Challenges/test/Challenges.Module.Tests/Tests/Challenges/Commands/DeleteChallengesOfIdentity/ValidatorTests.cs b/Modules/Challenges/test/Challenges.Module.Tests/Tests/Challenges/Commands/DeleteChallengesOfIdentity/ValidatorTests.cs index b510b9e76b..2d99963165 100644 --- a/Modules/Challenges/test/Challenges.Module.Tests/Tests/Challenges/Commands/DeleteChallengesOfIdentity/ValidatorTests.cs +++ b/Modules/Challenges/test/Challenges.Module.Tests/Tests/Challenges/Commands/DeleteChallengesOfIdentity/ValidatorTests.cs @@ -1,3 +1,4 @@ +using DeleteChallengesOfIdentitySlice = Backbone.Modules.Challenges.Module.Features.Challenges.DeleteChallengesOfIdentity; using Backbone.Modules.Challenges.Module.Features.Challenges.DeleteChallengesOfIdentity; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; @@ -13,7 +14,7 @@ public void Happy_path() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new DeleteChallengesOfIdentityCommand { IdentityAddress = CreateRandomIdentityAddress() }); + var validationResult = validator.TestValidate(new DeleteChallengesOfIdentitySlice.Command { IdentityAddress = CreateRandomIdentityAddress() }); // Assert validationResult.ShouldNotHaveAnyValidationErrors(); @@ -26,9 +27,9 @@ public void Fails_when_identity_address_is_invalid() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new DeleteChallengesOfIdentityCommand { IdentityAddress = "invalid-identity-address" }); + var validationResult = validator.TestValidate(new DeleteChallengesOfIdentitySlice.Command { IdentityAddress = "invalid-identity-address" }); // Assert - validationResult.ShouldHaveValidationErrorForId(nameof(DeleteChallengesOfIdentityCommand.IdentityAddress)); + validationResult.ShouldHaveValidationErrorForId(nameof(DeleteChallengesOfIdentitySlice.Command.IdentityAddress)); } } diff --git a/Modules/Challenges/test/Challenges.Module.Tests/Tests/Challenges/Queries/GetChallengeById/ValidatorTests.cs b/Modules/Challenges/test/Challenges.Module.Tests/Tests/Challenges/Queries/GetChallengeById/ValidatorTests.cs index 7199224a46..31d638e688 100644 --- a/Modules/Challenges/test/Challenges.Module.Tests/Tests/Challenges/Queries/GetChallengeById/ValidatorTests.cs +++ b/Modules/Challenges/test/Challenges.Module.Tests/Tests/Challenges/Queries/GetChallengeById/ValidatorTests.cs @@ -1,3 +1,4 @@ +using GetChallengeByIdSlice = Backbone.Modules.Challenges.Module.Features.Challenges.GetChallengeById; using Backbone.Modules.Challenges.Module.Features.Challenges.GetChallengeById; using Backbone.Modules.Challenges.Domain.Ids; using Backbone.UnitTestTools.FluentValidation; @@ -15,7 +16,7 @@ public void Happy_path() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new GetChallengeByIdQuery { Id = ChallengeId.New() }); + var validationResult = validator.TestValidate(new GetChallengeByIdSlice.Query { Id = ChallengeId.New() }); // Assert validationResult.ShouldNotHaveAnyValidationErrors(); @@ -28,9 +29,9 @@ public void Fails_when_challenge_id_is_invalid() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new GetChallengeByIdQuery { Id = "some-invalid-challenge-id" }); + var validationResult = validator.TestValidate(new GetChallengeByIdSlice.Query { Id = "some-invalid-challenge-id" }); // Assert - validationResult.ShouldHaveValidationErrorForId(nameof(GetChallengeByIdQuery.Id)); + validationResult.ShouldHaveValidationErrorForId(nameof(GetChallengeByIdSlice.Query.Id)); } } diff --git a/Modules/Challenges/test/Challenges.Module.Tests/Tests/Identities/IdentityDeleterTests.cs b/Modules/Challenges/test/Challenges.Module.Tests/Tests/Identities/IdentityDeleterTests.cs index 124b523791..8ca20c3d3f 100644 --- a/Modules/Challenges/test/Challenges.Module.Tests/Tests/Identities/IdentityDeleterTests.cs +++ b/Modules/Challenges/test/Challenges.Module.Tests/Tests/Identities/IdentityDeleterTests.cs @@ -1,5 +1,5 @@ +using DeleteChallengesOfIdentity = Backbone.Modules.Challenges.Module.Features.Challenges.DeleteChallengesOfIdentity; using Backbone.BuildingBlocks.Application.Identities; -using Backbone.Modules.Challenges.Module.Features.Challenges.DeleteChallengesOfIdentity; using Backbone.Modules.Challenges.Module.Features.Identities.DeleteIdentity; using FakeItEasy; using MediatR; @@ -21,7 +21,7 @@ public async Task Deleter_calls_correct_command() await deleter.Delete(identityAddress); // Assert - A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); + A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); } [Fact] diff --git a/Modules/Devices/src/Devices.Module/ApplicationServiceCollectionExtensions.cs b/Modules/Devices/src/Devices.Module/ApplicationServiceCollectionExtensions.cs index e172efa201..a1e6baa4fe 100644 --- a/Modules/Devices/src/Devices.Module/ApplicationServiceCollectionExtensions.cs +++ b/Modules/Devices/src/Devices.Module/ApplicationServiceCollectionExtensions.cs @@ -1,9 +1,9 @@ +using RegisterDevice = Backbone.Modules.Devices.Module.Features.Devices.RegisterDevice; using System.Reflection; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Application.MediatR; using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.Modules.Devices.Module.Features.Devices.ListDevices; -using Backbone.Modules.Devices.Module.Features.Devices.RegisterDevice; using Backbone.Modules.Devices.Module.Features.Devices.Shared; using FluentValidation; using Microsoft.Extensions.Configuration; @@ -20,12 +20,12 @@ public static void AddApplication(this IServiceCollection services, IConfigurati applicationConfiguration.GetSection("IdentityDeletion").Bind(IdentityDeletionConfiguration.Instance); services.AddMediatR(c => c - .RegisterServicesFromAssemblyContaining() + .RegisterServicesFromAssemblyContaining() .AddOpenBehavior(typeof(LoggingBehavior<,>)) .AddOpenBehavior(typeof(RequestValidationBehavior<,>)) .AddOpenBehavior(typeof(QuotaEnforcerBehavior<,>)) ); - services.AddValidatorsFromAssembly(typeof(Validator).Assembly); + services.AddValidatorsFromAssembly(typeof(ApplicationConfiguration).Assembly); services.AddScoped(); services.AddScoped(); diff --git a/Modules/Devices/src/Devices.Module/DevicesEventBusExtensions.cs b/Modules/Devices/src/Devices.Module/DevicesEventBusExtensions.cs index 00f582e863..a38f54c2df 100644 --- a/Modules/Devices/src/Devices.Module/DevicesEventBusExtensions.cs +++ b/Modules/Devices/src/Devices.Module/DevicesEventBusExtensions.cs @@ -1,12 +1,12 @@ +using AnnouncementCreated = Backbone.Modules.Devices.Module.Features.DomainEvents.AnnouncementCreated; +using BackupDeviceUsed = Backbone.Modules.Devices.Module.Features.DomainEvents.BackupDeviceUsed; +using DatawalletModificationCreated = Backbone.Modules.Devices.Module.Features.DomainEvents.DatawalletModificationCreated; +using ExternalEventCreated = Backbone.Modules.Devices.Module.Features.DomainEvents.ExternalEventCreated; +using IdentityDeletionProcessStarted = Backbone.Modules.Devices.Module.Features.DomainEvents.IdentityDeletionProcessStarted; +using TokenLocked = Backbone.Modules.Devices.Module.Features.DomainEvents.TokenLocked; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.Modules.Announcements.Contracts.DomainEvents; using Backbone.Modules.Devices.Contracts.DomainEvents; -using Backbone.Modules.Devices.Module.Features.DomainEvents.AnnouncementCreated; -using Backbone.Modules.Devices.Module.Features.DomainEvents.BackupDeviceUsed; -using Backbone.Modules.Devices.Module.Features.DomainEvents.DatawalletModificationCreated; -using Backbone.Modules.Devices.Module.Features.DomainEvents.ExternalEventCreated; -using Backbone.Modules.Devices.Module.Features.DomainEvents.IdentityDeletionProcessStarted; -using Backbone.Modules.Devices.Module.Features.DomainEvents.TokenLocked; using Backbone.Modules.Synchronization.Contracts.DomainEvents; using Backbone.Modules.Tokens.Contracts.DomainEvents; @@ -29,27 +29,27 @@ await Task.WhenAll(new List private async Task SubscribeToAnnouncementsEvents() { - await eventBus.Subscribe(); + await eventBus.Subscribe(); } private async Task SubscribeToDevicesEvents() { - await eventBus.Subscribe(); + await eventBus.Subscribe(); } private async Task SubscribeToSynchronizationEvents() { await Task.WhenAll(new List { - eventBus.Subscribe(), - eventBus.Subscribe(), - eventBus.Subscribe() + eventBus.Subscribe(), + eventBus.Subscribe(), + eventBus.Subscribe() }); } private async Task SubscribeToTokensEvents() { - await eventBus.Subscribe(); + await eventBus.Subscribe(); } } } diff --git a/Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Command.cs b/Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Command.cs index 2f49dcc0c6..6f3e9db0f8 100644 --- a/Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Devices.Module.Features.Clients.ChangeClientSecret; -public class ChangeClientSecretCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ChangeClientSecretCommand")] +public class Command : IRequest { public required string ClientId { get; set; } diff --git a/Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Handler.cs index 2b0bfcdd9b..e18c205a31 100644 --- a/Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Devices.Module.Features.Clients.ChangeClientSecret; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IOAuthClientsRepository _oAuthClientsRepository; @@ -15,7 +15,7 @@ public Handler(IOAuthClientsRepository oAuthClientsRepository) _oAuthClientsRepository = oAuthClientsRepository; } - public async Task Handle(ChangeClientSecretCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var client = await _oAuthClientsRepository.Get(request.ClientId, cancellationToken, track: true) ?? throw new NotFoundException(nameof(OAuthClient)); @@ -23,6 +23,6 @@ public async Task Handle(ChangeClientSecretCommand r await _oAuthClientsRepository.ChangeClientSecret(client, clientSecret, cancellationToken); - return new ChangeClientSecretResponse(client, clientSecret); + return new Response(client, clientSecret); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Response.cs b/Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Response.cs index a7a6b82025..33c302b3ed 100644 --- a/Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Response.cs @@ -2,9 +2,10 @@ namespace Backbone.Modules.Devices.Module.Features.Clients.ChangeClientSecret; -public class ChangeClientSecretResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ChangeClientSecretResponse")] +public class Response { - public ChangeClientSecretResponse(OAuthClient client, string clientSecret) + public Response(OAuthClient client, string clientSecret) { ClientId = client.ClientId; DisplayName = client.DisplayName; diff --git a/Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Validator.cs index 00dc5b6622..008bf3f58a 100644 --- a/Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Validator.cs @@ -3,7 +3,7 @@ namespace Backbone.Modules.Devices.Module.Features.Clients.ChangeClientSecret; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { diff --git a/Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Command.cs b/Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Command.cs index 1c14175435..5788f9a73a 100644 --- a/Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Devices.Module.Features.Clients.CreateClient; -public class CreateClientCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateClientCommand")] +public class Command : IRequest { public string? ClientId { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Handler.cs index e8ebc1de7c..2d4e80df71 100644 --- a/Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Handler.cs @@ -9,7 +9,7 @@ namespace Backbone.Modules.Devices.Module.Features.Clients.CreateClient; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IOAuthClientsRepository _oAuthClientsRepository; private readonly ITiersRepository _tiersRepository; @@ -20,7 +20,7 @@ public Handler(IOAuthClientsRepository oAuthClientsRepository, ITiersRepository _tiersRepository = tiersRepository; } - public async Task Handle(CreateClientCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { await EnsureClientIdDoesNotExist(request, cancellationToken); @@ -33,10 +33,10 @@ public async Task Handle(CreateClientCommand request, Canc await _oAuthClientsRepository.Add(client, clientSecret, cancellationToken); - return new CreateClientResponse(client, clientSecret); + return new Response(client, clientSecret); } - private async Task EnsureClientIdDoesNotExist(CreateClientCommand request, CancellationToken cancellationToken) + private async Task EnsureClientIdDoesNotExist(Command request, CancellationToken cancellationToken) { if (!string.IsNullOrEmpty(request.ClientId)) { diff --git a/Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Response.cs b/Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Response.cs index 6092f6bad0..90024b5944 100644 --- a/Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Response.cs @@ -2,9 +2,10 @@ namespace Backbone.Modules.Devices.Module.Features.Clients.CreateClient; -public class CreateClientResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateClientResponse")] +public class Response { - public CreateClientResponse(OAuthClient client, string clientSecret) + public Response(OAuthClient client, string clientSecret) { ClientId = client.ClientId; DisplayName = client.DisplayName; diff --git a/Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Validator.cs index 4e9558d8b9..132b6ae0ee 100644 --- a/Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Validator.cs @@ -3,9 +3,9 @@ namespace Backbone.Modules.Devices.Module.Features.Clients.CreateClient; -public class CreateClientCommandValidator : AbstractValidator +public class Validator : AbstractValidator { - public CreateClientCommandValidator() + public Validator() { RuleFor(c => c.DefaultTier).DetailedNotEmpty(); } diff --git a/Modules/Devices/src/Devices.Module/Features/Clients/DeleteClient/Command.cs b/Modules/Devices/src/Devices.Module/Features/Clients/DeleteClient/Command.cs index 03cf2af17b..2f2df44fc6 100644 --- a/Modules/Devices/src/Devices.Module/Features/Clients/DeleteClient/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/DeleteClient/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Devices.Module.Features.Clients.DeleteClient; -public class DeleteClientCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteClientCommand")] +public class Command : IRequest { public required string ClientId { get; init; } } diff --git a/Modules/Devices/src/Devices.Module/Features/Clients/DeleteClient/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Clients/DeleteClient/Handler.cs index 6ae727f087..16cb86c84e 100644 --- a/Modules/Devices/src/Devices.Module/Features/Clients/DeleteClient/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/DeleteClient/Handler.cs @@ -4,7 +4,7 @@ namespace Backbone.Modules.Devices.Module.Features.Clients.DeleteClient; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IOAuthClientsRepository _oAuthClientsRepository; private readonly ILogger _logger; @@ -15,7 +15,7 @@ public Handler(IOAuthClientsRepository oAuthClientsRepository, ILogger _logger = logger; } - public async Task Handle(DeleteClientCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { _logger.LogTrace("Deleting client with id: '{clientId}'.", request.ClientId); diff --git a/Modules/Devices/src/Devices.Module/Features/Clients/DeleteClient/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Clients/DeleteClient/Validator.cs index 59643a910d..17b1146ad3 100644 --- a/Modules/Devices/src/Devices.Module/Features/Clients/DeleteClient/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/DeleteClient/Validator.cs @@ -3,9 +3,9 @@ namespace Backbone.Modules.Devices.Module.Features.Clients.DeleteClient; -public class DeleteClientCommandValidator : AbstractValidator +public class Validator : AbstractValidator { - public DeleteClientCommandValidator() + public Validator() { RuleFor(c => c.ClientId).DetailedNotEmpty(); } diff --git a/Modules/Devices/src/Devices.Module/Features/Clients/GetClient/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Clients/GetClient/Handler.cs index 3d0a253df5..c5e498e7cc 100644 --- a/Modules/Devices/src/Devices.Module/Features/Clients/GetClient/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/GetClient/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Devices.Module.Features.Clients.GetClient; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IOAuthClientsRepository _oAuthClientsRepository; private readonly IIdentitiesRepository _identitiesRepository; @@ -17,7 +17,7 @@ public Handler(IOAuthClientsRepository oAuthClientsRepository, IIdentitiesReposi _identitiesRepository = identitiesRepository; } - public async Task Handle(GetClientQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var client = await _oAuthClientsRepository.Get(request.Id, cancellationToken) ?? throw new NotFoundException(nameof(OAuthClient)); var numberOfIdentities = await _identitiesRepository.CountByClientId(client.ClientId, cancellationToken); diff --git a/Modules/Devices/src/Devices.Module/Features/Clients/GetClient/Query.cs b/Modules/Devices/src/Devices.Module/Features/Clients/GetClient/Query.cs index 90b56048c3..d02fa5c579 100644 --- a/Modules/Devices/src/Devices.Module/Features/Clients/GetClient/Query.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/GetClient/Query.cs @@ -3,7 +3,8 @@ namespace Backbone.Modules.Devices.Module.Features.Clients.GetClient; -public class GetClientQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetClientQuery")] +public class Query : IRequest { public required string Id { get; set; } } diff --git a/Modules/Devices/src/Devices.Module/Features/Clients/ListClients/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Clients/ListClients/Handler.cs index e8a9d1401f..8fb7729475 100644 --- a/Modules/Devices/src/Devices.Module/Features/Clients/ListClients/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/ListClients/Handler.cs @@ -3,7 +3,7 @@ namespace Backbone.Modules.Devices.Module.Features.Clients.ListClients; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IOAuthClientsRepository _oAuthClientsRepository; @@ -12,13 +12,13 @@ public Handler(IOAuthClientsRepository oAuthClientsRepository) _oAuthClientsRepository = oAuthClientsRepository; } - public async Task Handle(ListClientsQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var clients = (await _oAuthClientsRepository.List(cancellationToken)).ToList(); var clientIds = clients.Select(c => c.ClientId).ToList(); var numberOfIdentitiesByClient = await _oAuthClientsRepository.CountIdentities(clientIds, cancellationToken); - return new ListClientsResponse(clients, numberOfIdentitiesByClient); + return new Response(clients, numberOfIdentitiesByClient); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Clients/ListClients/Query.cs b/Modules/Devices/src/Devices.Module/Features/Clients/ListClients/Query.cs index c71b45aecb..07b139d33b 100644 --- a/Modules/Devices/src/Devices.Module/Features/Clients/ListClients/Query.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/ListClients/Query.cs @@ -2,4 +2,5 @@ namespace Backbone.Modules.Devices.Module.Features.Clients.ListClients; -public class ListClientsQuery : IRequest; +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListClientsQuery")] +public class Query : IRequest; diff --git a/Modules/Devices/src/Devices.Module/Features/Clients/ListClients/Response.cs b/Modules/Devices/src/Devices.Module/Features/Clients/ListClients/Response.cs index d98c990df9..d0d0156e2f 100644 --- a/Modules/Devices/src/Devices.Module/Features/Clients/ListClients/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/ListClients/Response.cs @@ -4,9 +4,10 @@ namespace Backbone.Modules.Devices.Module.Features.Clients.ListClients; -public class ListClientsResponse : CollectionResponseBase +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListClientsResponse")] +public class Response : CollectionResponseBase { - public ListClientsResponse(IEnumerable clients, IReadOnlyDictionary numberOfIdentitiesByClient) : base(clients.Select(client => + public Response(IEnumerable clients, IReadOnlyDictionary numberOfIdentitiesByClient) : base(clients.Select(client => new ClientDTO(client, numberOfIdentitiesByClient[client.ClientId]))) { } diff --git a/Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Command.cs b/Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Command.cs index ee1b512685..d3ab721847 100644 --- a/Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Devices.Module.Features.Clients.UpdateClient; -public class UpdateClientCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("UpdateClientCommand")] +public class Command : IRequest { public required string ClientId { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Handler.cs index 8fb34fa5fd..6539453065 100644 --- a/Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Handler.cs @@ -7,7 +7,7 @@ namespace Backbone.Modules.Devices.Module.Features.Clients.UpdateClient; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IOAuthClientsRepository _oAuthClientsRepository; private readonly IIdentitiesRepository _identitiesRepository; @@ -20,7 +20,7 @@ public Handler(IOAuthClientsRepository oAuthClientsRepository, IIdentitiesReposi _tiersRepository = tiersRepository; } - public async Task Handle(UpdateClientCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var client = await _oAuthClientsRepository.Get(request.ClientId, cancellationToken, track: true) ?? throw new NotFoundException(nameof(OAuthClient)); @@ -38,6 +38,6 @@ public async Task Handle(UpdateClientCommand request, Canc if (hasChanges) await _oAuthClientsRepository.Update(client, cancellationToken); - return new UpdateClientResponse(client); + return new Response(client); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Response.cs b/Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Response.cs index 6761d7bbd3..53e1757952 100644 --- a/Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Response.cs @@ -2,9 +2,10 @@ namespace Backbone.Modules.Devices.Module.Features.Clients.UpdateClient; -public class UpdateClientResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("UpdateClientResponse")] +public class Response { - public UpdateClientResponse(OAuthClient client) + public Response(OAuthClient client) { ClientId = client.ClientId; DisplayName = client.DisplayName; diff --git a/Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Validator.cs index 599c2e290f..681741f0ee 100644 --- a/Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Validator.cs @@ -3,9 +3,9 @@ namespace Backbone.Modules.Devices.Module.Features.Clients.UpdateClient; -public class UpdateClientCommandValidator : AbstractValidator +public class Validator : AbstractValidator { - public UpdateClientCommandValidator() + public Validator() { RuleFor(c => c.ClientId).DetailedNotEmpty(); RuleFor(c => c.DefaultTier).DetailedNotEmpty(); diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Command.cs b/Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Command.cs index e39dfc38bd..f55f613f2a 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Devices.Module.Features.Devices.ChangePassword; -public class ChangePasswordCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ChangePasswordCommand")] +public class Command : IRequest { public required string OldPassword { get; set; } public required string NewPassword { get; set; } diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Endpoint.cs index 5117758afd..c0f55eb8d8 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Endpoint.cs @@ -18,7 +18,7 @@ public static RouteGroupBuilder MapChangePasswordEndpoint(this RouteGroupBuilder return group; } - private static async Task Handle([FromBody] ChangePasswordCommand request, IMediator mediator, CancellationToken cancellationToken) + private static async Task Handle([FromBody] Command request, IMediator mediator, CancellationToken cancellationToken) { if (request.OldPassword == null || request.NewPassword == null) throw new BadHttpRequestException("Required request fields must not be null."); diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Handler.cs index 1d5698f5f6..a31701f173 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Handler.cs @@ -8,7 +8,7 @@ namespace Backbone.Modules.Devices.Module.Features.Devices.ChangePassword; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly DeviceId _activeDevice; private readonly ILogger _logger; @@ -23,7 +23,7 @@ public Handler(IDevicePasswordService passwordService, IUserContext userContext, _identitiesRepository = identitiesRepository; } - public async Task Handle(ChangePasswordCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var currentDevice = await _identitiesRepository.Get(_activeDevice, cancellationToken, track: true) ?? throw new NotFoundException(nameof(Device)); diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Validator.cs index cbe0a3746b..fd3def5c35 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Validator.cs @@ -4,7 +4,7 @@ namespace Backbone.Modules.Devices.Module.Features.Devices.ChangePassword; // ReSharper disable once UnusedMember.Global -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Command.cs b/Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Command.cs index 39019160f4..20755edb84 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Devices.Module.Features.Devices.DeleteDevice; -public class DeleteDeviceCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteDeviceCommand")] +public class Command : IRequest { public required string DeviceId { get; init; } } diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Endpoint.cs index eb04929222..41d9c8207d 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Endpoint.cs @@ -21,7 +21,7 @@ public static RouteGroupBuilder MapDeleteDeviceEndpoint(this RouteGroupBuilder g private static async Task Handle([FromRoute] string id, IMediator mediator, CancellationToken cancellationToken) { - await mediator.Send(new DeleteDeviceCommand { DeviceId = id }, cancellationToken); + await mediator.Send(new Command { DeviceId = id }, cancellationToken); return Results.NoContent(); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Handler.cs index aeffeee7a0..83924db84e 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Handler.cs @@ -8,7 +8,7 @@ namespace Backbone.Modules.Devices.Module.Features.Devices.DeleteDevice; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly ILogger _logger; private readonly IUserContext _userContext; @@ -21,7 +21,7 @@ public Handler(IIdentitiesRepository identitiesRepository, IUserContext userCont _logger = logger; } - public async Task Handle(DeleteDeviceCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var deviceId = DeviceId.Parse(request.DeviceId); var deviceThatIsBeingDeleted = await _identitiesRepository.Get(deviceId, cancellationToken, track: true) ?? throw new NotFoundException(nameof(Device)); diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Validator.cs index 6097e8a206..e41b07547f 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Validator.cs @@ -5,10 +5,10 @@ namespace Backbone.Modules.Devices.Module.Features.Devices.DeleteDevice; // ReSharper disable once UnusedMember.Global -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(c => c.DeviceId).ValidId(); + RuleFor(c => c.DeviceId).ValidId(); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/ExecuteHousekeeping/Command.cs b/Modules/Devices/src/Devices.Module/Features/Devices/ExecuteHousekeeping/Command.cs index 8cf7c45d6e..1dbea77393 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/ExecuteHousekeeping/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/ExecuteHousekeeping/Command.cs @@ -2,4 +2,5 @@ namespace Backbone.Modules.Devices.Module.Features.Devices.ExecuteHousekeeping; -public class ExecuteHousekeepingCommand : IRequest; +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ExecuteHousekeepingCommand")] +public class Command : IRequest; diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/ExecuteHousekeeping/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Devices/ExecuteHousekeeping/Handler.cs index a624e6d0b4..3f5eda48a5 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/ExecuteHousekeeping/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/ExecuteHousekeeping/Handler.cs @@ -5,7 +5,7 @@ namespace Backbone.Modules.Devices.Module.Features.Devices.ExecuteHousekeeping; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IIdentitiesRepository _identitiesRepository; @@ -14,7 +14,7 @@ public Handler(IIdentitiesRepository identitiesRepository) _identitiesRepository = identitiesRepository; } - public async Task Handle(ExecuteHousekeepingCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { await DeleteDeletionProcesses(cancellationToken); await DeleteDeletionProcessAuditLogEntries(cancellationToken); diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/GetActiveDevice/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Devices/GetActiveDevice/Endpoint.cs index 869d56c443..1f4aea07f6 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/GetActiveDevice/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/GetActiveDevice/Endpoint.cs @@ -20,7 +20,7 @@ public static RouteGroupBuilder MapGetActiveDeviceEndpoint(this RouteGroupBuilde private static async Task Handle(IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new GetActiveDeviceQuery(), cancellationToken); + var response = await mediator.Send(new Query(), cancellationToken); return EnvelopeHttpResults.Ok(response); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/GetActiveDevice/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Devices/GetActiveDevice/Handler.cs index 3c3b23667c..a59b2bb7f6 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/GetActiveDevice/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/GetActiveDevice/Handler.cs @@ -7,7 +7,7 @@ namespace Backbone.Modules.Devices.Module.Features.Devices.GetActiveDevice; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IUserContext _userContext; private readonly IIdentitiesRepository _identitiesRepository; @@ -18,7 +18,7 @@ public Handler(IUserContext userContext, IIdentitiesRepository identitiesReposit _identitiesRepository = identitiesRepository; } - public async Task Handle(GetActiveDeviceQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var device = await _identitiesRepository.Get(_userContext.GetDeviceId(), cancellationToken) ?? throw new NotFoundException(nameof(Device)); return new DeviceDTO(device); diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/GetActiveDevice/Query.cs b/Modules/Devices/src/Devices.Module/Features/Devices/GetActiveDevice/Query.cs index 2e7588faab..2c85aef4d1 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/GetActiveDevice/Query.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/GetActiveDevice/Query.cs @@ -3,4 +3,5 @@ namespace Backbone.Modules.Devices.Module.Features.Devices.GetActiveDevice; -public class GetActiveDeviceQuery : IRequest; +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetActiveDeviceQuery")] +public class Query : IRequest; diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Endpoint.cs index bd57f83410..7dd314048f 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Endpoint.cs @@ -17,7 +17,7 @@ internal static class Endpoint public static RouteGroupBuilder MapListDevicesEndpoint(this RouteGroupBuilder group) { group.MapGet("", Handle) - .Produces>(StatusCodes.Status200OK) + .Produces>(StatusCodes.Status200OK) .Produces(StatusCodes.Status400BadRequest); return group; } @@ -29,7 +29,7 @@ private static async Task Handle([FromQuery(Name = "PageNumber")] int? if (paginationFilter.PageSize > options.Value.Pagination.MaxPageSize) throw new ApplicationException(GenericApplicationErrors.Validation.InvalidPageSize(options.Value.Pagination.MaxPageSize)); - var response = await mediator.Send(new ListDevicesQuery { PaginationFilter = paginationFilter, Ids = ids ?? [] }, cancellationToken); + var response = await mediator.Send(new Query { PaginationFilter = paginationFilter, Ids = ids ?? [] }, cancellationToken); return EnvelopeHttpResults.Paged(response); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Handler.cs index 34fa8bcf9a..fed7f6ad1f 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Handler.cs @@ -5,7 +5,7 @@ namespace Backbone.Modules.Devices.Module.Features.Devices.ListDevices; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IdentityAddress _activeIdentity; private readonly IIdentitiesRepository _identitiesRepository; @@ -16,9 +16,9 @@ public Handler(IUserContext userContext, IIdentitiesRepository devicesRepository _identitiesRepository = devicesRepository; } - public async Task Handle(ListDevicesQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var dbPaginationResult = await _identitiesRepository.ListDevicesOfIdentity(_activeIdentity, request.Ids.Select(DeviceId.Parse), request.PaginationFilter, cancellationToken); - return new ListDevicesResponse(dbPaginationResult, request.PaginationFilter); + return new Response(dbPaginationResult, request.PaginationFilter); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Query.cs b/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Query.cs index f4035e12b8..0953e512c3 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Query.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Query.cs @@ -3,7 +3,8 @@ namespace Backbone.Modules.Devices.Module.Features.Devices.ListDevices; -public class ListDevicesQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListDevicesQuery")] +public class Query : IRequest { public required PaginationFilter PaginationFilter { get; init; } public required IEnumerable Ids { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Response.cs b/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Response.cs index fd25785ace..1e0ec309e8 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Response.cs @@ -5,9 +5,10 @@ namespace Backbone.Modules.Devices.Module.Features.Devices.ListDevices; -public class ListDevicesResponse : PagedResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListDevicesResponse")] +public class Response : PagedResponse { - public ListDevicesResponse(DbPaginationResult dbPaginationResult, PaginationFilter previousPaginationFilter) : base(dbPaginationResult.ItemsOnPage.Select(d => new DeviceDTO(d)), + public Response(DbPaginationResult dbPaginationResult, PaginationFilter previousPaginationFilter) : base(dbPaginationResult.ItemsOnPage.Select(d => new DeviceDTO(d)), previousPaginationFilter, dbPaginationResult.TotalNumberOfItems) { } diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Validator.cs index 14f7da75ac..68354b3ae9 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Devices.Module.Features.Devices.ListDevices; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleForEach(x => x.Ids).ValidId(); + RuleForEach(x => x.Ids).ValidId(); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Command.cs b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Command.cs index a04f5fb1b6..0660ffb273 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Command.cs @@ -3,7 +3,8 @@ namespace Backbone.Modules.Devices.Module.Features.Devices.RegisterDevice; -public class RegisterDeviceCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RegisterDeviceCommand")] +public class Command : IRequest { public required string DevicePassword { get; init; } public required string CommunicationLanguage { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Endpoint.cs index bd2394aa00..3b0b1133be 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Endpoint.cs @@ -15,7 +15,7 @@ internal static class Endpoint public static RouteGroupBuilder MapRegisterDeviceEndpoint(this RouteGroupBuilder group) { group.MapPost("", Handle) - .Produces>(StatusCodes.Status201Created) + .Produces>(StatusCodes.Status201Created) .Produces(StatusCodes.Status400BadRequest); return group; } @@ -25,7 +25,7 @@ private static async Task Handle([FromBody] RequestBody body, IMediator if (body.DevicePassword == null || body.SignedChallenge == null || body.SignedChallenge.Challenge == null || body.SignedChallenge.Signature == null) throw new BadHttpRequestException("Required request fields must not be null."); - var command = new RegisterDeviceCommand + var command = new Command { CommunicationLanguage = body.CommunicationLanguage ?? CommunicationLanguage.DEFAULT_LANGUAGE.Value, SignedChallenge = body.SignedChallenge, diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Handler.cs index 328f8a17df..5c78585253 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Handler.cs @@ -9,7 +9,7 @@ namespace Backbone.Modules.Devices.Module.Features.Devices.RegisterDevice; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly ChallengeValidator _challengeValidator; private readonly ILogger _logger; @@ -24,7 +24,7 @@ public Handler(ChallengeValidator challengeValidator, IUserContext userContext, _identitiesRepository = identitiesRepository; } - public async Task Handle(RegisterDeviceCommand command, CancellationToken cancellationToken) + public async Task Handle(Command command, CancellationToken cancellationToken) { var identity = await _identitiesRepository.Get(_userContext.GetAddress(), cancellationToken, track: true) ?? throw new NotFoundException(nameof(Identity)); @@ -42,7 +42,7 @@ public async Task Handle(RegisterDeviceCommand command, _logger.CreatedDevice(); - return new RegisterDeviceResponse(newDevice); + return new Response(newDevice); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Response.cs b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Response.cs index 793ef81d25..d60386e237 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Response.cs @@ -2,9 +2,10 @@ namespace Backbone.Modules.Devices.Module.Features.Devices.RegisterDevice; -public class RegisterDeviceResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RegisterDeviceResponse")] +public class Response { - public RegisterDeviceResponse(Device device) + public Response(Device device) { Id = device.Id.Value; Username = device.Username; diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Validator.cs index 2048bb1163..c63d168cc8 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Validator.cs @@ -6,9 +6,9 @@ namespace Backbone.Modules.Devices.Module.Features.Devices.RegisterDevice; -public class RegisterDeviceCommandValidator : AbstractValidator +public class Validator : AbstractValidator { - public RegisterDeviceCommandValidator() + public Validator() { RuleFor(c => c.DevicePassword).DetailedNotEmpty(); RuleFor(c => c.SignedChallenge).DetailedNotEmpty().SetValidator(new SignedChallengeDTOValidator()); diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Command.cs b/Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Command.cs index 2ca6316934..6b4b067f26 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Devices.Module.Features.Devices.UpdateActiveDevice; -public class UpdateActiveDeviceCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("UpdateActiveDeviceCommand")] +public class Command : IRequest { public required string CommunicationLanguage { get; init; } } diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Endpoint.cs index 9ee2b0d684..24d3563dcb 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Endpoint.cs @@ -18,7 +18,7 @@ public static RouteGroupBuilder MapUpdateActiveDeviceEndpoint(this RouteGroupBui return group; } - private static async Task Handle([FromBody] UpdateActiveDeviceCommand request, IMediator mediator, CancellationToken cancellationToken) + private static async Task Handle([FromBody] Command request, IMediator mediator, CancellationToken cancellationToken) { if (request.CommunicationLanguage == null) throw new BadHttpRequestException("Required request fields must not be null."); diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Handler.cs index 077d489449..d060f96680 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Handler.cs @@ -8,7 +8,7 @@ namespace Backbone.Modules.Devices.Module.Features.Devices.UpdateActiveDevice; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly DeviceId _activeDevice; private readonly ILogger _logger; @@ -21,7 +21,7 @@ public Handler(IUserContext userContext, ILogger logger, IIdentitiesRep _identitiesRepository = identitiesRepository; } - public async Task Handle(UpdateActiveDeviceCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var currentDevice = await _identitiesRepository.Get(_activeDevice, cancellationToken, track: true) ?? throw new Exception("Active device could not be found."); diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Validator.cs index 78c81e2720..228511754b 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Validator.cs @@ -4,7 +4,7 @@ namespace Backbone.Modules.Devices.Module.Features.Devices.UpdateActiveDevice; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { diff --git a/Modules/Devices/src/Devices.Module/Features/DomainEvents/AnnouncementCreated/Handler.cs b/Modules/Devices/src/Devices.Module/Features/DomainEvents/AnnouncementCreated/Handler.cs index f0891f4759..141c2983cf 100644 --- a/Modules/Devices/src/Devices.Module/Features/DomainEvents/AnnouncementCreated/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/DomainEvents/AnnouncementCreated/Handler.cs @@ -7,11 +7,11 @@ namespace Backbone.Modules.Devices.Module.Features.DomainEvents.AnnouncementCreated; -public class AnnouncementCreatedDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly IPushNotificationSender _pushSenderService; - public AnnouncementCreatedDomainEventHandler(IPushNotificationSender pushSenderService) + public Handler(IPushNotificationSender pushSenderService) { _pushSenderService = pushSenderService; } diff --git a/Modules/Devices/src/Devices.Module/Features/DomainEvents/BackupDeviceUsed/Handler.cs b/Modules/Devices/src/Devices.Module/Features/DomainEvents/BackupDeviceUsed/Handler.cs index 64746de13f..932a30ccf3 100644 --- a/Modules/Devices/src/Devices.Module/Features/DomainEvents/BackupDeviceUsed/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/DomainEvents/BackupDeviceUsed/Handler.cs @@ -5,11 +5,11 @@ namespace Backbone.Modules.Devices.Module.Features.DomainEvents.BackupDeviceUsed; -public class BackupDeviceUsedDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly IPushNotificationSender _pushNotificationSender; - public BackupDeviceUsedDomainEventHandler(IPushNotificationSender pushNotificationSender) + public Handler(IPushNotificationSender pushNotificationSender) { _pushNotificationSender = pushNotificationSender; } diff --git a/Modules/Devices/src/Devices.Module/Features/DomainEvents/DatawalletModificationCreated/Handler.cs b/Modules/Devices/src/Devices.Module/Features/DomainEvents/DatawalletModificationCreated/Handler.cs index d3a8721b68..e2678917f1 100644 --- a/Modules/Devices/src/Devices.Module/Features/DomainEvents/DatawalletModificationCreated/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/DomainEvents/DatawalletModificationCreated/Handler.cs @@ -6,11 +6,11 @@ namespace Backbone.Modules.Devices.Module.Features.DomainEvents.DatawalletModificationCreated; -public class DatawalletModifiedDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly IPushNotificationSender _pushSenderService; - public DatawalletModifiedDomainEventHandler(IPushNotificationSender pushSenderService) + public Handler(IPushNotificationSender pushSenderService) { _pushSenderService = pushSenderService; } diff --git a/Modules/Devices/src/Devices.Module/Features/DomainEvents/ExternalEventCreated/Handler.cs b/Modules/Devices/src/Devices.Module/Features/DomainEvents/ExternalEventCreated/Handler.cs index 234f287e0a..1516d80792 100644 --- a/Modules/Devices/src/Devices.Module/Features/DomainEvents/ExternalEventCreated/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/DomainEvents/ExternalEventCreated/Handler.cs @@ -7,12 +7,12 @@ namespace Backbone.Modules.Devices.Module.Features.DomainEvents.ExternalEventCreated; -public class ExternalEventCreatedDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly IPushNotificationSender _pushSenderService; private readonly IIdentitiesRepository _identitiesRepository; - public ExternalEventCreatedDomainEventHandler(IPushNotificationSender pushSenderService, IIdentitiesRepository identitiesRepository) + public Handler(IPushNotificationSender pushSenderService, IIdentitiesRepository identitiesRepository) { _pushSenderService = pushSenderService; _identitiesRepository = identitiesRepository; diff --git a/Modules/Devices/src/Devices.Module/Features/DomainEvents/IdentityDeletionProcessStarted/Handler.cs b/Modules/Devices/src/Devices.Module/Features/DomainEvents/IdentityDeletionProcessStarted/Handler.cs index d6fae0a156..1e2ad4776c 100644 --- a/Modules/Devices/src/Devices.Module/Features/DomainEvents/IdentityDeletionProcessStarted/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/DomainEvents/IdentityDeletionProcessStarted/Handler.cs @@ -5,11 +5,11 @@ namespace Backbone.Modules.Devices.Module.Features.DomainEvents.IdentityDeletionProcessStarted; -public class IdentityDeletionProcessStartedDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly IPushNotificationSender _pushNotificationSender; - public IdentityDeletionProcessStartedDomainEventHandler(IPushNotificationSender pushNotificationSender) + public Handler(IPushNotificationSender pushNotificationSender) { _pushNotificationSender = pushNotificationSender; } diff --git a/Modules/Devices/src/Devices.Module/Features/DomainEvents/TokenLocked/Handler.cs b/Modules/Devices/src/Devices.Module/Features/DomainEvents/TokenLocked/Handler.cs index 176b0d796c..82a38f595b 100644 --- a/Modules/Devices/src/Devices.Module/Features/DomainEvents/TokenLocked/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/DomainEvents/TokenLocked/Handler.cs @@ -7,12 +7,12 @@ namespace Backbone.Modules.Devices.Module.Features.DomainEvents.TokenLocked; -public class TokenLockedDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly IPushNotificationSender _pushNotificationSender; private readonly IIdentitiesRepository _identitiesRepository; - public TokenLockedDomainEventHandler(IPushNotificationSender pushNotificationSender, IIdentitiesRepository identitiesRepository) + public Handler(IPushNotificationSender pushNotificationSender, IIdentitiesRepository identitiesRepository) { _pushNotificationSender = pushNotificationSender; _identitiesRepository = identitiesRepository; diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Command.cs b/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Command.cs index a891cd8447..0cd0266d14 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.CancelDeletionProcess; -public class CancelDeletionProcessCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CancelDeletionProcessCommand")] +public class Command : IRequest { public required string DeletionProcessId { get; init; } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Endpoint.cs index 97ec929f73..28f5ce2dd1 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Endpoint.cs @@ -13,7 +13,7 @@ internal static class Endpoint public static RouteGroupBuilder MapCancelDeletionProcessEndpoint(this RouteGroupBuilder group) { group.MapPut("{id}/Cancel", Handle) - .Produces>(StatusCodes.Status200OK) + .Produces>(StatusCodes.Status200OK) .Produces(StatusCodes.Status400BadRequest) .Produces(StatusCodes.Status404NotFound); return group; @@ -21,7 +21,7 @@ public static RouteGroupBuilder MapCancelDeletionProcessEndpoint(this RouteGroup private static async Task Handle([FromRoute] string id, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new CancelDeletionProcessCommand { DeletionProcessId = id }, cancellationToken); + var response = await mediator.Send(new Command { DeletionProcessId = id }, cancellationToken); return EnvelopeHttpResults.Ok(response); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Handler.cs index 54db5d69dc..93982fc0b1 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Handler.cs @@ -9,7 +9,7 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.CancelDeletionProcess; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IIdentitiesRepository _identitiesRepository; private readonly IUserContext _userContext; @@ -22,7 +22,7 @@ public Handler(IIdentitiesRepository identitiesRepository, IUserContext userCont _notificationSender = notificationSender; } - public async Task Handle(CancelDeletionProcessCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var identity = await _identitiesRepository.Get(_userContext.GetAddress(), cancellationToken, true) ?? throw new NotFoundException(nameof(Identity)); @@ -44,6 +44,6 @@ await _notificationSender.SendNotification( cancellationToken ); - return new CancelDeletionProcessResponse(deletionProcess); + return new Response(deletionProcess); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Response.cs b/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Response.cs index 40dc2c9237..bf15e26d4b 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Response.cs @@ -3,9 +3,10 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.CancelDeletionProcess; -public class CancelDeletionProcessResponse : IdentityDeletionProcessOverviewDTO +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CancelDeletionProcessResponse")] +public class Response : IdentityDeletionProcessOverviewDTO { - public CancelDeletionProcessResponse(IdentityDeletionProcess deletionProcess) : base(deletionProcess) + public Response(IdentityDeletionProcess deletionProcess) : base(deletionProcess) { } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Validator.cs index 9d9b3ec6bd..5883e8994c 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.CancelDeletionProcess; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.DeletionProcessId).ValidId(); + RuleFor(x => x.DeletionProcessId).ValidId(); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Command.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Command.cs index a2f7bbb711..df3af6f0b8 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Command.cs @@ -2,4 +2,5 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ChangeFeatureFlags; -public class ChangeFeatureFlagsCommand : Dictionary, IRequest; +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ChangeFeatureFlagsCommand")] +public class Command : Dictionary, IRequest; diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Endpoint.cs index 540cf83bdc..25a0893647 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Endpoint.cs @@ -18,7 +18,7 @@ public static RouteGroupBuilder MapChangeFeatureFlagsEndpoint(this RouteGroupBui return group; } - private static async Task Handle([FromBody] ChangeFeatureFlagsCommand request, IMediator mediator, CancellationToken cancellationToken) + private static async Task Handle([FromBody] Command request, IMediator mediator, CancellationToken cancellationToken) { await mediator.Send(request, cancellationToken); return Results.NoContent(); diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Handler.cs index b4fab2ddd0..7ac8ac01fb 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Handler.cs @@ -9,7 +9,7 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ChangeFeatureFlags; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IIdentitiesRepository _identitiesRepository; private readonly IdentityAddress _activeIdentity; @@ -22,7 +22,7 @@ public Handler(IIdentitiesRepository identitiesRepository, IUserContext userCont _configuration = configuration.Value; } - public async Task Handle(ChangeFeatureFlagsCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var identity = await _identitiesRepository.Get(_activeIdentity, cancellationToken, true) ?? throw new NotFoundException(nameof(Identity)); EnsureAllAdditionalFeatureFlagsCanBeCreated(request, identity); @@ -31,7 +31,7 @@ public async Task Handle(ChangeFeatureFlagsCommand request, CancellationToken ca await _identitiesRepository.Update(identity, cancellationToken); } - private void EnsureAllAdditionalFeatureFlagsCanBeCreated(ChangeFeatureFlagsCommand request, Identity identity) + private void EnsureAllAdditionalFeatureFlagsCanBeCreated(Command request, Identity identity) { var combinedFeatureFlagNames = identity.FeatureFlags.Names.Select(n => n.Value).Concat(request.Keys).ToHashSet(); if (combinedFeatureFlagNames.Count > _configuration.MaxNumberOfFeatureFlagsPerIdentity) diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Validator.cs index 088ea07ecf..1cbdd3727d 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Validator.cs @@ -5,7 +5,7 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ChangeFeatureFlags; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator(IOptions configuration) { diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Command.cs b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Command.cs index 361af98f3d..bf0d570836 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Command.cs @@ -3,7 +3,8 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.CreateIdentity; -public class CreateIdentityCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateIdentityCommand")] +public class Command : IRequest { public required string ClientId { get; set; } public required byte[] IdentityPublicKey { get; set; } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Endpoint.cs index 78e57b03ca..37427dca8e 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Endpoint.cs @@ -17,7 +17,7 @@ internal static class Endpoint public static RouteGroupBuilder MapCreateIdentityEndpoint(this RouteGroupBuilder group) { group.MapPost("", Handle) - .Produces>(StatusCodes.Status201Created) + .Produces>(StatusCodes.Status201Created) .Produces(StatusCodes.Status400BadRequest) .Produces(StatusCodes.Status404NotFound) .AllowAnonymous(); @@ -32,7 +32,7 @@ private static async Task Handle([FromBody] RequestBody request, IOAuth if (!await clients.ValidateSecret(request.ClientId, request.ClientSecret, cancellationToken)) throw new OperationFailedException(GenericApplicationErrors.Unauthorized()); - var command = new CreateIdentityCommand + var command = new Command { ClientId = request.ClientId, DevicePassword = request.DevicePassword, diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Handler.cs index e843e3235c..8e7fc1c2c4 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Handler.cs @@ -10,7 +10,7 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.CreateIdentity; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly ApplicationConfiguration _applicationConfiguration; private readonly IIdentitiesRepository _identitiesRepository; @@ -28,7 +28,7 @@ public Handler(ChallengeValidator challengeValidator, ILogger logger, I _oAuthClientsRepository = oAuthClientsRepository; } - public async Task Handle(CreateIdentityCommand command, CancellationToken cancellationToken) + public async Task Handle(Command command, CancellationToken cancellationToken) { var publicKey = await ValidateChallenge(command); _logger.LogTrace("Challenge successfully validated."); @@ -40,10 +40,10 @@ public async Task Handle(CreateIdentityCommand command, await _identitiesRepository.Add(newIdentity, command.DevicePassword); _logger.CreatedIdentity(); - return new CreateIdentityResponse(newIdentity); + return new Response(newIdentity); } - private async Task CreateNewIdentity(CreateIdentityCommand command, CancellationToken cancellationToken, IdentityAddress address) + private async Task CreateNewIdentity(Command command, CancellationToken cancellationToken, IdentityAddress address) { var client = await _oAuthClientsRepository.Get(command.ClientId, cancellationToken) ?? throw new NotFoundException(nameof(OAuthClient)); @@ -67,7 +67,7 @@ private async Task CreateIdentityAddress(PublicKey publicKey, C return address; } - private async Task ValidateChallenge(CreateIdentityCommand command) + private async Task ValidateChallenge(Command command) { var publicKey = PublicKey.FromBytes(command.IdentityPublicKey); await _challengeValidator.Validate(command.SignedChallenge, publicKey); diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Response.cs b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Response.cs index cf60f46eca..3e74912737 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Response.cs @@ -2,9 +2,10 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.CreateIdentity; -public class CreateIdentityResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateIdentityResponse")] +public class Response { - public CreateIdentityResponse(Identity identity) + public Response(Identity identity) { Address = identity.Address; CreatedAt = identity.CreatedAt; diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Validator.cs index db3408966f..66d94bd4c6 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Validator.cs @@ -7,9 +7,9 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.CreateIdentity; // ReSharper disable once UnusedMember.Global -public class CreateIdentityCommandValidator : AbstractValidator +public class Validator : AbstractValidator { - public CreateIdentityCommandValidator() + public Validator() { RuleFor(c => c.IdentityPublicKey).DetailedNotEmpty(); RuleFor(c => c.DevicePassword).DetailedNotEmpty(); diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/Command.cs b/Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/Command.cs index c37fa044ab..c72a841a12 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.DeleteIdentity; -public class DeleteIdentityCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteIdentityCommand")] +public class Command : IRequest { public required string IdentityAddress { get; init; } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/Handler.cs index e3bf3055e1..c76e796df3 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/Handler.cs @@ -4,7 +4,7 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.DeleteIdentity; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IIdentitiesRepository _identitiesRepository; @@ -13,7 +13,7 @@ public Handler(IIdentitiesRepository identitiesRepository) _identitiesRepository = identitiesRepository; } - public async Task Handle(DeleteIdentityCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { await _identitiesRepository.Delete(Identity.HasAddress(request.IdentityAddress), cancellationToken); } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs b/Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs index 16d0fd7445..d7cef13b87 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs @@ -1,3 +1,4 @@ +using DeletePnsRegistrationsOfIdentity = Backbone.Modules.Devices.Module.Features.PushNotifications.DeletePnsRegistrationsOfIdentity; using Backbone.BuildingBlocks.Application.Identities; using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Devices.Module.Features.Identities.DeleteIdentity; @@ -19,9 +20,9 @@ public IdentityDeleter(IMediator mediator, IDeletionProcessLogger deletionProces public async Task Delete(IdentityAddress identityAddress) { - await _mediator.Send(new DeletePnsRegistrationsOfIdentityCommand { IdentityAddress = identityAddress }); + await _mediator.Send(new DeletePnsRegistrationsOfIdentity.Command { IdentityAddress = identityAddress }); await _deletionProcessLogger.LogDeletion(identityAddress, "PnsRegistrations"); - await _mediator.Send(new DeleteIdentityCommand { IdentityAddress = identityAddress }); + await _mediator.Send(new Command { IdentityAddress = identityAddress }); await _deletionProcessLogger.LogDeletion(identityAddress, "Identities"); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/Validator.cs index 8e4100ad81..d793fa5784 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.DeleteIdentity; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.IdentityAddress).ValidId(); + RuleFor(x => x.IdentityAddress).ValidId(); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Endpoint.cs index 178f7ff142..e69b683b17 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Endpoint.cs @@ -22,7 +22,7 @@ public static RouteGroupBuilder MapGetDeletionProcessAsOwnerEndpoint(this RouteG private static async Task Handle([FromRoute] string id, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new GetDeletionProcessAsOwnerQuery { Id = id }, cancellationToken); + var response = await mediator.Send(new Query { Id = id }, cancellationToken); return EnvelopeHttpResults.Ok(response); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Handler.cs index 56ad3c2a37..1f0adb39d8 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Handler.cs @@ -7,7 +7,7 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsOwner; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IIdentitiesRepository _identitiesRepository; private readonly IUserContext _userContext; @@ -18,7 +18,7 @@ public Handler(IIdentitiesRepository identitiesRepository, IUserContext userCont _userContext = userContext; } - public async Task Handle(GetDeletionProcessAsOwnerQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var identity = await _identitiesRepository.Get(_userContext.GetAddress(), cancellationToken) ?? throw new NotFoundException(nameof(Identity)); var deletionProcess = identity.DeletionProcesses.FirstOrDefault(p => p.Id == request.Id) ?? throw new NotFoundException(nameof(IdentityDeletionProcess)); diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Query.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Query.cs index f6bb3ac2da..31e0cae80c 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Query.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Query.cs @@ -3,7 +3,8 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsOwner; -public class GetDeletionProcessAsOwnerQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetDeletionProcessAsOwnerQuery")] +public class Query : IRequest { public required string Id { get; init; } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Validator.cs index ac26d29917..8454134b22 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsOwner; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.Id).ValidId(); + RuleFor(x => x.Id).ValidId(); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsSupport/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsSupport/Handler.cs index ebfa517d18..068b985475 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsSupport/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsSupport/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsSupport; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IIdentitiesRepository _identitiesRepository; @@ -15,7 +15,7 @@ public Handler(IIdentitiesRepository identitiesRepository) _identitiesRepository = identitiesRepository; } - public async Task Handle(GetDeletionProcessAsSupportQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var identity = await _identitiesRepository.Get(request.IdentityAddress, cancellationToken) ?? throw new NotFoundException(nameof(Identity)); var deletionProcess = identity.DeletionProcesses.FirstOrDefault(p => p.Id == request.DeletionProcessId) ?? throw new NotFoundException(nameof(IdentityDeletionProcess)); diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsSupport/Query.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsSupport/Query.cs index 0859d16807..a567fd57f3 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsSupport/Query.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsSupport/Query.cs @@ -3,7 +3,8 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsSupport; -public class GetDeletionProcessAsSupportQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetDeletionProcessAsSupportQuery")] +public class Query : IRequest { public required string IdentityAddress { get; init; } public required string DeletionProcessId { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsSupport/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsSupport/Validator.cs index f941a626eb..d533c43694 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsSupport/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsSupport/Validator.cs @@ -5,11 +5,11 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsSupport; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.IdentityAddress).ValidId(); - RuleFor(x => x.DeletionProcessId).ValidId(); + RuleFor(x => x.IdentityAddress).ValidId(); + RuleFor(x => x.DeletionProcessId).ValidId(); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Handler.cs index af27c9108c..b6f61f654f 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Handler.cs @@ -5,7 +5,7 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.GetIdentity; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IIdentitiesRepository _identitiesRepository; @@ -14,10 +14,10 @@ public Handler(IIdentitiesRepository identitiesRepository) _identitiesRepository = identitiesRepository; } - public async Task Handle(GetIdentityQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var identity = await _identitiesRepository.Get(request.Address, cancellationToken) ?? throw new NotFoundException(nameof(Identity)); - return new GetIdentityResponse(identity); + return new Response(identity); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/IdentityStatusProvider.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/IdentityStatusProvider.cs index fbfc8b358a..9a517c4b3c 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/IdentityStatusProvider.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/IdentityStatusProvider.cs @@ -8,7 +8,7 @@ public class IdentityStatusProvider(IMediator mediator) : IIdentityStatusProvide { public async Task IsActive(string address, CancellationToken cancellationToken) { - var identity = await mediator.Send(new GetIdentityQuery { Address = address }, cancellationToken); + var identity = await mediator.Send(new Query { Address = address }, cancellationToken); return identity.Status is IdentityStatus.Active; } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Query.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Query.cs index d9dd7d6cca..7dc3891286 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Query.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Query.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.GetIdentity; -public class GetIdentityQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetIdentityQuery")] +public class Query : IRequest { public required string Address { get; init; } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Response.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Response.cs index 9c46df1880..0bd0137550 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Response.cs @@ -3,7 +3,8 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.GetIdentity; -public class GetIdentityResponse : IdentitySummaryDTO +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetIdentityResponse")] +public class Response : IdentitySummaryDTO { - public GetIdentityResponse(Identity identity) : base(identity) { } + public Response(Identity identity) : base(identity) { } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Validator.cs index d92f1ab1a3..0e95893a44 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.GetIdentity; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.Address).ValidId(); + RuleFor(x => x.Address).ValidId(); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Endpoint.cs index f2c8bc8248..ddeca115ad 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Endpoint.cs @@ -13,13 +13,13 @@ internal static class Endpoint public static RouteGroupBuilder MapGetOwnIdentityEndpoint(this RouteGroupBuilder group) { group.MapGet("Self", Handle) - .Produces>(StatusCodes.Status200OK); + .Produces>(StatusCodes.Status200OK); return group; } private static async Task Handle(IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new GetOwnIdentityQuery(), cancellationToken); + var response = await mediator.Send(new Query(), cancellationToken); return EnvelopeHttpResults.Ok(response); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Handler.cs index 923af6ecd6..5ec13357ac 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Handler.cs @@ -4,7 +4,7 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.GetOwnIdentity; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IIdentitiesRepository _identitiesRepository; private readonly IUserContext _userContext; @@ -15,11 +15,11 @@ public Handler(IIdentitiesRepository identitiesRepository, IUserContext userCont _userContext = userContext; } - public async Task Handle(GetOwnIdentityQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var identity = await _identitiesRepository.Get(_userContext.GetAddress(), cancellationToken) ?? throw new Exception("Failed to retrieve identity. This could be due to an invalid JWT or data loss."); - return new GetOwnIdentityResponse(identity); + return new Response(identity); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Query.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Query.cs index d77fc7ab55..f186c31915 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Query.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Query.cs @@ -2,4 +2,5 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.GetOwnIdentity; -public class GetOwnIdentityQuery : IRequest; +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetOwnIdentityQuery")] +public class Query : IRequest; diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Response.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Response.cs index eb1637869c..a0185d53e7 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Response.cs @@ -2,9 +2,10 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.GetOwnIdentity; -public class GetOwnIdentityResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetOwnIdentityResponse")] +public class Response { - public GetOwnIdentityResponse(Identity identity) + public Response(Identity identity) { Address = identity.Address.ToString(); CreatedAt = identity.CreatedAt; diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/HandleCompletedDeletionProcess/Command.cs b/Modules/Devices/src/Devices.Module/Features/Identities/HandleCompletedDeletionProcess/Command.cs index 54fef7deb9..5585f34890 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/HandleCompletedDeletionProcess/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/HandleCompletedDeletionProcess/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.HandleCompletedDeletionProcess; -public class HandleCompletedDeletionProcessCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("HandleCompletedDeletionProcessCommand")] +public class Command : IRequest { public required string IdentityAddress { get; init; } public required IEnumerable Usernames { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/HandleCompletedDeletionProcess/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/HandleCompletedDeletionProcess/Handler.cs index 8de824d61e..f40d5c0a82 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/HandleCompletedDeletionProcess/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/HandleCompletedDeletionProcess/Handler.cs @@ -5,7 +5,7 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.HandleCompletedDeletionProcess; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IIdentitiesRepository _identitiesRepository; @@ -14,14 +14,14 @@ public Handler(IIdentitiesRepository identitiesRepository) _identitiesRepository = identitiesRepository; } - public async Task Handle(HandleCompletedDeletionProcessCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { await _identitiesRepository.AddDeletionProcessAuditLogEntry(IdentityDeletionProcessAuditLogEntry.DeletionCompleted(request.IdentityAddress)); await AssociateUsernames(request, cancellationToken); } - private async Task AssociateUsernames(HandleCompletedDeletionProcessCommand request, CancellationToken cancellationToken) + private async Task AssociateUsernames(Command request, CancellationToken cancellationToken) { var identityAddressHash = Hasher.HashUtf8(request.IdentityAddress); diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/HandleCompletedDeletionProcess/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Identities/HandleCompletedDeletionProcess/Validator.cs index b6aae401fc..009907f7a5 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/HandleCompletedDeletionProcess/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/HandleCompletedDeletionProcess/Validator.cs @@ -5,11 +5,11 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.HandleCompletedDeletionProcess; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(c => c.IdentityAddress).ValidId(); + RuleFor(c => c.IdentityAddress).ValidId(); RuleFor(c => c.Usernames).DetailedNotEmpty(); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/HandleErrorDuringIdentityDeletion/Command.cs b/Modules/Devices/src/Devices.Module/Features/Identities/HandleErrorDuringIdentityDeletion/Command.cs index 8ab8e80160..e6731371a6 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/HandleErrorDuringIdentityDeletion/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/HandleErrorDuringIdentityDeletion/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.HandleErrorDuringIdentityDeletion; -public class HandleErrorDuringIdentityDeletionCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("HandleErrorDuringIdentityDeletionCommand")] +public class Command : IRequest { public required string IdentityAddress { get; init; } public required string ErrorMessage { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/HandleErrorDuringIdentityDeletion/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/HandleErrorDuringIdentityDeletion/Handler.cs index e79ef41582..cc0371f0b4 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/HandleErrorDuringIdentityDeletion/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/HandleErrorDuringIdentityDeletion/Handler.cs @@ -4,7 +4,7 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.HandleErrorDuringIdentityDeletion; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IIdentitiesRepository _identitiesRepository; @@ -13,7 +13,7 @@ public Handler(IIdentitiesRepository identitiesRepository) _identitiesRepository = identitiesRepository; } - public async Task Handle(HandleErrorDuringIdentityDeletionCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var identity = await _identitiesRepository.Get(request.IdentityAddress, cancellationToken, track: true); diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Endpoint.cs index f13358a928..b8fc749d4b 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Endpoint.cs @@ -13,7 +13,7 @@ internal static class Endpoint public static RouteGroupBuilder MapIsIdentityOfUserDeletedEndpoint(this RouteGroupBuilder group) { group.MapGet("IsDeleted", Handle) - .Produces>(StatusCodes.Status200OK) + .Produces>(StatusCodes.Status200OK) .Produces(StatusCodes.Status400BadRequest) .AllowAnonymous(); return group; @@ -21,7 +21,7 @@ public static RouteGroupBuilder MapIsIdentityOfUserDeletedEndpoint(this RouteGro private static async Task Handle([FromQuery(Name = "username")] string username, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new IsIdentityOfUserDeletedQuery { Username = username }, cancellationToken); + var response = await mediator.Send(new Query { Username = username }, cancellationToken); return EnvelopeHttpResults.Ok(response); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Handler.cs index 368b409ed7..2463f0821e 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Handler.cs @@ -5,7 +5,7 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.IsIdentityOfUserDeleted; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IIdentitiesRepository _identitiesRepository; @@ -14,7 +14,7 @@ public Handler(IIdentitiesRepository identitiesRepository) _identitiesRepository = identitiesRepository; } - public async Task Handle(IsIdentityOfUserDeletedQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var identity = await _identitiesRepository.GetFirst(Identity.HasUser(request.Username), cancellationToken); @@ -38,6 +38,6 @@ public async Task Handle(IsIdentityOfUserDelete deletionGracePeriodEndsAt = deletionCompletedAuditLogEntry?.CreatedAt; } - return new IsIdentityOfUserDeletedResponse(isDeleted, deletionGracePeriodEndsAt); + return new Response(isDeleted, deletionGracePeriodEndsAt); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Query.cs b/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Query.cs index b376c3324f..0941c89f2e 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Query.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Query.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.IsIdentityOfUserDeleted; -public class IsIdentityOfUserDeletedQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("IsIdentityOfUserDeletedQuery")] +public class Query : IRequest { public required string Username { get; init; } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Response.cs b/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Response.cs index 5de765a7f7..971e1792ed 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Response.cs @@ -1,8 +1,9 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.IsIdentityOfUserDeleted; -public class IsIdentityOfUserDeletedResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("IsIdentityOfUserDeletedResponse")] +public class Response { - public IsIdentityOfUserDeletedResponse(bool isDeleted, DateTime? deletionDate) + public Response(bool isDeleted, DateTime? deletionDate) { IsDeleted = isDeleted; DeletionDate = deletionDate; diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Validator.cs index 69d88bac38..7236f55ce6 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.IsIdentityOfUserDeleted; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.Username).ValidId(); + RuleFor(x => x.Username).ValidId(); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Handler.cs index 5e533ed226..124dab2a46 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Handler.cs @@ -4,7 +4,7 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IIdentitiesRepository _identitiesRepository; @@ -13,10 +13,10 @@ public Handler(IIdentitiesRepository identitiesRepository) _identitiesRepository = identitiesRepository; } - public async Task Handle(ListAddressesOfIdentitiesWithDeletionProcessInStatusDeletingQuery request, + public async Task Handle(Query request, CancellationToken cancellationToken) { var addresses = await _identitiesRepository.ListAddressesOfIdentities(Identity.HasDeletionProcessInStatus(DeletionProcessStatus.Deleting), cancellationToken); - return new ListAddressesOfIdentitiesWithDeletionProcessInStatusDeletingResponse(addresses); + return new Response(addresses); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Query.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Query.cs index f53245ffe7..785cda90fc 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Query.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Query.cs @@ -2,4 +2,5 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting; -public class ListAddressesOfIdentitiesWithDeletionProcessInStatusDeletingQuery : IRequest; +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListAddressesOfIdentitiesWithDeletionProcessInStatusDeletingQuery")] +public class Query : IRequest; diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Response.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Response.cs index 36d3f74915..b7b09f3cc4 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Response.cs @@ -2,9 +2,10 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting; -public class ListAddressesOfIdentitiesWithDeletionProcessInStatusDeletingResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListAddressesOfIdentitiesWithDeletionProcessInStatusDeletingResponse")] +public class Response { - public ListAddressesOfIdentitiesWithDeletionProcessInStatusDeletingResponse(IEnumerable identityAddresses) + public Response(IEnumerable identityAddresses) { Addresses = identityAddresses.Select(a => a.Value).ToList(); } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Endpoint.cs index 9c00f2a8f9..56c37491d0 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Endpoint.cs @@ -13,13 +13,13 @@ internal static class Endpoint public static RouteGroupBuilder MapListDeletionProcessesAsOwnerEndpoint(this RouteGroupBuilder group) { group.MapGet("", Handle) - .Produces>(StatusCodes.Status200OK); + .Produces>(StatusCodes.Status200OK); return group; } private static async Task Handle(IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new ListDeletionProcessesAsOwnerQuery(), cancellationToken); + var response = await mediator.Send(new Query(), cancellationToken); return EnvelopeHttpResults.Ok(response); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Handler.cs index 1b87fd888d..b28e26373a 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsOwner; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IIdentitiesRepository _identityRepository; private readonly IUserContext _userContext; @@ -17,11 +17,11 @@ public Handler(IIdentitiesRepository identityRepository, IUserContext userContex _userContext = userContext; } - public async Task Handle(ListDeletionProcessesAsOwnerQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var identity = await _identityRepository.Get(_userContext.GetAddress(), cancellationToken) ?? throw new NotFoundException(nameof(Identity)); var processes = identity.DeletionProcesses; - var response = new ListDeletionProcessesAsOwnerResponse(processes); + var response = new Response(processes); return response; } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Query.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Query.cs index 17a6329d06..0af18217da 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Query.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Query.cs @@ -2,4 +2,5 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsOwner; -public class ListDeletionProcessesAsOwnerQuery : IRequest; +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListDeletionProcessesAsOwnerQuery")] +public class Query : IRequest; diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Response.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Response.cs index ebe6656c1e..af4a01431b 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Response.cs @@ -4,9 +4,10 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsOwner; -public class ListDeletionProcessesAsOwnerResponse : CollectionResponseBase +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListDeletionProcessesAsOwnerResponse")] +public class Response : CollectionResponseBase { - public ListDeletionProcessesAsOwnerResponse(IEnumerable processes) + public Response(IEnumerable processes) : base(processes.Select(p => new IdentityDeletionProcessOverviewDTO(p))) { } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Handler.cs index 05218a7bed..45f6a042c3 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Handler.cs @@ -5,7 +5,7 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsSupport; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IIdentitiesRepository _identityRepository; @@ -14,10 +14,10 @@ public Handler(IIdentitiesRepository identityRepository) _identityRepository = identityRepository; } - public async Task Handle(ListDeletionProcessesAsSupportQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var identity = await _identityRepository.Get(request.IdentityAddress, cancellationToken) ?? throw new NotFoundException(nameof(Identity)); - var response = new GetDeletionProcessesAsSupportResponse(identity.DeletionProcesses); + var response = new Response(identity.DeletionProcesses); return response; } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Query.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Query.cs index b16a8fdb84..6f605f13ff 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Query.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Query.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsSupport; -public class ListDeletionProcessesAsSupportQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListDeletionProcessesAsSupportQuery")] +public class Query : IRequest { public required string IdentityAddress { get; init; } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Response.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Response.cs index aebad27044..29241b0735 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Response.cs @@ -4,9 +4,10 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsSupport; -public class GetDeletionProcessesAsSupportResponse : CollectionResponseBase +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetDeletionProcessesAsSupportResponse")] +public class Response : CollectionResponseBase { - public GetDeletionProcessesAsSupportResponse(IEnumerable processes) + public Response(IEnumerable processes) : base(processes.Select(p => new IdentityDeletionProcessOverviewDTO(p)).OrderByDescending(p => p.CreatedAt)) { } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Validator.cs index 6303df122d..93e0c6b0df 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsSupport; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.IdentityAddress).ValidId(); + RuleFor(x => x.IdentityAddress).ValidId(); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Handler.cs index 13bdb3bbfc..1cc8dd9b77 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Handler.cs @@ -4,7 +4,7 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IIdentitiesRepository _identityRepository; @@ -13,12 +13,12 @@ public Handler(IIdentitiesRepository identityRepository) _identityRepository = identityRepository; } - public async Task Handle(ListDeletionProcessesAuditLogsQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var addressHash = Hasher.HashUtf8(request.IdentityAddress); var identityDeletionProcessAuditLogEntries = await _identityRepository.ListIdentityDeletionProcessAuditLogs(l => l.IdentityAddressHash == addressHash, cancellationToken); - return new ListDeletionProcessesAuditLogsResponse(identityDeletionProcessAuditLogEntries.OrderBy(e => e.CreatedAt)); + return new Response(identityDeletionProcessAuditLogEntries.OrderBy(e => e.CreatedAt)); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Query.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Query.cs index 4dd5b6f8fb..f21792a8a5 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Query.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Query.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; -public class ListDeletionProcessesAuditLogsQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListDeletionProcessesAuditLogsQuery")] +public class Query : IRequest { public required string IdentityAddress { get; init; } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Response.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Response.cs index 4856f7b75c..2243be798f 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Response.cs @@ -4,9 +4,10 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; -public class ListDeletionProcessesAuditLogsResponse : CollectionResponseBase +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListDeletionProcessesAuditLogsResponse")] +public class Response : CollectionResponseBase { - public ListDeletionProcessesAuditLogsResponse(IEnumerable processes) + public Response(IEnumerable processes) : base(processes.Select(p => new IdentityDeletionProcessAuditLogEntryDTO(p))) { } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Validator.cs index 0e45251fc0..1af3e8b56a 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.IdentityAddress).ValidId(); + RuleFor(x => x.IdentityAddress).ValidId(); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Endpoint.cs index 7fff870de6..a82784ec78 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Endpoint.cs @@ -13,7 +13,7 @@ internal static class Endpoint public static RouteGroupBuilder MapListFeatureFlagsEndpoint(this RouteGroupBuilder group) { group.MapGet("{identityAddress}/FeatureFlags", Handle) - .Produces>(StatusCodes.Status200OK) + .Produces>(StatusCodes.Status200OK) .Produces(StatusCodes.Status400BadRequest) .Produces(StatusCodes.Status404NotFound); return group; @@ -21,7 +21,7 @@ public static RouteGroupBuilder MapListFeatureFlagsEndpoint(this RouteGroupBuild private static async Task Handle([FromRoute] string identityAddress, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new ListFeatureFlagsQuery { IdentityAddress = identityAddress }, cancellationToken); + var response = await mediator.Send(new Query { IdentityAddress = identityAddress }, cancellationToken); return EnvelopeHttpResults.Ok(response); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Handler.cs index d2cfa5c44f..2a8a7123c0 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Handler.cs @@ -9,7 +9,7 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListFeatureFlags; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IIdentitiesRepository _identityRepository; private readonly IRelationshipTemplatesRepository _relationshipTemplatesRepository; @@ -25,13 +25,13 @@ public Handler(IIdentitiesRepository identityRepository, IRelationshipTemplatesR _activeIdentity = userContext.GetAddress(); } - public async Task Handle(ListFeatureFlagsQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { if (!await HasPermission(request.IdentityAddress, cancellationToken)) throw new NotFoundException(nameof(Identity)); var featureFlags = await _identityRepository.ListFeatureFlagsOfIdentity(request.IdentityAddress, cancellationToken); - return new ListFeatureFlagsResponse(featureFlags); + return new Response(featureFlags); } private async Task HasPermission(IdentityAddress peerAddress, CancellationToken cancellationToken) diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Query.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Query.cs index ba8a4717eb..1c115d8293 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Query.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Query.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListFeatureFlags; -public class ListFeatureFlagsQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListFeatureFlagsQuery")] +public class Query : IRequest { public required string IdentityAddress { get; init; } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Response.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Response.cs index effb9d2f4d..964cfb8eef 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Response.cs @@ -2,9 +2,10 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListFeatureFlags; -public class ListFeatureFlagsResponse : Dictionary +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListFeatureFlagsResponse")] +public class Response : Dictionary { - public ListFeatureFlagsResponse(FeatureFlagSet featureFlags) + public Response(FeatureFlagSet featureFlags) { foreach (var featureFlag in featureFlags) { diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Validator.cs index ee3d29fc7a..73e7dacd65 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListFeatureFlags; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.IdentityAddress).ValidId(); + RuleFor(x => x.IdentityAddress).ValidId(); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Handler.cs index 768b29c265..d93a9e3403 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Handler.cs @@ -5,7 +5,7 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListIdentities; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IIdentitiesRepository _identitiesRepository; @@ -14,12 +14,12 @@ public Handler(IIdentitiesRepository repository) _identitiesRepository = repository; } - public async Task Handle(ListIdentitiesQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { Expression> filter = i => (request.Addresses == null || request.Addresses.Contains(i.Address)) && (request.Status == null || i.Status == request.Status); var identities = await _identitiesRepository.List(filter, cancellationToken); - return new ListIdentitiesResponse(identities); + return new Response(identities); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Query.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Query.cs index 53680d6e02..aea9047001 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Query.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Query.cs @@ -3,7 +3,8 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListIdentities; -public class ListIdentitiesQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListIdentitiesQuery")] +public class Query : IRequest { public required List? Addresses { get; init; } public required IdentityStatus? Status { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Response.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Response.cs index e81904fb80..a42740e41c 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Response.cs @@ -4,9 +4,10 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListIdentities; -public class ListIdentitiesResponse : CollectionResponseBase +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListIdentitiesResponse")] +public class Response : CollectionResponseBase { - public ListIdentitiesResponse(IEnumerable items) : base(items.Select(i => new IdentitySummaryDTO(i))) + public Response(IEnumerable items) : base(items.Select(i => new IdentitySummaryDTO(i))) { } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Validator.cs index c1789dd663..c051f679d8 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListIdentities; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleForEach(x => x.Addresses).ValidId(); + RuleForEach(x => x.Addresses).ValidId(); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/LogDeletionProcess/Command.cs b/Modules/Devices/src/Devices.Module/Features/Identities/LogDeletionProcess/Command.cs index b38d93eaba..4a161da6c5 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/LogDeletionProcess/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/LogDeletionProcess/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.LogDeletionProcess; -public class LogDeletionProcessCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("LogDeletionProcessCommand")] +public class Command : IRequest { public required string IdentityAddress { get; init; } public required string AggregateType { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/LogDeletionProcess/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/LogDeletionProcess/Handler.cs index cd1d82b1aa..b5a5aa495f 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/LogDeletionProcess/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/LogDeletionProcess/Handler.cs @@ -4,7 +4,7 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.LogDeletionProcess; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IIdentitiesRepository _identitiesRepository; @@ -13,7 +13,7 @@ public Handler(IIdentitiesRepository identitiesRepository) _identitiesRepository = identitiesRepository; } - public async Task Handle(LogDeletionProcessCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var auditLogEntry = IdentityDeletionProcessAuditLogEntry.DataDeleted(request.IdentityAddress, request.AggregateType); await _identitiesRepository.AddDeletionProcessAuditLogEntry(auditLogEntry); diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/LogDeletionProcess/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Identities/LogDeletionProcess/Validator.cs index 1723c8821b..200d203cb4 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/LogDeletionProcess/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/LogDeletionProcess/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.LogDeletionProcess; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.IdentityAddress).ValidId(); + RuleFor(x => x.IdentityAddress).ValidId(); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/SendDeletionProcessGracePeriodReminders/Command.cs b/Modules/Devices/src/Devices.Module/Features/Identities/SendDeletionProcessGracePeriodReminders/Command.cs index 101047c781..4ce47c79a8 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/SendDeletionProcessGracePeriodReminders/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/SendDeletionProcessGracePeriodReminders/Command.cs @@ -2,4 +2,5 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.SendDeletionProcessGracePeriodReminders; -public class SendDeletionProcessGracePeriodRemindersCommand : IRequest; +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("SendDeletionProcessGracePeriodRemindersCommand")] +public class Command : IRequest; diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/SendDeletionProcessGracePeriodReminders/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/SendDeletionProcessGracePeriodReminders/Handler.cs index d70e48a7e8..37862c0101 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/SendDeletionProcessGracePeriodReminders/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/SendDeletionProcessGracePeriodReminders/Handler.cs @@ -9,7 +9,7 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.SendDeletionProcessGracePeriodReminders; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IIdentitiesRepository _identitiesRepository; private readonly IPushNotificationSender _pushSender; @@ -22,7 +22,7 @@ public Handler(IIdentitiesRepository identitiesRepository, IPushNotificationSend _logger = logger; } - public async Task Handle(SendDeletionProcessGracePeriodRemindersCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var identities = await _identitiesRepository.ListWithDeletionProcessInStatus(DeletionProcessStatus.Active, cancellationToken, track: true); diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Command.cs b/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Command.cs index d1d411c7b3..1bb83e1065 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.StartDeletionProcess; -public class StartDeletionProcessCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("StartDeletionProcessCommand")] +public class Command : IRequest { public double? LengthOfGracePeriodInDays { get; init; } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Endpoint.cs index e7017318b1..6e672e2fe0 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Endpoint.cs @@ -13,14 +13,14 @@ internal static class Endpoint public static RouteGroupBuilder MapStartDeletionProcessEndpoint(this RouteGroupBuilder group) { group.MapPost("", Handle) - .Produces>(StatusCodes.Status201Created) + .Produces>(StatusCodes.Status201Created) .Produces(StatusCodes.Status400BadRequest); return group; } - private static async Task Handle([FromBody] StartDeletionProcessCommand? request, IMediator mediator, CancellationToken cancellationToken) + private static async Task Handle([FromBody] Command? request, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(request ?? new StartDeletionProcessCommand(), cancellationToken); + var response = await mediator.Send(request ?? new Command(), cancellationToken); return EnvelopeHttpResults.Created("", response); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Handler.cs index caf2bbdfce..fb7cbc6062 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Handler.cs @@ -10,7 +10,7 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.StartDeletionProcess; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IIdentitiesRepository _identitiesRepository; private readonly IUserContext _userContext; @@ -23,7 +23,7 @@ public Handler(IIdentitiesRepository identitiesRepository, IUserContext userCont _notificationSender = notificationSender; } - public async Task Handle(StartDeletionProcessCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var identity = await _identitiesRepository.Get(_userContext.GetAddress(), cancellationToken, true) ?? throw new NotFoundException(nameof(Identity)); @@ -44,6 +44,6 @@ await _notificationSender.SendNotification( cancellationToken ); - return new StartDeletionProcessResponse(deletionProcess); + return new Response(deletionProcess); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Response.cs b/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Response.cs index 42e8709037..fd5b1ff912 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Response.cs @@ -3,9 +3,10 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.StartDeletionProcess; -public class StartDeletionProcessResponse : IdentityDeletionProcessOverviewDTO +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("StartDeletionProcessResponse")] +public class Response : IdentityDeletionProcessOverviewDTO { - public StartDeletionProcessResponse(IdentityDeletionProcess deletionProcess) : base(deletionProcess) + public Response(IdentityDeletionProcess deletionProcess) : base(deletionProcess) { } } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/TriggerRipeDeletionProcesses/Command.cs b/Modules/Devices/src/Devices.Module/Features/Identities/TriggerRipeDeletionProcesses/Command.cs index 75048a3d40..eb5c210030 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/TriggerRipeDeletionProcesses/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/TriggerRipeDeletionProcesses/Command.cs @@ -2,4 +2,5 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.TriggerRipeDeletionProcesses; -public class TriggerRipeDeletionProcessesCommand : IRequest; +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("TriggerRipeDeletionProcessesCommand")] +public class Command : IRequest; diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/TriggerRipeDeletionProcesses/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/TriggerRipeDeletionProcesses/Handler.cs index 570dfc328d..b6dba00dc0 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/TriggerRipeDeletionProcesses/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/TriggerRipeDeletionProcesses/Handler.cs @@ -5,7 +5,7 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.TriggerRipeDeletionProcesses; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IIdentitiesRepository _identitiesRepository; @@ -14,11 +14,11 @@ public Handler(IIdentitiesRepository identitiesRepository) _identitiesRepository = identitiesRepository; } - public async Task Handle(TriggerRipeDeletionProcessesCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var identities = await _identitiesRepository.List(Identity.IsReadyForDeletion(), cancellationToken, track: true); - var response = new TriggerRipeDeletionProcessesResponse(); + var response = new Response(); foreach (var identity in identities) { diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/TriggerRipeDeletionProcesses/Response.cs b/Modules/Devices/src/Devices.Module/Features/Identities/TriggerRipeDeletionProcesses/Response.cs index 7dd82897ad..dbe4b18e27 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/TriggerRipeDeletionProcesses/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/TriggerRipeDeletionProcesses/Response.cs @@ -3,14 +3,15 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.TriggerRipeDeletionProcesses; -public class TriggerRipeDeletionProcessesResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("TriggerRipeDeletionProcessesResponse")] +public class Response { - public TriggerRipeDeletionProcessesResponse() + public Response() { Results = new Dictionary>(); } - public TriggerRipeDeletionProcessesResponse(Dictionary> results) + public Response(Dictionary> results) { Results = results; } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/UpdateIdentity/Command.cs b/Modules/Devices/src/Devices.Module/Features/Identities/UpdateIdentity/Command.cs index 4af4204a91..b679c1a663 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/UpdateIdentity/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/UpdateIdentity/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.UpdateIdentity; -public class UpdateIdentityCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("UpdateIdentityCommand")] +public class Command : IRequest { public required string Address { get; init; } public required string TierId { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/UpdateIdentity/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/UpdateIdentity/Handler.cs index e3e281b717..46c4a444e1 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/UpdateIdentity/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/UpdateIdentity/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.UpdateIdentity; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IIdentitiesRepository _identitiesRepository; private readonly ITiersRepository _tiersRepository; @@ -17,7 +17,7 @@ public Handler(IIdentitiesRepository identitiesRepository, ITiersRepository tier _tiersRepository = tiersRepository; } - public async Task Handle(UpdateIdentityCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var newTierIdResult = TierId.Create(request.TierId); var identity = await _identitiesRepository.Get(request.Address, cancellationToken, track: true) ?? throw new NotFoundException(nameof(Identity)); diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/UpdateIdentity/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Identities/UpdateIdentity/Validator.cs index 993cbb6925..f7bc092c34 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/UpdateIdentity/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/UpdateIdentity/Validator.cs @@ -5,11 +5,11 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.UpdateIdentity; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.Address).ValidId(); - RuleFor(c => c.TierId).ValidId(); + RuleFor(x => x.Address).ValidId(); + RuleFor(c => c.TierId).ValidId(); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Command.cs b/Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Command.cs index ec2efd98df..98f630a92c 100644 --- a/Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Devices.Module.Features.Notifications.SendNotification; -public class SendNotificationCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("SendNotificationCommand")] +public class Command : IRequest { public required string[] Recipients { get; init; } public required string Code { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Endpoint.cs index e647d2f421..a566bb1eec 100644 --- a/Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Endpoint.cs @@ -18,7 +18,7 @@ public static RouteGroupBuilder MapSendNotificationEndpoint(this RouteGroupBuild return group; } - private static async Task Handle([FromBody] SendNotificationCommand request, IMediator mediator, CancellationToken cancellationToken) + private static async Task Handle([FromBody] Command request, IMediator mediator, CancellationToken cancellationToken) { if (request.Recipients == null || request.Code == null) throw new BadHttpRequestException("Required request fields must not be null."); diff --git a/Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Handler.cs index c3fdaf8fad..afdad2c42e 100644 --- a/Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Handler.cs @@ -8,7 +8,7 @@ namespace Backbone.Modules.Devices.Module.Features.Notifications.SendNotification; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IPushNotificationSender _pushNotificationSender; private readonly IRelationshipsRepository _relationshipsRepository; @@ -24,7 +24,7 @@ public Handler(IPushNotificationSender pushNotificationSender, IRelationshipsRep _notifications = applicationConfiguration.Value.Notifications; } - public async Task Handle(SendNotificationCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var parsedRecipients = request.Recipients.Select(IdentityAddress.ParseUnsafe).ToArray(); @@ -39,7 +39,7 @@ public async Task Handle(SendNotificationCommand request, CancellationToken canc await _pushNotificationSender.SendNotification(notificationId, parsedNotificationTexts, pushNotificationFilter, cancellationToken); } - private ApplicationConfiguration.NotificationTextsConfiguration GetNotificationFromConfigurationByCode(SendNotificationCommand request) + private ApplicationConfiguration.NotificationTextsConfiguration GetNotificationFromConfigurationByCode(Command request) { var textFromConfiguration = _notifications?.Texts.FirstOrDefault(t => t.Code == request.Code); diff --git a/Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Validator.cs index 3146f7301e..8c3ca9eeb8 100644 --- a/Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Validator.cs @@ -6,12 +6,12 @@ namespace Backbone.Modules.Devices.Module.Features.Notifications.SendNotification; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { RuleFor(x => x.Code).DetailedNotEmpty(); RuleFor(x => x.Recipients.Length).InclusiveBetween(1, 100).WithErrorCode(GenericApplicationErrors.Validation.InvalidPropertyValue().Code); - RuleForEach(x => x.Recipients).ValidId(); + RuleForEach(x => x.Recipients).ValidId(); } } diff --git a/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeleteDeviceRegistration/Command.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeleteDeviceRegistration/Command.cs index 543b763e4b..cdd26e5ff9 100644 --- a/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeleteDeviceRegistration/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeleteDeviceRegistration/Command.cs @@ -2,4 +2,5 @@ namespace Backbone.Modules.Devices.Module.Features.PushNotifications.DeleteDeviceRegistration; -public class DeleteDeviceRegistrationCommand : IRequest; +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteDeviceRegistrationCommand")] +public class Command : IRequest; diff --git a/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeleteDeviceRegistration/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeleteDeviceRegistration/Endpoint.cs index 11bea107c9..df78dfa0fa 100644 --- a/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeleteDeviceRegistration/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeleteDeviceRegistration/Endpoint.cs @@ -19,7 +19,7 @@ public static RouteGroupBuilder MapDeleteDeviceRegistrationEndpoint(this RouteGr private static async Task Handle(IMediator mediator, CancellationToken cancellationToken) { - await mediator.Send(new DeleteDeviceRegistrationCommand(), cancellationToken); + await mediator.Send(new Command(), cancellationToken); return Results.NoContent(); } } diff --git a/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeleteDeviceRegistration/Handler.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeleteDeviceRegistration/Handler.cs index 3ed6a43d85..6aa35a00a9 100644 --- a/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeleteDeviceRegistration/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeleteDeviceRegistration/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Devices.Module.Features.PushNotifications.DeleteDeviceRegistration; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IPushNotificationRegistrationService _pushRegistrationService; private readonly DeviceId _activeDevice; @@ -17,7 +17,7 @@ public Handler(IPushNotificationRegistrationService pushRegistrationService, IUs _activeDevice = userContext.GetDeviceId(); } - public async Task Handle(DeleteDeviceRegistrationCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { await _pushRegistrationService.DeleteRegistration(_activeDevice, cancellationToken); } diff --git a/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeletePnsRegistrationsOfIdentity/Command.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeletePnsRegistrationsOfIdentity/Command.cs index fcf5716963..fa07501d5a 100644 --- a/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeletePnsRegistrationsOfIdentity/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeletePnsRegistrationsOfIdentity/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Devices.Module.Features.PushNotifications.DeletePnsRegistrationsOfIdentity; -public class DeletePnsRegistrationsOfIdentityCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeletePnsRegistrationsOfIdentityCommand")] +public class Command : IRequest { public required string IdentityAddress { get; init; } } diff --git a/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeletePnsRegistrationsOfIdentity/Handler.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeletePnsRegistrationsOfIdentity/Handler.cs index 733d8bd610..b35ae1355a 100644 --- a/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeletePnsRegistrationsOfIdentity/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeletePnsRegistrationsOfIdentity/Handler.cs @@ -4,7 +4,7 @@ namespace Backbone.Modules.Devices.Module.Features.PushNotifications.DeletePnsRegistrationsOfIdentity; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IPnsRegistrationsRepository _pnsRegistrationRepository; @@ -13,7 +13,7 @@ public Handler(IPnsRegistrationsRepository pnsRegistrationRepository) _pnsRegistrationRepository = pnsRegistrationRepository; } - public async Task Handle(DeletePnsRegistrationsOfIdentityCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { await _pnsRegistrationRepository.Delete(PnsRegistration.HasAddress(request.IdentityAddress), cancellationToken); } diff --git a/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeletePnsRegistrationsOfIdentity/Validator.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeletePnsRegistrationsOfIdentity/Validator.cs index 4961d2a028..2382ca9d06 100644 --- a/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeletePnsRegistrationsOfIdentity/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeletePnsRegistrationsOfIdentity/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Devices.Module.Features.PushNotifications.DeletePnsRegistrationsOfIdentity; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.IdentityAddress).ValidId(); + RuleFor(x => x.IdentityAddress).ValidId(); } } diff --git a/Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Command.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Command.cs index bcdeaf5329..5c69a22b5d 100644 --- a/Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Devices.Module.Features.PushNotifications.SendTestNotification; -public class SendTestNotificationCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("SendTestNotificationCommand")] +public class Command : IRequest { public required object Data { get; init; } } diff --git a/Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Endpoint.cs index 1e44351d6c..fc3a897d34 100644 --- a/Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Endpoint.cs @@ -20,7 +20,7 @@ public static RouteGroupBuilder MapSendTestNotificationEndpoint(this RouteGroupB private static async Task Handle([FromBody] object data, IMediator mediator, CancellationToken cancellationToken) { - await mediator.Send(new SendTestNotificationCommand { Data = data }, cancellationToken); + await mediator.Send(new Command { Data = data }, cancellationToken); return Results.NoContent(); } } diff --git a/Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Handler.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Handler.cs index e908b403b6..37198710a6 100644 --- a/Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Devices.Module.Features.PushNotifications.SendTestNotification; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IdentityAddress _activeIdentity; private readonly IPushNotificationSender _pushSenderService; @@ -17,7 +17,7 @@ public Handler(IUserContext userContext, IPushNotificationSender pushSenderServi _activeIdentity = userContext.GetAddress(); } - public async Task Handle(SendTestNotificationCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { await _pushSenderService.SendNotification( new TestPushNotification { Data = request.Data }, diff --git a/Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Validator.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Validator.cs index c75137a80e..5d4e2f3a92 100644 --- a/Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Validator.cs @@ -3,7 +3,7 @@ namespace Backbone.Modules.Devices.Module.Features.PushNotifications.SendTestNotification; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { diff --git a/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Command.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Command.cs index a6c264f6cd..a513964aa4 100644 --- a/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Devices.Module.Features.PushNotifications.UpdateDeviceRegistration; -public class UpdateDeviceRegistrationCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("UpdateDeviceRegistrationCommand")] +public class Command : IRequest { public required string Platform { get; init; } public required string Handle { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Endpoint.cs index 23e52d3006..f1534812e9 100644 --- a/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Endpoint.cs @@ -13,12 +13,12 @@ internal static class Endpoint public static RouteGroupBuilder MapUpdateDeviceRegistrationEndpoint(this RouteGroupBuilder group) { group.MapPut("", Handle) - .Produces>(StatusCodes.Status200OK) + .Produces>(StatusCodes.Status200OK) .Produces(StatusCodes.Status400BadRequest); return group; } - private static async Task Handle([FromBody] UpdateDeviceRegistrationCommand request, IMediator mediator, CancellationToken cancellationToken) + private static async Task Handle([FromBody] Command request, IMediator mediator, CancellationToken cancellationToken) { if (request.Platform == null || request.Handle == null || request.AppId == null) throw new BadHttpRequestException("Required request fields must not be null."); diff --git a/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Handler.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Handler.cs index dad0f74157..acba98a10e 100644 --- a/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Handler.cs @@ -10,7 +10,7 @@ namespace Backbone.Modules.Devices.Module.Features.PushNotifications.UpdateDeviceRegistration; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private const string PRODUCTION_ENVIRONMENT = "Production"; private const string DEVELOPMENT_ENVIRONMENT = "Development"; @@ -25,7 +25,7 @@ public Handler(IPushNotificationRegistrationService pushRegistrationService, IUs _activeDevice = userContext.GetDeviceId(); } - public async Task Handle(UpdateDeviceRegistrationCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var parseHandleResult = PnsHandle.Parse(DeserializePlatform(request.Platform), request.Handle); @@ -35,7 +35,7 @@ public async Task Handle(UpdateDeviceRegistrat var environment = DeserializeEnvironment(request.Environment ?? PRODUCTION_ENVIRONMENT); var devicePushIdentifier = await _pushRegistrationService.UpdateRegistration(_activeIdentity, _activeDevice, parseHandleResult.Value, request.AppId, environment, cancellationToken); - return new UpdateDeviceRegistrationResponse(devicePushIdentifier); + return new Response(devicePushIdentifier); } private static PushEnvironment DeserializeEnvironment(string environment) diff --git a/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Response.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Response.cs index cae004ec34..2e9affc9af 100644 --- a/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Response.cs @@ -2,9 +2,10 @@ namespace Backbone.Modules.Devices.Module.Features.PushNotifications.UpdateDeviceRegistration; -public class UpdateDeviceRegistrationResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("UpdateDeviceRegistrationResponse")] +public class Response { - public UpdateDeviceRegistrationResponse(DevicePushIdentifier devicePushIdentifier) + public Response(DevicePushIdentifier devicePushIdentifier) { DevicePushIdentifier = devicePushIdentifier; } diff --git a/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Validator.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Validator.cs index 8fdc726789..f24c147b0c 100644 --- a/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Validator.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Devices.Module.Features.PushNotifications.UpdateDeviceRegistration; // ReSharper disable once UnusedMember.Global -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { diff --git a/Modules/Devices/src/Devices.Module/Features/Tiers/CreateQueuedForDeletionTier/Command.cs b/Modules/Devices/src/Devices.Module/Features/Tiers/CreateQueuedForDeletionTier/Command.cs index 658cbcac25..aa40cb05b2 100644 --- a/Modules/Devices/src/Devices.Module/Features/Tiers/CreateQueuedForDeletionTier/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Tiers/CreateQueuedForDeletionTier/Command.cs @@ -2,4 +2,5 @@ namespace Backbone.Modules.Devices.Module.Features.Tiers.CreateQueuedForDeletionTier; -public class CreateQueuedForDeletionTierCommand : IRequest; +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateQueuedForDeletionTierCommand")] +public class Command : IRequest; diff --git a/Modules/Devices/src/Devices.Module/Features/Tiers/CreateQueuedForDeletionTier/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Tiers/CreateQueuedForDeletionTier/Handler.cs index f310460554..177f21c520 100644 --- a/Modules/Devices/src/Devices.Module/Features/Tiers/CreateQueuedForDeletionTier/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Tiers/CreateQueuedForDeletionTier/Handler.cs @@ -4,7 +4,7 @@ namespace Backbone.Modules.Devices.Module.Features.Tiers.CreateQueuedForDeletionTier; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly ITiersRepository _tiersRepository; @@ -13,7 +13,7 @@ public Handler(ITiersRepository tiersRepository) _tiersRepository = tiersRepository; } - public async Task Handle(CreateQueuedForDeletionTierCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { if (!await _tiersRepository.ExistsWithId(TierId.Create(Tier.QUEUED_FOR_DELETION.Id).Value, CancellationToken.None)) await _tiersRepository.AddAsync(Tier.QUEUED_FOR_DELETION, cancellationToken); diff --git a/Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Command.cs b/Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Command.cs index 3589d0dca8..fdc85e6a6d 100644 --- a/Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Devices.Module.Features.Tiers.CreateTier; -public class CreateTierCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateTierCommand")] +public class Command : IRequest { public required string Name { get; init; } } diff --git a/Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Handler.cs index 772c24d59e..b2f847e259 100644 --- a/Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Devices.Module.Features.Tiers.CreateTier; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly ITiersRepository _tierRepository; private readonly ILogger _logger; @@ -17,7 +17,7 @@ public Handler(ITiersRepository tierRepository, ILogger logger) _logger = logger; } - public async Task Handle(CreateTierCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var tierName = TierName.Create(request.Name); @@ -31,7 +31,7 @@ public async Task Handle(CreateTierCommand request, Cancella _logger.CreatedTier(tier.Id.Value, tier.Name.Value); - return new CreateTierResponse(tier.Id, tier.Name); + return new Response(tier.Id, tier.Name); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Response.cs b/Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Response.cs index b02b2e1921..246febe8dc 100644 --- a/Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Response.cs @@ -2,9 +2,10 @@ namespace Backbone.Modules.Devices.Module.Features.Tiers.CreateTier; -public class CreateTierResponse : TierDTO +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateTierResponse")] +public class Response : TierDTO { - public CreateTierResponse(string id, string name) : base(id, name) + public Response(string id, string name) : base(id, name) { } } diff --git a/Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Validator.cs index fb4f0bc4a4..8983f21680 100644 --- a/Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Validator.cs @@ -4,7 +4,7 @@ namespace Backbone.Modules.Devices.Module.Features.Tiers.CreateTier; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { diff --git a/Modules/Devices/src/Devices.Module/Features/Tiers/DeleteTier/Command.cs b/Modules/Devices/src/Devices.Module/Features/Tiers/DeleteTier/Command.cs index 1fcc9e734e..40b35efc74 100644 --- a/Modules/Devices/src/Devices.Module/Features/Tiers/DeleteTier/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Tiers/DeleteTier/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Devices.Module.Features.Tiers.DeleteTier; -public class DeleteTierCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteTierCommand")] +public class Command : IRequest { public required string TierId { get; init; } } diff --git a/Modules/Devices/src/Devices.Module/Features/Tiers/DeleteTier/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Tiers/DeleteTier/Handler.cs index 4d4763c7f0..9a9871acd2 100644 --- a/Modules/Devices/src/Devices.Module/Features/Tiers/DeleteTier/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Tiers/DeleteTier/Handler.cs @@ -9,7 +9,7 @@ namespace Backbone.Modules.Devices.Module.Features.Tiers.DeleteTier; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly ITiersRepository _tiersRepository; private readonly IEventBus _eventBus; @@ -20,7 +20,7 @@ public Handler(ITiersRepository tiersRepository, IEventBus eventBus) _eventBus = eventBus; } - public async Task Handle(DeleteTierCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var tierIdResult = TierId.Create(request.TierId); diff --git a/Modules/Devices/src/Devices.Module/Features/Tiers/DeleteTier/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Tiers/DeleteTier/Validator.cs index 7d6a76bd1d..acadcb1338 100644 --- a/Modules/Devices/src/Devices.Module/Features/Tiers/DeleteTier/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Tiers/DeleteTier/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Devices.Module.Features.Tiers.DeleteTier; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(c => c.TierId).ValidId(); + RuleFor(c => c.TierId).ValidId(); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Tiers/ListTiers/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Tiers/ListTiers/Handler.cs index c2eb88a787..d26b66dd72 100644 --- a/Modules/Devices/src/Devices.Module/Features/Tiers/ListTiers/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Tiers/ListTiers/Handler.cs @@ -3,7 +3,7 @@ namespace Backbone.Modules.Devices.Module.Features.Tiers.ListTiers; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly ITiersRepository _tierRepository; @@ -12,9 +12,9 @@ public Handler(ITiersRepository repository) _tierRepository = repository; } - public async Task Handle(ListTiersQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var dbPaginationResult = await _tierRepository.List(request.PaginationFilter, cancellationToken); - return new ListTiersResponse(dbPaginationResult, request.PaginationFilter); + return new Response(dbPaginationResult, request.PaginationFilter); } } diff --git a/Modules/Devices/src/Devices.Module/Features/Tiers/ListTiers/Query.cs b/Modules/Devices/src/Devices.Module/Features/Tiers/ListTiers/Query.cs index b0ff553bf5..80cb6d4575 100644 --- a/Modules/Devices/src/Devices.Module/Features/Tiers/ListTiers/Query.cs +++ b/Modules/Devices/src/Devices.Module/Features/Tiers/ListTiers/Query.cs @@ -3,7 +3,8 @@ namespace Backbone.Modules.Devices.Module.Features.Tiers.ListTiers; -public class ListTiersQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListTiersQuery")] +public class Query : IRequest { public required PaginationFilter PaginationFilter { get; init; } } diff --git a/Modules/Devices/src/Devices.Module/Features/Tiers/ListTiers/Response.cs b/Modules/Devices/src/Devices.Module/Features/Tiers/ListTiers/Response.cs index 1a657fb2c3..d033f10a4c 100644 --- a/Modules/Devices/src/Devices.Module/Features/Tiers/ListTiers/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Tiers/ListTiers/Response.cs @@ -5,9 +5,10 @@ namespace Backbone.Modules.Devices.Module.Features.Tiers.ListTiers; -public class ListTiersResponse : PagedResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListTiersResponse")] +public class Response : PagedResponse { - public ListTiersResponse(DbPaginationResult dbPaginationResult, PaginationFilter previousPaginationFilter) : base(dbPaginationResult.ItemsOnPage.Select(el => new TierDTO(el.Id, el.Name)), + public Response(DbPaginationResult dbPaginationResult, PaginationFilter previousPaginationFilter) : base(dbPaginationResult.ItemsOnPage.Select(el => new TierDTO(el.Id, el.Name)), previousPaginationFilter, dbPaginationResult.TotalNumberOfItems) { } diff --git a/Modules/Devices/src/Devices.Module/Features/Users/SeedTestUsers/Command.cs b/Modules/Devices/src/Devices.Module/Features/Users/SeedTestUsers/Command.cs index 1c7b73b612..9885b114bc 100644 --- a/Modules/Devices/src/Devices.Module/Features/Users/SeedTestUsers/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Users/SeedTestUsers/Command.cs @@ -2,4 +2,5 @@ namespace Backbone.Modules.Devices.Module.Features.Users.SeedTestUsers; -public class SeedTestUsersCommand : IRequest; +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("SeedTestUsersCommand")] +public class Command : IRequest; diff --git a/Modules/Devices/src/Devices.Module/Features/Users/SeedTestUsers/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Users/SeedTestUsers/Handler.cs index e71589fa34..f6902a8b5a 100644 --- a/Modules/Devices/src/Devices.Module/Features/Users/SeedTestUsers/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Users/SeedTestUsers/Handler.cs @@ -8,7 +8,7 @@ namespace Backbone.Modules.Devices.Module.Features.Users.SeedTestUsers; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly ApplicationConfiguration _applicationConfiguration; private readonly IIdentitiesRepository _identitiesRepository; @@ -23,7 +23,7 @@ public Handler(IIdentitiesRepository identitiesRepository, ITiersRepository tier _applicationConfiguration = applicationOptions.Value; } - public async Task Handle(SeedTestUsersCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { _cancellationToken = cancellationToken; _basicTier = (await _tiersRepository.GetBasicTier(cancellationToken))!; diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Devices/Commands/DeleteDevice/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Devices/Commands/DeleteDevice/ValidatorTests.cs index 7452e844d4..3c03d6c037 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Devices/Commands/DeleteDevice/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Devices/Commands/DeleteDevice/ValidatorTests.cs @@ -1,3 +1,4 @@ +using DeleteDeviceSlice = Backbone.Modules.Devices.Module.Features.Devices.DeleteDevice; using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Devices.Module.Features.Devices.DeleteDevice; using Backbone.UnitTestTools.FluentValidation; @@ -14,7 +15,7 @@ public void Happy_path() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new DeleteDeviceCommand { DeviceId = DeviceId.New() }); + var validationResult = validator.TestValidate(new DeleteDeviceSlice.Command { DeviceId = DeviceId.New() }); // Assert validationResult.ShouldNotHaveAnyValidationErrors(); @@ -27,9 +28,9 @@ public void Fails_when_device_id_is_invalid() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new DeleteDeviceCommand { DeviceId = "some-invalid-device-id" }); + var validationResult = validator.TestValidate(new DeleteDeviceSlice.Command { DeviceId = "some-invalid-device-id" }); // Assert - validationResult.ShouldHaveValidationErrorForId(nameof(DeleteDeviceCommand.DeviceId)); + validationResult.ShouldHaveValidationErrorForId(nameof(DeleteDeviceSlice.Command.DeviceId)); } } diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Devices/Queries/ListDevices/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Devices/Queries/ListDevices/ValidatorTests.cs index 4e42f89a4a..32363d6bf5 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Devices/Queries/ListDevices/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Devices/Queries/ListDevices/ValidatorTests.cs @@ -1,3 +1,4 @@ +using ListDevicesSlice = Backbone.Modules.Devices.Module.Features.Devices.ListDevices; using Backbone.BuildingBlocks.Application.Pagination; using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Devices.Module.Features.Devices.ListDevices; @@ -15,7 +16,7 @@ public void Happy_path() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new ListDevicesQuery { PaginationFilter = new PaginationFilter(), Ids = [DeviceId.New().Value] }); + var validationResult = validator.TestValidate(new ListDevicesSlice.Query { PaginationFilter = new PaginationFilter(), Ids = [DeviceId.New().Value] }); // Assert validationResult.ShouldNotHaveAnyValidationErrors(); @@ -28,11 +29,11 @@ public void Fails_when_device_id_is_invalid() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new ListDevicesQuery { PaginationFilter = new PaginationFilter(), Ids = ["some-invalid-device-id"] }); + var validationResult = validator.TestValidate(new ListDevicesSlice.Query { PaginationFilter = new PaginationFilter(), Ids = ["some-invalid-device-id"] }); // Assert validationResult.ShouldHaveValidationErrorForIdInCollection( - collectionWithInvalidId: nameof(ListDevicesQuery.Ids), + collectionWithInvalidId: nameof(ListDevicesSlice.Query.Ids), indexWithInvalidId: 0); } } diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/DomainEvents/Incoming/AnnouncementCreatedDomainEventHandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/DomainEvents/Incoming/AnnouncementCreatedDomainEventHandlerTests.cs index e88fc2cf90..f964e65366 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/DomainEvents/Incoming/AnnouncementCreatedDomainEventHandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/DomainEvents/Incoming/AnnouncementCreatedDomainEventHandlerTests.cs @@ -1,6 +1,6 @@ +using AnnouncementCreated = Backbone.Modules.Devices.Module.Features.DomainEvents.AnnouncementCreated; using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.Modules.Announcements.Contracts.DomainEvents; -using Backbone.Modules.Devices.Module.Features.DomainEvents.AnnouncementCreated; using FakeItEasy; namespace Backbone.Modules.Devices.Module.Tests.Tests.DomainEvents.Incoming; @@ -12,7 +12,7 @@ public async Task Sends_push_notification_for_announcement() { // Arrange var mockPushSenderService = A.Fake(); - var handler = new AnnouncementCreatedDomainEventHandler(mockPushSenderService); + var handler = new AnnouncementCreated.Handler(mockPushSenderService); // Act await handler.Handle(new AnnouncementCreatedDomainEvent @@ -31,7 +31,7 @@ public async Task Does_not_send_a_push_notification_for_silent_announcement() { // Arrange var mockPushSenderService = A.Fake(); - var handler = new AnnouncementCreatedDomainEventHandler(mockPushSenderService); + var handler = new AnnouncementCreated.Handler(mockPushSenderService); // Act await handler.Handle(new AnnouncementCreatedDomainEvent diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/DomainEvents/Incoming/ExternalEventCreatedDomainEventHandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/DomainEvents/Incoming/ExternalEventCreatedDomainEventHandlerTests.cs index ded70cebc1..7a25afad7e 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/DomainEvents/Incoming/ExternalEventCreatedDomainEventHandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/DomainEvents/Incoming/ExternalEventCreatedDomainEventHandlerTests.cs @@ -1,5 +1,5 @@ +using ExternalEventCreated = Backbone.Modules.Devices.Module.Features.DomainEvents.ExternalEventCreated; using Backbone.BuildingBlocks.Application.PushNotifications; -using Backbone.Modules.Devices.Module.Features.DomainEvents.ExternalEventCreated; using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.ExternalEvents; using Backbone.Modules.Synchronization.Contracts.DomainEvents; @@ -17,7 +17,7 @@ public async Task Sends_a_push_notification_to_the_owner_of_the_external_event() var fakeIdentitiesRepository = A.Fake(); var identity = TestDataGenerator.CreateIdentity(); - var handler = new ExternalEventCreatedDomainEventHandler(mockPushSender, fakeIdentitiesRepository); + var handler = new ExternalEventCreated.Handler(mockPushSender, fakeIdentitiesRepository); var externalEventOwner = CreateRandomIdentityAddress(); @@ -42,7 +42,7 @@ public async Task Does_not_send_push_notification_if_owner_is_in_status_to_be_de var fakeIdentitiesRepository = A.Fake(); var identity = TestDataGenerator.CreateIdentity(); - var handler = new ExternalEventCreatedDomainEventHandler(mockPushSender, fakeIdentitiesRepository); + var handler = new ExternalEventCreated.Handler(mockPushSender, fakeIdentitiesRepository); var externalEventOwner = CreateRandomIdentityAddress(); @@ -69,7 +69,7 @@ public async Task Does_not_send_a_push_notification_when_delivery_of_the_externa var fakeIdentitiesRepository = A.Fake(); var identity = TestDataGenerator.CreateIdentity(); - var handler = new ExternalEventCreatedDomainEventHandler(mockPushSender, fakeIdentitiesRepository); + var handler = new ExternalEventCreated.Handler(mockPushSender, fakeIdentitiesRepository); var externalEventOwner = CreateRandomIdentityAddress(); diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/DomainEvents/Incoming/TokenLockedDomainEventHandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/DomainEvents/Incoming/TokenLockedDomainEventHandlerTests.cs index 832f3dcd9b..0c1d23f3dd 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/DomainEvents/Incoming/TokenLockedDomainEventHandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/DomainEvents/Incoming/TokenLockedDomainEventHandlerTests.cs @@ -1,6 +1,6 @@ +using TokenLocked = Backbone.Modules.Devices.Module.Features.DomainEvents.TokenLocked; using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Module.Features.DomainEvents.TokenLocked; using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.Tokens; using Backbone.Modules.Tokens.Contracts.DomainEvents; @@ -20,7 +20,7 @@ public async Task Sends_a_push_notification() A.CallTo(() => fakeRepository.Get(A._, A._, A._)).Returns(identity); - var handler = new TokenLockedDomainEventHandler(mockPushSender, fakeRepository); + var handler = new TokenLocked.Handler(mockPushSender, fakeRepository); var domainEvent = new TokenLockedDomainEvent { TokenId = "TOK00000000000000001", CreatedBy = identity.Address }; // Act diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/CancelDeletionProcess/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/CancelDeletionProcess/HandlerTests.cs index 48334d122e..68859dfcd1 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/CancelDeletionProcess/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/CancelDeletionProcess/HandlerTests.cs @@ -1,3 +1,4 @@ +using CancelDeletionProcessSlice = Backbone.Modules.Devices.Module.Features.Identities.CancelDeletionProcess; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.BuildingBlocks.Application.PushNotifications; @@ -31,7 +32,7 @@ public async Task Happy_path() var handler = CreateHandler(mockIdentitiesRepository, fakeUserContext, mockPushNotificationSender); // Act - var response = await handler.Handle(new CancelDeletionProcessCommand { DeletionProcessId = deletionProcess.Id }, CancellationToken.None); + var response = await handler.Handle(new CancelDeletionProcessSlice.Command { DeletionProcessId = deletionProcess.Id }, CancellationToken.None); // Assert A.CallTo(() => mockIdentitiesRepository.Update(A.That.Matches(i => @@ -65,7 +66,7 @@ public async Task Cannot_cancel_when_given_identity_does_not_exist() var handler = CreateHandler(identitiesRepository, userContext); // Act - var acting = async () => await handler.Handle(new CancelDeletionProcessCommand { DeletionProcessId = IdentityDeletionProcessId.Generate() }, CancellationToken.None); + var acting = async () => await handler.Handle(new CancelDeletionProcessSlice.Command { DeletionProcessId = IdentityDeletionProcessId.Generate() }, CancellationToken.None); // Assert var exception = await acting.ShouldThrowAsync(); diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/CancelDeletionProcess/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/CancelDeletionProcess/ValidatorTests.cs index 05f97eef12..6ea27e88f3 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/CancelDeletionProcess/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/CancelDeletionProcess/ValidatorTests.cs @@ -1,3 +1,4 @@ +using CancelDeletionProcessSlice = Backbone.Modules.Devices.Module.Features.Identities.CancelDeletionProcess; using Backbone.Modules.Devices.Module.Features.Identities.CancelDeletionProcess; using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.UnitTestTools.FluentValidation; @@ -14,7 +15,7 @@ public void Happy_path() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new CancelDeletionProcessCommand { DeletionProcessId = IdentityDeletionProcessId.Generate() }); + var validationResult = validator.TestValidate(new CancelDeletionProcessSlice.Command { DeletionProcessId = IdentityDeletionProcessId.Generate() }); // Assert validationResult.ShouldNotHaveAnyValidationErrors(); @@ -27,9 +28,9 @@ public void Fails_when_deletion_process_id_is_invalid() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new CancelDeletionProcessCommand { DeletionProcessId = "invalid-deletion-process-id" }); + var validationResult = validator.TestValidate(new CancelDeletionProcessSlice.Command { DeletionProcessId = "invalid-deletion-process-id" }); // Assert - validationResult.ShouldHaveValidationErrorForId(nameof(CancelDeletionProcessCommand.DeletionProcessId)); + validationResult.ShouldHaveValidationErrorForId(nameof(CancelDeletionProcessSlice.Command.DeletionProcessId)); } } diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/DeleteIdentity/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/DeleteIdentity/ValidatorTests.cs index 64a246715f..d1d8dc0a7c 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/DeleteIdentity/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/DeleteIdentity/ValidatorTests.cs @@ -1,3 +1,4 @@ +using DeleteIdentitySlice = Backbone.Modules.Devices.Module.Features.Identities.DeleteIdentity; using Backbone.Modules.Devices.Module.Features.Identities.DeleteIdentity; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; @@ -13,7 +14,7 @@ public void Happy_path() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new DeleteIdentityCommand { IdentityAddress = CreateRandomIdentityAddress() }); + var validationResult = validator.TestValidate(new DeleteIdentitySlice.Command { IdentityAddress = CreateRandomIdentityAddress() }); // Assert validationResult.ShouldNotHaveAnyValidationErrors(); @@ -26,9 +27,9 @@ public void Fails_when_identity_address_is_invalid() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new DeleteIdentityCommand { IdentityAddress = "invalid-identity-address" }); + var validationResult = validator.TestValidate(new DeleteIdentitySlice.Command { IdentityAddress = "invalid-identity-address" }); // Assert - validationResult.ShouldHaveValidationErrorForId(nameof(DeleteIdentityCommand.IdentityAddress)); + validationResult.ShouldHaveValidationErrorForId(nameof(DeleteIdentitySlice.Command.IdentityAddress)); } } diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/LogDeletionProcess/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/LogDeletionProcess/ValidatorTests.cs index a9a63aeecc..0520820606 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/LogDeletionProcess/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/LogDeletionProcess/ValidatorTests.cs @@ -1,3 +1,4 @@ +using LogDeletionProcessSlice = Backbone.Modules.Devices.Module.Features.Identities.LogDeletionProcess; using Backbone.Modules.Devices.Module.Features.Identities.LogDeletionProcess; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; @@ -13,7 +14,7 @@ public void Happy_path() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new LogDeletionProcessCommand + var validationResult = validator.TestValidate(new LogDeletionProcessSlice.Command { IdentityAddress = CreateRandomIdentityAddress(), AggregateType = "aggregateType" @@ -30,13 +31,13 @@ public void Fails_when_identity_address_is_invalid() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new LogDeletionProcessCommand + var validationResult = validator.TestValidate(new LogDeletionProcessSlice.Command { IdentityAddress = "invalid-identity-address", AggregateType = "aggregateType" }); // Assert - validationResult.ShouldHaveValidationErrorForId(nameof(LogDeletionProcessCommand.IdentityAddress)); + validationResult.ShouldHaveValidationErrorForId(nameof(LogDeletionProcessSlice.Command.IdentityAddress)); } } diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/SendDeletionProcessGracePeriodReminders/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/SendDeletionProcessGracePeriodReminders/HandlerTests.cs index 33632ebd44..8c3e25a378 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/SendDeletionProcessGracePeriodReminders/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/SendDeletionProcessGracePeriodReminders/HandlerTests.cs @@ -1,3 +1,4 @@ +using SendDeletionProcessGracePeriodRemindersSlice = Backbone.Modules.Devices.Module.Features.Identities.SendDeletionProcessGracePeriodReminders; using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.Modules.Devices.Module.Features.Identities.SendDeletionProcessGracePeriodReminders; using Backbone.Modules.Devices.Abstractions; @@ -24,7 +25,7 @@ public async Task No_identities_with_an_active_deletion_process_exist() var handler = CreateHandler(mockIdentitiesRepository, mockPushNotificationSender); // Act - await handler.Handle(new SendDeletionProcessGracePeriodRemindersCommand(), CancellationToken.None); + await handler.Handle(new SendDeletionProcessGracePeriodRemindersSlice.Command(), CancellationToken.None); // Assert A.CallTo(() => mockIdentitiesRepository.Update(A._, A._)) @@ -54,7 +55,7 @@ public async Task Sends_first_reminder() var handler = CreateHandler(mockIdentitiesRepository, mockPushNotificationSender); // Act - await handler.Handle(new SendDeletionProcessGracePeriodRemindersCommand(), CancellationToken.None); + await handler.Handle(new SendDeletionProcessGracePeriodRemindersSlice.Command(), CancellationToken.None); // Assert A.CallTo(() => mockPushNotificationSender.SendNotification( @@ -87,7 +88,7 @@ public async Task Sends_second_reminder() var handler = CreateHandler(mockIdentitiesRepository, mockPushNotificationSender); // Act - await handler.Handle(new SendDeletionProcessGracePeriodRemindersCommand(), CancellationToken.None); + await handler.Handle(new SendDeletionProcessGracePeriodRemindersSlice.Command(), CancellationToken.None); // Assert A.CallTo(() => mockPushNotificationSender.SendNotification( @@ -122,7 +123,7 @@ public async Task Sends_third_reminder() var handler = CreateHandler(mockIdentitiesRepository, mockPushNotificationSender); // Act - await handler.Handle(new SendDeletionProcessGracePeriodRemindersCommand(), CancellationToken.None); + await handler.Handle(new SendDeletionProcessGracePeriodRemindersSlice.Command(), CancellationToken.None); // Assert A.CallTo(() => mockPushNotificationSender.SendNotification( @@ -155,7 +156,7 @@ public async Task Does_not_send_reminder_1_when_2_has_to_be_sent_as_well() var handler = CreateHandler(mockIdentitiesRepository, mockPushNotificationSender); // Act - await handler.Handle(new SendDeletionProcessGracePeriodRemindersCommand(), CancellationToken.None); + await handler.Handle(new SendDeletionProcessGracePeriodRemindersSlice.Command(), CancellationToken.None); // Assert A.CallTo(() => mockPushNotificationSender.SendNotification( @@ -189,7 +190,7 @@ public async Task Does_not_send_reminder_1_and_2_when_3_has_to_be_sent_as_well() var handler = CreateHandler(mockIdentitiesRepository, mockPushNotificationSender); // Act - await handler.Handle(new SendDeletionProcessGracePeriodRemindersCommand(), CancellationToken.None); + await handler.Handle(new SendDeletionProcessGracePeriodRemindersSlice.Command(), CancellationToken.None); // Assert A.CallTo(() => mockPushNotificationSender.SendNotification( diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/StartDeletionProcess/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/StartDeletionProcess/HandlerTests.cs index e743d28303..1593bb68e4 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/StartDeletionProcess/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/StartDeletionProcess/HandlerTests.cs @@ -1,3 +1,4 @@ +using StartDeletionProcessSlice = Backbone.Modules.Devices.Module.Features.Identities.StartDeletionProcess; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.BuildingBlocks.Application.PushNotifications; @@ -31,7 +32,7 @@ public async Task Happy_path() var handler = CreateHandler(mockIdentitiesRepository, fakeUserContext, mockPushNotificationSender); // Act - var response = await handler.Handle(new StartDeletionProcessCommand(), CancellationToken.None); + var response = await handler.Handle(new StartDeletionProcessSlice.Command(), CancellationToken.None); // Assert response.ShouldNotBeNull(); @@ -70,7 +71,7 @@ public async Task Cannot_start_when_given_identity_does_not_exist() var handler = CreateHandler(fakeIdentitiesRepository, fakeUserContext); // Act - var acting = async () => await handler.Handle(new StartDeletionProcessCommand(), CancellationToken.None); + var acting = async () => await handler.Handle(new StartDeletionProcessSlice.Command(), CancellationToken.None); // Assert var exception = await acting.ShouldThrowAsync(); diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/UpdateDeletionProcesses/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/UpdateDeletionProcesses/HandlerTests.cs index 6ae13735b3..54744571ea 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/UpdateDeletionProcesses/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/UpdateDeletionProcesses/HandlerTests.cs @@ -1,3 +1,4 @@ +using TriggerRipeDeletionProcesses = Backbone.Modules.Devices.Module.Features.Identities.TriggerRipeDeletionProcesses; using System.Linq.Expressions; using Backbone.Modules.Devices.Module.Features.Identities.TriggerRipeDeletionProcesses; using Backbone.Modules.Devices.Abstractions; @@ -19,7 +20,7 @@ public async Task Empty_response_if_no_identities_are_past_DeletionGracePeriodEn var handler = CreateHandler(mockIdentitiesRepository); // Act - var response = await handler.Handle(new TriggerRipeDeletionProcessesCommand(), CancellationToken.None); + var response = await handler.Handle(new TriggerRipeDeletionProcesses.Command(), CancellationToken.None); // Assert response.Results.ShouldBeEmpty(); @@ -37,7 +38,7 @@ public async Task Response_contains_expected_identities() var handler = CreateHandler(identitiesRepository); // Act - var response = await handler.Handle(new TriggerRipeDeletionProcessesCommand(), CancellationToken.None); + var response = await handler.Handle(new TriggerRipeDeletionProcesses.Command(), CancellationToken.None); // Assert response.Results.ShouldHaveCount(1); @@ -58,7 +59,7 @@ public async Task Deletion_process_started_successfully() var handler = CreateHandler(identitiesRepository); // Act - var response = await handler.Handle(new TriggerRipeDeletionProcessesCommand(), CancellationToken.None); + var response = await handler.Handle(new TriggerRipeDeletionProcesses.Command(), CancellationToken.None); // Assert response.Results.ShouldHaveCount(1); diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/UpdateIdentity/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/UpdateIdentity/HandlerTests.cs index ee602f5a5b..08ac7e8ac6 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/UpdateIdentity/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/UpdateIdentity/HandlerTests.cs @@ -1,3 +1,4 @@ +using UpdateIdentitySlice = Backbone.Modules.Devices.Module.Features.Identities.UpdateIdentity; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Domain.Exceptions; using Backbone.DevelopmentKit.Identity.ValueObjects; @@ -118,9 +119,9 @@ public async Task Does_nothing_when_tiers_are_the_same() A.CallTo(() => identitiesRepository.Update(A._, A._)).MustNotHaveHappened(); } - private static UpdateIdentityCommand BuildRequest(Tier newTier, Identity identity) + private static UpdateIdentitySlice.Command BuildRequest(Tier newTier, Identity identity) { - return new UpdateIdentityCommand + return new UpdateIdentitySlice.Command { Address = identity.Address, TierId = newTier.Id.Value diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/UpdateIdentity/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/UpdateIdentity/ValidatorTests.cs index 0bcdf66170..337fb50e5a 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/UpdateIdentity/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/UpdateIdentity/ValidatorTests.cs @@ -1,3 +1,4 @@ +using UpdateIdentitySlice = Backbone.Modules.Devices.Module.Features.Identities.UpdateIdentity; using Backbone.Modules.Devices.Module.Features.Identities.UpdateIdentity; using Backbone.Modules.Devices.Domain.Aggregates.Tier; using Backbone.UnitTestTools.FluentValidation; @@ -14,7 +15,7 @@ public void Happy_path() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new UpdateIdentityCommand { Address = CreateRandomIdentityAddress(), TierId = TierId.Generate() }); + var validationResult = validator.TestValidate(new UpdateIdentitySlice.Command { Address = CreateRandomIdentityAddress(), TierId = TierId.Generate() }); // Assert validationResult.ShouldNotHaveAnyValidationErrors(); @@ -27,10 +28,10 @@ public void Fails_when_identity_address_is_invalid() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new UpdateIdentityCommand { Address = "some-invalid-address", TierId = TierId.Generate() }); + var validationResult = validator.TestValidate(new UpdateIdentitySlice.Command { Address = "some-invalid-address", TierId = TierId.Generate() }); // Assert - validationResult.ShouldHaveValidationErrorForId(nameof(UpdateIdentityCommand.Address)); + validationResult.ShouldHaveValidationErrorForId(nameof(UpdateIdentitySlice.Command.Address)); } [Fact] @@ -40,9 +41,9 @@ public void Fails_when_tier_id_is_invalid() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new UpdateIdentityCommand { Address = CreateRandomIdentityAddress(), TierId = "some-invalid-tier-id" }); + var validationResult = validator.TestValidate(new UpdateIdentitySlice.Command { Address = CreateRandomIdentityAddress(), TierId = "some-invalid-tier-id" }); // Assert - validationResult.ShouldHaveValidationErrorForId(nameof(UpdateIdentityCommand.TierId)); + validationResult.ShouldHaveValidationErrorForId(nameof(UpdateIdentitySlice.Command.TierId)); } } diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/IdentityDeleterTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/IdentityDeleterTests.cs index c869c7f9fb..297df7cf2e 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/IdentityDeleterTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/IdentityDeleterTests.cs @@ -1,6 +1,7 @@ +using DeleteIdentity = Backbone.Modules.Devices.Module.Features.Identities.DeleteIdentity; +using DeletePnsRegistrationsOfIdentity = Backbone.Modules.Devices.Module.Features.PushNotifications.DeletePnsRegistrationsOfIdentity; using Backbone.BuildingBlocks.Application.Identities; using Backbone.Modules.Devices.Module.Features.Identities.DeleteIdentity; -using Backbone.Modules.Devices.Module.Features.PushNotifications.DeletePnsRegistrationsOfIdentity; using FakeItEasy; using MediatR; @@ -21,8 +22,8 @@ public async Task Deleter_calls_correct_command() await deleter.Delete(identityAddress); // Assert - A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); - A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); + A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); + A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); } [Fact] diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessAsOwner/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessAsOwner/ValidatorTests.cs index c8bf437103..b3bec64ee2 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessAsOwner/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessAsOwner/ValidatorTests.cs @@ -1,3 +1,4 @@ +using GetDeletionProcessAsOwnerSlice = Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsOwner; using Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsOwner; using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.UnitTestTools.FluentValidation; @@ -14,7 +15,7 @@ public void Happy_path() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new GetDeletionProcessAsOwnerQuery { Id = IdentityDeletionProcessId.Generate() }); + var validationResult = validator.TestValidate(new GetDeletionProcessAsOwnerSlice.Query { Id = IdentityDeletionProcessId.Generate() }); // Assert validationResult.ShouldNotHaveAnyValidationErrors(); @@ -27,9 +28,9 @@ public void Fails_when_deletion_process_id_is_invalid() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new GetDeletionProcessAsOwnerQuery { Id = "some-invalid-deletion-process-id" }); + var validationResult = validator.TestValidate(new GetDeletionProcessAsOwnerSlice.Query { Id = "some-invalid-deletion-process-id" }); // Assert - validationResult.ShouldHaveValidationErrorForId(nameof(GetDeletionProcessAsOwnerQuery.Id)); + validationResult.ShouldHaveValidationErrorForId(nameof(GetDeletionProcessAsOwnerSlice.Query.Id)); } } diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessAsSupport/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessAsSupport/ValidatorTests.cs index 4706076612..85871a09cd 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessAsSupport/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessAsSupport/ValidatorTests.cs @@ -1,3 +1,4 @@ +using GetDeletionProcessAsSupportSlice = Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsSupport; using Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsSupport; using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.UnitTestTools.FluentValidation; @@ -15,7 +16,7 @@ public void Happy_path() // Act var validationResult = - validator.TestValidate(new GetDeletionProcessAsSupportQuery { IdentityAddress = CreateRandomIdentityAddress(), DeletionProcessId = IdentityDeletionProcessId.Generate() }); + validator.TestValidate(new GetDeletionProcessAsSupportSlice.Query { IdentityAddress = CreateRandomIdentityAddress(), DeletionProcessId = IdentityDeletionProcessId.Generate() }); // Assert validationResult.ShouldNotHaveAnyValidationErrors(); @@ -28,10 +29,10 @@ public void Fails_when_identity_address_is_invalid() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new GetDeletionProcessAsSupportQuery { IdentityAddress = "invalid-identity-address", DeletionProcessId = IdentityDeletionProcessId.Generate() }); + var validationResult = validator.TestValidate(new GetDeletionProcessAsSupportSlice.Query { IdentityAddress = "invalid-identity-address", DeletionProcessId = IdentityDeletionProcessId.Generate() }); // Assert - validationResult.ShouldHaveValidationErrorForId(nameof(GetDeletionProcessAsSupportQuery.IdentityAddress)); + validationResult.ShouldHaveValidationErrorForId(nameof(GetDeletionProcessAsSupportSlice.Query.IdentityAddress)); } [Fact] @@ -41,9 +42,9 @@ public void Fails_when_deletion_process_id_is_invalid() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new GetDeletionProcessAsSupportQuery { IdentityAddress = CreateRandomIdentityAddress(), DeletionProcessId = "invalid-deletion-process-id" }); + var validationResult = validator.TestValidate(new GetDeletionProcessAsSupportSlice.Query { IdentityAddress = CreateRandomIdentityAddress(), DeletionProcessId = "invalid-deletion-process-id" }); // Assert - validationResult.ShouldHaveValidationErrorForId(nameof(GetDeletionProcessAsSupportQuery.DeletionProcessId)); + validationResult.ShouldHaveValidationErrorForId(nameof(GetDeletionProcessAsSupportSlice.Query.DeletionProcessId)); } } diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessesAsSupport/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessesAsSupport/ValidatorTests.cs index 8526b21c90..2a218fb408 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessesAsSupport/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessesAsSupport/ValidatorTests.cs @@ -1,3 +1,4 @@ +using ListDeletionProcessesAsSupport = Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsSupport; using Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsSupport; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; @@ -13,7 +14,7 @@ public void Happy_path() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new ListDeletionProcessesAsSupportQuery { IdentityAddress = CreateRandomIdentityAddress() }); + var validationResult = validator.TestValidate(new ListDeletionProcessesAsSupport.Query { IdentityAddress = CreateRandomIdentityAddress() }); // Assert validationResult.ShouldNotHaveAnyValidationErrors(); @@ -26,9 +27,9 @@ public void Fails_when_identity_address_is_invalid() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new ListDeletionProcessesAsSupportQuery { IdentityAddress = "some-invalid-address" }); + var validationResult = validator.TestValidate(new ListDeletionProcessesAsSupport.Query { IdentityAddress = "some-invalid-address" }); // Assert - validationResult.ShouldHaveValidationErrorForId(nameof(ListDeletionProcessesAsSupportQuery.IdentityAddress)); + validationResult.ShouldHaveValidationErrorForId(nameof(ListDeletionProcessesAsSupport.Query.IdentityAddress)); } } diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessesAuditLogs/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessesAuditLogs/HandlerTests.cs index a36d09c226..1085a6a8a7 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessesAuditLogs/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessesAuditLogs/HandlerTests.cs @@ -1,3 +1,4 @@ +using ListDeletionProcessesAuditLogs = Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; using Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.Modules.Devices.Infrastructure.Persistence.Database; @@ -35,7 +36,7 @@ public async Task Gets_successfully() var handler = CreateHandler(_actDbContext); // Act - var result = await handler.Handle(new ListDeletionProcessesAuditLogsQuery { IdentityAddress = identity.Address }, CancellationToken.None); + var result = await handler.Handle(new ListDeletionProcessesAuditLogs.Query { IdentityAddress = identity.Address }, CancellationToken.None); // Assert result.ShouldHaveCount(identity.DeletionProcesses.SelectMany(d => d.AuditLog).Count()); @@ -53,7 +54,7 @@ public async Task Returns_empty_list_for_non_existent_address() var handler = CreateHandler(_actDbContext); // Act - var result = await handler.Handle(new ListDeletionProcessesAuditLogsQuery { IdentityAddress = "non-existent-identity-address" }, CancellationToken.None); + var result = await handler.Handle(new ListDeletionProcessesAuditLogs.Query { IdentityAddress = "non-existent-identity-address" }, CancellationToken.None); // Assert result.ShouldHaveCount(0); @@ -73,7 +74,7 @@ public async Task Gets_for_multiple_deletion_processes() var handler = CreateHandler(_actDbContext); // Act - var result = await handler.Handle(new ListDeletionProcessesAuditLogsQuery { IdentityAddress = identity.Address }, CancellationToken.None); + var result = await handler.Handle(new ListDeletionProcessesAuditLogs.Query { IdentityAddress = identity.Address }, CancellationToken.None); // Assert result.ShouldHaveCount(identity.DeletionProcesses.SelectMany(d => d.AuditLog).Count()); @@ -92,7 +93,7 @@ public async Task Gets_for_deletion_process_in_status_deleting() var handler = CreateHandler(_actDbContext); // Act - var result = await handler.Handle(new ListDeletionProcessesAuditLogsQuery { IdentityAddress = identity.Address }, CancellationToken.None); + var result = await handler.Handle(new ListDeletionProcessesAuditLogs.Query { IdentityAddress = identity.Address }, CancellationToken.None); // Assert result.ShouldHaveCount(identity.DeletionProcesses.SelectMany(d => d.AuditLog).Count()); @@ -111,7 +112,7 @@ public async Task Gets_for_deleted_identity() var handler = CreateHandler(_actDbContext); // Act - var result = await handler.Handle(new ListDeletionProcessesAuditLogsQuery { IdentityAddress = identity.Address }, CancellationToken.None); + var result = await handler.Handle(new ListDeletionProcessesAuditLogs.Query { IdentityAddress = identity.Address }, CancellationToken.None); // Assert result.ShouldHaveCount(identity.DeletionProcesses.SelectMany(d => d.AuditLog).Count()); diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessesAuditLogs/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessesAuditLogs/ValidatorTests.cs index fc7cf90931..f4161b5c17 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessesAuditLogs/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessesAuditLogs/ValidatorTests.cs @@ -1,3 +1,4 @@ +using ListDeletionProcessesAuditLogs = Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; using Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; @@ -13,7 +14,7 @@ public void Happy_path() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new ListDeletionProcessesAuditLogsQuery { IdentityAddress = CreateRandomIdentityAddress() }); + var validationResult = validator.TestValidate(new ListDeletionProcessesAuditLogs.Query { IdentityAddress = CreateRandomIdentityAddress() }); // Assert validationResult.ShouldNotHaveAnyValidationErrors(); @@ -26,9 +27,9 @@ public void Fails_when_identity_address_is_invalid() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new ListDeletionProcessesAuditLogsQuery { IdentityAddress = "some-invalid-address" }); + var validationResult = validator.TestValidate(new ListDeletionProcessesAuditLogs.Query { IdentityAddress = "some-invalid-address" }); // Assert - validationResult.ShouldHaveValidationErrorForId(nameof(ListDeletionProcessesAuditLogsQuery.IdentityAddress)); + validationResult.ShouldHaveValidationErrorForId(nameof(ListDeletionProcessesAuditLogs.Query.IdentityAddress)); } } diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetIdentity/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetIdentity/ValidatorTests.cs index d4fa1ce176..dd1d05b680 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetIdentity/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetIdentity/ValidatorTests.cs @@ -1,3 +1,4 @@ +using GetIdentitySlice = Backbone.Modules.Devices.Module.Features.Identities.GetIdentity; using Backbone.Modules.Devices.Module.Features.Identities.GetIdentity; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; @@ -13,7 +14,7 @@ public void Happy_path() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new GetIdentityQuery { Address = CreateRandomIdentityAddress() }); + var validationResult = validator.TestValidate(new GetIdentitySlice.Query { Address = CreateRandomIdentityAddress() }); // Assert validationResult.ShouldNotHaveAnyValidationErrors(); @@ -26,9 +27,9 @@ public void Fails_when_identity_address_is_invalid() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new GetIdentityQuery { Address = "some-invalid-address" }); + var validationResult = validator.TestValidate(new GetIdentitySlice.Query { Address = "some-invalid-address" }); // Assert - validationResult.ShouldHaveValidationErrorForId(nameof(GetIdentityQuery.Address)); + validationResult.ShouldHaveValidationErrorForId(nameof(GetIdentitySlice.Query.Address)); } } diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/ListIdentities/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/ListIdentities/ValidatorTests.cs index e8beab873c..bea41f22bb 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/ListIdentities/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/ListIdentities/ValidatorTests.cs @@ -1,3 +1,4 @@ +using ListIdentitiesSlice = Backbone.Modules.Devices.Module.Features.Identities.ListIdentities; using Backbone.Modules.Devices.Module.Features.Identities.ListIdentities; using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.UnitTestTools.FluentValidation; @@ -14,7 +15,7 @@ public void Happy_path() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new ListIdentitiesQuery { Addresses = [CreateRandomIdentityAddress()], Status = IdentityStatus.Active }); + var validationResult = validator.TestValidate(new ListIdentitiesSlice.Query { Addresses = [CreateRandomIdentityAddress()], Status = IdentityStatus.Active }); // Assert validationResult.ShouldNotHaveAnyValidationErrors(); @@ -27,11 +28,11 @@ public void Fails_when_identity_address_is_invalid() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new ListIdentitiesQuery { Addresses = ["some-invalid-address"], Status = IdentityStatus.Active }); + var validationResult = validator.TestValidate(new ListIdentitiesSlice.Query { Addresses = ["some-invalid-address"], Status = IdentityStatus.Active }); // Assert validationResult.ShouldHaveValidationErrorForIdInCollection( - collectionWithInvalidId: nameof(ListIdentitiesQuery.Addresses), + collectionWithInvalidId: nameof(ListIdentitiesSlice.Query.Addresses), indexWithInvalidId: 0); } } diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/PushNotifications/DatawalletModified/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/PushNotifications/DatawalletModified/HandlerTests.cs index db396c9447..16504dd4f4 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/PushNotifications/DatawalletModified/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/PushNotifications/DatawalletModified/HandlerTests.cs @@ -1,5 +1,5 @@ +using DatawalletModificationCreated = Backbone.Modules.Devices.Module.Features.DomainEvents.DatawalletModificationCreated; using Backbone.BuildingBlocks.Application.PushNotifications; -using Backbone.Modules.Devices.Module.Features.DomainEvents.DatawalletModificationCreated; using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.Datawallet; using Backbone.Modules.Synchronization.Contracts.DomainEvents; using FakeItEasy; @@ -15,7 +15,7 @@ public async Task Creating_a_Datawallet_modification_sends_a_filtered_notificati var modifiedByDevice = CreateRandomDeviceId(); var identity = CreateRandomIdentityAddress(); var mockSender = A.Fake(); - var handler = new DatawalletModifiedDomainEventHandler(mockSender); + var handler = new DatawalletModificationCreated.Handler(mockSender); var domainEvent = new DatawalletModifiedDomainEvent { Identity = identity, ModifiedByDevice = modifiedByDevice }; // Act diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/PushNotifications/DeletePnsRegistrationsOfIdentity/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/PushNotifications/DeletePnsRegistrationsOfIdentity/ValidatorTests.cs index 201b5431bb..fe1d420805 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/PushNotifications/DeletePnsRegistrationsOfIdentity/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/PushNotifications/DeletePnsRegistrationsOfIdentity/ValidatorTests.cs @@ -1,3 +1,4 @@ +using DeletePnsRegistrationsOfIdentitySlice = Backbone.Modules.Devices.Module.Features.PushNotifications.DeletePnsRegistrationsOfIdentity; using Backbone.Modules.Devices.Module.Features.PushNotifications.DeletePnsRegistrationsOfIdentity; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; @@ -13,7 +14,7 @@ public void Happy_path() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new DeletePnsRegistrationsOfIdentityCommand { IdentityAddress = CreateRandomIdentityAddress() }); + var validationResult = validator.TestValidate(new DeletePnsRegistrationsOfIdentitySlice.Command { IdentityAddress = CreateRandomIdentityAddress() }); // Assert validationResult.ShouldNotHaveAnyValidationErrors(); @@ -26,9 +27,9 @@ public void Fails_when_identity_address_is_invalid() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new DeletePnsRegistrationsOfIdentityCommand { IdentityAddress = "some-invalid-address" }); + var validationResult = validator.TestValidate(new DeletePnsRegistrationsOfIdentitySlice.Command { IdentityAddress = "some-invalid-address" }); // Assert - validationResult.ShouldHaveValidationErrorForId(nameof(DeletePnsRegistrationsOfIdentityCommand.IdentityAddress)); + validationResult.ShouldHaveValidationErrorForId(nameof(DeletePnsRegistrationsOfIdentitySlice.Command.IdentityAddress)); } } diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/PushNotifications/UpdateDeviceRegistration/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/PushNotifications/UpdateDeviceRegistration/HandlerTests.cs index 7d480a1f2d..71e7553ee8 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/PushNotifications/UpdateDeviceRegistration/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/PushNotifications/UpdateDeviceRegistration/HandlerTests.cs @@ -1,3 +1,4 @@ +using UpdateDeviceRegistrationSlice = Backbone.Modules.Devices.Module.Features.PushNotifications.UpdateDeviceRegistration; using Backbone.Modules.Devices.Abstractions.PushNotifications; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; @@ -40,7 +41,7 @@ public async Task Updating_PnsRegistration_in_PushService() var handler = new Handler(mockPushService, mockUserContext); // Act - await handler.Handle(new UpdateDeviceRegistrationCommand + await handler.Handle(new UpdateDeviceRegistrationSlice.Command { Platform = "fcm", Handle = "handle", diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Tiers/Commands/CreateTier/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Tiers/Commands/CreateTier/ValidatorTests.cs index 18ad1d83df..84fe8ebe2b 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Tiers/Commands/CreateTier/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Tiers/Commands/CreateTier/ValidatorTests.cs @@ -1,3 +1,4 @@ +using CreateTierSlice = Backbone.Modules.Devices.Module.Features.Tiers.CreateTier; using Backbone.Modules.Devices.Module.Features.Tiers.CreateTier; using Backbone.Modules.Devices.Domain.Aggregates.Tier; using Backbone.UnitTestTools.FluentValidation; @@ -17,11 +18,11 @@ public void Validation_fails_for_invalid_tier_name(string value) var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new CreateTierCommand { Name = value }); + var validationResult = validator.TestValidate(new CreateTierSlice.Command { Name = value }); // Assert validationResult.ShouldHaveValidationErrorForItem( - propertyName: nameof(CreateTierCommand.Name), + propertyName: nameof(CreateTierSlice.Command.Name), expectedErrorCode: "error.platform.validation.invalidTierName", expectedErrorMessage: $"Tier Name length must be between {TierName.MIN_LENGTH} and {TierName.MAX_LENGTH}"); } diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Tiers/Commands/DeleteTier/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Tiers/Commands/DeleteTier/HandlerTests.cs index 05508c756d..ab03824432 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Tiers/Commands/DeleteTier/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Tiers/Commands/DeleteTier/HandlerTests.cs @@ -1,3 +1,4 @@ +using DeleteTierSlice = Backbone.Modules.Devices.Module.Features.Tiers.DeleteTier; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Domain.Exceptions; using Backbone.Modules.Devices.Abstractions; @@ -32,7 +33,7 @@ public async Task Deletes_the_tier_from_the_database_and_publishes_TierDeletedDo A.CallTo(() => _tiersRepository.GetNumberOfIdentitiesAssignedToTier(tier, A._)).Returns(Task.FromResult(0)); // Act - await _handler.Handle(new DeleteTierCommand { TierId = tier.Id }, CancellationToken.None); + await _handler.Handle(new DeleteTierSlice.Command { TierId = tier.Id }, CancellationToken.None); // Assert A.CallTo(() => _eventBus.Publish(A._)).MustHaveHappened(); @@ -50,7 +51,7 @@ public async Task Cannot_delete_tier_if_CanBeDeleted_returns_an_error() A.CallTo(() => _tiersRepository.GetNumberOfIdentitiesAssignedToTier(tier, A._)).Returns(1); // Act - var acting = async () => await _handler.Handle(new DeleteTierCommand { TierId = tier.Id }, CancellationToken.None); + var acting = async () => await _handler.Handle(new DeleteTierSlice.Command { TierId = tier.Id }, CancellationToken.None); // Assert await acting.ShouldThrowAsync(); diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Tiers/Commands/DeleteTier/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Tests/Tiers/Commands/DeleteTier/ValidatorTests.cs index 6997c5632b..ec62b52849 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Tiers/Commands/DeleteTier/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Tests/Tiers/Commands/DeleteTier/ValidatorTests.cs @@ -1,3 +1,4 @@ +using DeleteTierSlice = Backbone.Modules.Devices.Module.Features.Tiers.DeleteTier; using Backbone.Modules.Devices.Module.Features.Tiers.DeleteTier; using Backbone.Modules.Devices.Domain.Aggregates.Tier; using Backbone.UnitTestTools.FluentValidation; @@ -14,7 +15,7 @@ public void Happy_path() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new DeleteTierCommand { TierId = TierId.Generate() }); + var validationResult = validator.TestValidate(new DeleteTierSlice.Command { TierId = TierId.Generate() }); // Assert validationResult.ShouldNotHaveAnyValidationErrors(); @@ -27,9 +28,9 @@ public void Fails_when_tier_id_is_invalid() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new DeleteTierCommand { TierId = "invalid-tier_id" }); + var validationResult = validator.TestValidate(new DeleteTierSlice.Command { TierId = "invalid-tier_id" }); // Assert - validationResult.ShouldHaveValidationErrorForId(nameof(DeleteTierCommand.TierId)); + validationResult.ShouldHaveValidationErrorForId(nameof(DeleteTierSlice.Command.TierId)); } } diff --git a/Modules/Files/src/Files.Module/ApplicationServiceCollectionExtensions.cs b/Modules/Files/src/Files.Module/ApplicationServiceCollectionExtensions.cs index f05ed9d4be..1bdaa608d7 100644 --- a/Modules/Files/src/Files.Module/ApplicationServiceCollectionExtensions.cs +++ b/Modules/Files/src/Files.Module/ApplicationServiceCollectionExtensions.cs @@ -1,3 +1,4 @@ +using CreateFile = Backbone.Modules.Files.Module.Features.Files.CreateFile; using Backbone.BuildingBlocks.Application.MediatR; using Backbone.Modules.Files.Module.Features.Files.CreateFile; using FluentValidation; @@ -10,7 +11,7 @@ internal static class ApplicationServiceCollectionExtensions public static void AddApplication(this IServiceCollection services) { services.AddMediatR(c => c - .RegisterServicesFromAssemblyContaining() + .RegisterServicesFromAssemblyContaining() .AddOpenBehavior(typeof(LoggingBehavior<,>)) .AddOpenBehavior(typeof(RequestValidationBehavior<,>)) .AddOpenBehavior(typeof(QuotaEnforcerBehavior<,>)) diff --git a/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Command.cs b/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Command.cs index 78fadbabf6..ac9794ccd7 100644 --- a/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Command.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Files.Module.Features.Files.ClaimFileOwnership; -public class ClaimFileOwnershipCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ClaimFileOwnershipCommand")] +public class Command : IRequest { public required string FileId { get; init; } public required string OwnershipToken { get; init; } diff --git a/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Endpoint.cs b/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Endpoint.cs index 5bd9bbbbcc..c1af232e56 100644 --- a/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Endpoint.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Endpoint.cs @@ -13,7 +13,7 @@ internal static class Endpoint public static RouteGroupBuilder MapClaimFileOwnershipEndpoint(this RouteGroupBuilder group) { group.MapPatch("{fileId}/ClaimOwnership", Handle) - .Produces>(StatusCodes.Status200OK) + .Produces>(StatusCodes.Status200OK) .Produces(StatusCodes.Status400BadRequest) .Produces(StatusCodes.Status403Forbidden) .Produces(StatusCodes.Status404NotFound); @@ -22,7 +22,7 @@ public static RouteGroupBuilder MapClaimFileOwnershipEndpoint(this RouteGroupBui private static async Task Handle([FromRoute] string fileId, [FromBody] RequestBody body, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new ClaimFileOwnershipCommand { FileId = fileId, OwnershipToken = body.OwnershipToken }, cancellationToken); + var response = await mediator.Send(new Command { FileId = fileId, OwnershipToken = body.OwnershipToken }, cancellationToken); return EnvelopeHttpResults.Ok(response); } } diff --git a/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Handler.cs b/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Handler.cs index 3341a95373..5d7485897f 100644 --- a/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Handler.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Handler.cs @@ -10,7 +10,7 @@ namespace Backbone.Modules.Files.Module.Features.Files.ClaimFileOwnership; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IFilesRepository _filesRepository; private readonly IdentityAddress _activeIdentity; @@ -21,7 +21,7 @@ public Handler(IFilesRepository filesRepository, IUserContext userContext) _activeIdentity = userContext.GetAddress(); } - public async Task Handle(ClaimFileOwnershipCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var file = await _filesRepository.Get(FileId.Parse(request.FileId), cancellationToken, true, false) ?? throw new NotFoundException(nameof(File)); @@ -43,6 +43,6 @@ public async Task Handle(ClaimFileOwnershipCommand r throw new UnreachableException(); } - return new ClaimFileOwnershipResponse(file); + return new Response(file); } } diff --git a/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Response.cs b/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Response.cs index 83e6fabc5a..1d7ab98867 100644 --- a/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Response.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Response.cs @@ -2,9 +2,10 @@ namespace Backbone.Modules.Files.Module.Features.Files.ClaimFileOwnership; -public class ClaimFileOwnershipResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ClaimFileOwnershipResponse")] +public class Response { - public ClaimFileOwnershipResponse(File file) + public Response(File file) { NewOwnershipToken = file.OwnershipToken.Value; } diff --git a/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Validator.cs b/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Validator.cs index acd8017553..1622c184ae 100644 --- a/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Validator.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Validator.cs @@ -6,11 +6,11 @@ namespace Backbone.Modules.Files.Module.Features.Files.ClaimFileOwnership; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.FileId).ValidId(); + RuleFor(x => x.FileId).ValidId(); RuleFor(x => x.OwnershipToken) .DetailedNotEmpty() .Must(x => FileOwnershipToken.IsValid(x!)) diff --git a/Modules/Files/src/Files.Module/Features/Files/CreateFile/Command.cs b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Command.cs index 9a4dbd9c13..6df812b021 100644 --- a/Modules/Files/src/Files.Module/Features/Files/CreateFile/Command.cs +++ b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Command.cs @@ -3,8 +3,9 @@ namespace Backbone.Modules.Files.Module.Features.Files.CreateFile; +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateFileCommand")] [ApplyQuotasForMetrics("NumberOfFiles", "UsedFileStorageSpace")] -public class CreateFileCommand : IRequest +public class Command : IRequest { public required byte[] FileContent { get; init; } diff --git a/Modules/Files/src/Files.Module/Features/Files/CreateFile/Endpoint.cs b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Endpoint.cs index 88b77b0068..5651bedebe 100644 --- a/Modules/Files/src/Files.Module/Features/Files/CreateFile/Endpoint.cs +++ b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Endpoint.cs @@ -19,7 +19,7 @@ public static RouteGroupBuilder MapCreateFileEndpoint(this RouteGroupBuilder gro group.MapPost("", Handle) .DisableAntiforgery() .Accepts("multipart/form-data") - .Produces>(StatusCodes.Status201Created) + .Produces>(StatusCodes.Status201Created) .Produces(StatusCodes.Status400BadRequest); return group; } @@ -33,7 +33,7 @@ private static async Task Handle([FromForm] RequestFormParams dto, Http using var inputStream = new MemoryStream(); await dto.Content.CopyToAsync(inputStream, cancellationToken); - var response = await mediator.Send(new CreateFileCommand + var response = await mediator.Send(new Command { FileContent = inputStream.ToArray(), ExpiresAt = dto.ExpiresAt, diff --git a/Modules/Files/src/Files.Module/Features/Files/CreateFile/Handler.cs b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Handler.cs index 384440e927..991de34cf6 100644 --- a/Modules/Files/src/Files.Module/Features/Files/CreateFile/Handler.cs +++ b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Handler.cs @@ -5,7 +5,7 @@ namespace Backbone.Modules.Files.Module.Features.Files.CreateFile; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IFilesRepository _filesRepository; private readonly IUserContext _userContext; @@ -16,7 +16,7 @@ public Handler(IUserContext userContext, IFilesRepository filesRepository) _filesRepository = filesRepository; } - public async Task Handle(CreateFileCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var file = new File( _userContext.GetAddress(), @@ -34,6 +34,6 @@ await _filesRepository.Add( cancellationToken ); - return new CreateFileResponse(file); + return new Response(file); } } diff --git a/Modules/Files/src/Files.Module/Features/Files/CreateFile/Response.cs b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Response.cs index 1abef557c2..b7c7de2570 100644 --- a/Modules/Files/src/Files.Module/Features/Files/CreateFile/Response.cs +++ b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Response.cs @@ -2,9 +2,10 @@ namespace Backbone.Modules.Files.Module.Features.Files.CreateFile; -public class CreateFileResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateFileResponse")] +public class Response { - public CreateFileResponse(File file) + public Response(File file) { Id = file.Id; CreatedAt = file.CreatedAt; diff --git a/Modules/Files/src/Files.Module/Features/Files/CreateFile/Validator.cs b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Validator.cs index fff2ac67e7..95a22df8ee 100644 --- a/Modules/Files/src/Files.Module/Features/Files/CreateFile/Validator.cs +++ b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Validator.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Files.Module.Features.Files.CreateFile; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { diff --git a/Modules/Files/src/Files.Module/Features/Files/DeleteFile/Command.cs b/Modules/Files/src/Files.Module/Features/Files/DeleteFile/Command.cs index 87c669a33a..8c5094253d 100644 --- a/Modules/Files/src/Files.Module/Features/Files/DeleteFile/Command.cs +++ b/Modules/Files/src/Files.Module/Features/Files/DeleteFile/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Files.Module.Features.Files.DeleteFile; -public class DeleteFileCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteFileCommand")] +public class Command : IRequest { public required string Id { get; init; } } diff --git a/Modules/Files/src/Files.Module/Features/Files/DeleteFile/Endpoint.cs b/Modules/Files/src/Files.Module/Features/Files/DeleteFile/Endpoint.cs index 9104c794fc..779593ebd0 100644 --- a/Modules/Files/src/Files.Module/Features/Files/DeleteFile/Endpoint.cs +++ b/Modules/Files/src/Files.Module/Features/Files/DeleteFile/Endpoint.cs @@ -21,7 +21,7 @@ public static RouteGroupBuilder MapDeleteFileEndpoint(this RouteGroupBuilder gro private static async Task Handle([FromRoute] string fileId, IMediator mediator, CancellationToken cancellationToken) { - await mediator.Send(new DeleteFileCommand { Id = fileId }, cancellationToken); + await mediator.Send(new Command { Id = fileId }, cancellationToken); return Results.NoContent(); } } diff --git a/Modules/Files/src/Files.Module/Features/Files/DeleteFile/Handler.cs b/Modules/Files/src/Files.Module/Features/Files/DeleteFile/Handler.cs index a8f758bc7e..83fc6adc34 100644 --- a/Modules/Files/src/Files.Module/Features/Files/DeleteFile/Handler.cs +++ b/Modules/Files/src/Files.Module/Features/Files/DeleteFile/Handler.cs @@ -7,7 +7,7 @@ namespace Backbone.Modules.Files.Module.Features.Files.DeleteFile; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IFilesRepository _filesRepository; private readonly IUserContext _userContext; @@ -18,7 +18,7 @@ public Handler(IUserContext userContext, IFilesRepository filesRepository) _userContext = userContext; } - public async Task Handle(DeleteFileCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var file = await _filesRepository.Get(FileId.Parse(request.Id), cancellationToken, fillContent: false) ?? throw new NotFoundException(nameof(File)); diff --git a/Modules/Files/src/Files.Module/Features/Files/DeleteFile/Validator.cs b/Modules/Files/src/Files.Module/Features/Files/DeleteFile/Validator.cs index 153927b892..c3a940b9b3 100644 --- a/Modules/Files/src/Files.Module/Features/Files/DeleteFile/Validator.cs +++ b/Modules/Files/src/Files.Module/Features/Files/DeleteFile/Validator.cs @@ -4,11 +4,11 @@ namespace Backbone.Modules.Files.Module.Features.Files.DeleteFile; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { RuleFor(f => f.Id) - .ValidId(); + .ValidId(); } } diff --git a/Modules/Files/src/Files.Module/Features/Files/ExecuteHousekeeping/Command.cs b/Modules/Files/src/Files.Module/Features/Files/ExecuteHousekeeping/Command.cs index 07cf3a43e4..1d9669f4f7 100644 --- a/Modules/Files/src/Files.Module/Features/Files/ExecuteHousekeeping/Command.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ExecuteHousekeeping/Command.cs @@ -2,4 +2,5 @@ namespace Backbone.Modules.Files.Module.Features.Files.ExecuteHousekeeping; -public class ExecuteHousekeepingCommand : IRequest; +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ExecuteHousekeepingCommand")] +public class Command : IRequest; diff --git a/Modules/Files/src/Files.Module/Features/Files/ExecuteHousekeeping/Handler.cs b/Modules/Files/src/Files.Module/Features/Files/ExecuteHousekeeping/Handler.cs index 042aefd5e4..ed30dc0f8d 100644 --- a/Modules/Files/src/Files.Module/Features/Files/ExecuteHousekeeping/Handler.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ExecuteHousekeeping/Handler.cs @@ -5,7 +5,7 @@ namespace Backbone.Modules.Files.Module.Features.Files.ExecuteHousekeeping; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IFilesRepository _filesRepository; @@ -14,7 +14,7 @@ public Handler(IFilesRepository filesRepository) _filesRepository = filesRepository; } - public async Task Handle(ExecuteHousekeepingCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { await DeleteFiles(cancellationToken); await DeleteOrphanedBlobs(cancellationToken); diff --git a/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Endpoint.cs b/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Endpoint.cs index 0eb836336a..a17cb7a10f 100644 --- a/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Endpoint.cs +++ b/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Endpoint.cs @@ -25,7 +25,7 @@ public static RouteGroupBuilder MapGetFileContentEndpoint(this RouteGroupBuilder private static async Task Handle([FromRoute] string fileId, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new GetFileContentQuery { Id = fileId }, cancellationToken); + var response = await mediator.Send(new Query { Id = fileId }, cancellationToken); return Results.File(response.FileContent, MediaTypeNames.Application.Octet); } } diff --git a/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Handler.cs b/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Handler.cs index 3489586113..439d40cd38 100644 --- a/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Handler.cs +++ b/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Files.Module.Features.Files.GetFileContent; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IFilesRepository _filesRepository; @@ -15,10 +15,10 @@ public Handler(IFilesRepository filesRepository) _filesRepository = filesRepository; } - public async Task Handle(GetFileContentQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var file = await _filesRepository.Get(FileId.Parse(request.Id), cancellationToken) ?? throw new NotFoundException(nameof(File)); - return new GetFileContentResponse + return new Response { FileContent = file.Content }; diff --git a/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Query.cs b/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Query.cs index 55a7cbbcac..c07303b518 100644 --- a/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Query.cs +++ b/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Query.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Files.Module.Features.Files.GetFileContent; -public class GetFileContentQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetFileContentQuery")] +public class Query : IRequest { public required string Id { get; init; } } diff --git a/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Response.cs b/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Response.cs index 8636a3ad26..ca7ffb51b7 100644 --- a/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Response.cs +++ b/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Response.cs @@ -1,6 +1,7 @@ namespace Backbone.Modules.Files.Module.Features.Files.GetFileContent; -public class GetFileContentResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetFileContentResponse")] +public class Response { public required byte[] FileContent { get; set; } } diff --git a/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Validator.cs b/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Validator.cs index a2dff9ce11..be02f6a924 100644 --- a/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Validator.cs +++ b/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Files.Module.Features.Files.GetFileContent; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.Id).ValidId(); + RuleFor(x => x.Id).ValidId(); } } diff --git a/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Endpoint.cs b/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Endpoint.cs index ac431a29c9..2e71514115 100644 --- a/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Endpoint.cs +++ b/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Endpoint.cs @@ -22,7 +22,7 @@ public static RouteGroupBuilder MapGetFileMetadataEndpoint(this RouteGroupBuilde private static async Task Handle([FromRoute] string fileId, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new GetFileMetadataQuery { Id = fileId }, cancellationToken); + var response = await mediator.Send(new Query { Id = fileId }, cancellationToken); return EnvelopeHttpResults.Ok(response); } } diff --git a/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Handler.cs b/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Handler.cs index 178970306b..300c762a06 100644 --- a/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Handler.cs +++ b/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Handler.cs @@ -7,7 +7,7 @@ namespace Backbone.Modules.Files.Module.Features.Files.GetFileMetadata; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IFilesRepository _filesRepository; @@ -16,7 +16,7 @@ public Handler(IFilesRepository filesRepository) _filesRepository = filesRepository; } - public async Task Handle(GetFileMetadataQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var file = await _filesRepository.Get(FileId.Parse(request.Id), cancellationToken, fillContent: false) ?? throw new NotFoundException(nameof(File)); return new FileMetadataDTO(file); diff --git a/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Query.cs b/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Query.cs index 7f04380ce1..74f6e19ff2 100644 --- a/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Query.cs +++ b/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Query.cs @@ -3,7 +3,8 @@ namespace Backbone.Modules.Files.Module.Features.Files.GetFileMetadata; -public class GetFileMetadataQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetFileMetadataQuery")] +public class Query : IRequest { public required string Id { get; init; } } diff --git a/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Validator.cs b/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Validator.cs index cc90888ad6..671c768122 100644 --- a/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Validator.cs +++ b/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Files.Module.Features.Files.GetFileMetadata; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.Id).ValidId(); + RuleFor(x => x.Id).ValidId(); } } diff --git a/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Endpoint.cs b/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Endpoint.cs index e32e4d409e..416a328716 100644 --- a/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Endpoint.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Endpoint.cs @@ -17,7 +17,7 @@ internal static class Endpoint public static RouteGroupBuilder MapListFileMetadataEndpoint(this RouteGroupBuilder group) { group.MapGet("", Handle) - .Produces>(StatusCodes.Status200OK) + .Produces>(StatusCodes.Status200OK) .Produces(StatusCodes.Status400BadRequest); return group; } @@ -29,7 +29,7 @@ private static async Task Handle([FromQuery(Name = "PageNumber")] int? if (paginationFilter.PageSize > options.Value.Pagination.MaxPageSize) throw new ApplicationException(GenericApplicationErrors.Validation.InvalidPageSize(options.Value.Pagination.MaxPageSize)); - var response = await mediator.Send(new ListFileMetadataQuery { PaginationFilter = paginationFilter, Ids = ids ?? [] }, cancellationToken); + var response = await mediator.Send(new Query { PaginationFilter = paginationFilter, Ids = ids ?? [] }, cancellationToken); return EnvelopeHttpResults.Paged(response); } } diff --git a/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Handler.cs b/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Handler.cs index c2d8a15615..7a7df6b0f5 100644 --- a/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Handler.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Handler.cs @@ -5,7 +5,7 @@ namespace Backbone.Modules.Files.Module.Features.Files.ListFileMetadata; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IFilesRepository _filesRepository; private readonly IUserContext _userContext; @@ -16,9 +16,9 @@ public Handler(IFilesRepository filesRepository, IUserContext userContext) _userContext = userContext; } - public async Task Handle(ListFileMetadataQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var dbPaginationResult = await _filesRepository.ListFilesByCreator(request.Ids.Select(FileId.Parse), _userContext.GetAddress(), request.PaginationFilter, cancellationToken); - return new ListFileMetadataResponse(dbPaginationResult, request.PaginationFilter); + return new Response(dbPaginationResult, request.PaginationFilter); } } diff --git a/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Query.cs b/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Query.cs index 4b7924be58..1f2bc62578 100644 --- a/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Query.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Query.cs @@ -3,7 +3,8 @@ namespace Backbone.Modules.Files.Module.Features.Files.ListFileMetadata; -public class ListFileMetadataQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListFileMetadataQuery")] +public class Query : IRequest { public required PaginationFilter PaginationFilter { get; init; } public required IEnumerable Ids { get; init; } diff --git a/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Response.cs b/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Response.cs index cb09c82e7c..65742c2ffe 100644 --- a/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Response.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Response.cs @@ -5,9 +5,10 @@ namespace Backbone.Modules.Files.Module.Features.Files.ListFileMetadata; -public class ListFileMetadataResponse : PagedResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListFileMetadataResponse")] +public class Response : PagedResponse { - public ListFileMetadataResponse(DbPaginationResult dbPaginationResult, PaginationFilter previousFilter) : base(dbPaginationResult.ItemsOnPage.Select(f => new FileMetadataDTO(f)), + public Response(DbPaginationResult dbPaginationResult, PaginationFilter previousFilter) : base(dbPaginationResult.ItemsOnPage.Select(f => new FileMetadataDTO(f)), previousFilter, dbPaginationResult.TotalNumberOfItems) { } diff --git a/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Validator.cs b/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Validator.cs index 109c2fc9eb..0a89d9503b 100644 --- a/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Validator.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Files.Module.Features.Files.ListFileMetadata; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleForEach(x => x.Ids).ValidId(); + RuleForEach(x => x.Ids).ValidId(); } } diff --git a/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Command.cs b/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Command.cs index fefdc4f403..95ea742590 100644 --- a/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Command.cs +++ b/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Files.Module.Features.Files.RegenerateFileOwnershipToken; -public class RegenerateFileOwnershipTokenCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RegenerateFileOwnershipTokenCommand")] +public class Command : IRequest { public required string FileId { get; init; } } diff --git a/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Endpoint.cs b/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Endpoint.cs index 147ec5a013..8981c79126 100644 --- a/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Endpoint.cs +++ b/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Endpoint.cs @@ -13,7 +13,7 @@ internal static class Endpoint public static RouteGroupBuilder MapRegenerateFileOwnershipTokenEndpoint(this RouteGroupBuilder group) { group.MapPatch("{fileId}/RegenerateOwnershipToken", Handle) - .Produces>(StatusCodes.Status200OK) + .Produces>(StatusCodes.Status200OK) .Produces(StatusCodes.Status400BadRequest) .Produces(StatusCodes.Status403Forbidden) .Produces(StatusCodes.Status404NotFound); @@ -22,7 +22,7 @@ public static RouteGroupBuilder MapRegenerateFileOwnershipTokenEndpoint(this Rou private static async Task Handle([FromRoute] string fileId, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new RegenerateFileOwnershipTokenCommand { FileId = fileId }, cancellationToken); + var response = await mediator.Send(new Command { FileId = fileId }, cancellationToken); return EnvelopeHttpResults.Ok(response); } } diff --git a/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Handler.cs b/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Handler.cs index 2f7873ee38..d6a9effac3 100644 --- a/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Handler.cs +++ b/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Handler.cs @@ -8,7 +8,7 @@ namespace Backbone.Modules.Files.Module.Features.Files.RegenerateFileOwnershipToken; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IFilesRepository _filesRepository; private readonly IdentityAddress _activeIdentity; @@ -19,13 +19,13 @@ public Handler(IFilesRepository filesRepository, IUserContext userContext) _activeIdentity = userContext.GetAddress(); } - public async Task Handle(RegenerateFileOwnershipTokenCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var file = await _filesRepository.Get(FileId.Parse(request.FileId), cancellationToken, fillContent: false) ?? throw new NotFoundException(nameof(File)); file.RegenerateOwnershipToken(_activeIdentity); await _filesRepository.Update(file, cancellationToken); - return new RegenerateFileOwnershipTokenResponse(file); + return new Response(file); } } diff --git a/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Response.cs b/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Response.cs index 1764ca936b..6d9a487953 100644 --- a/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Response.cs +++ b/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Response.cs @@ -2,9 +2,10 @@ namespace Backbone.Modules.Files.Module.Features.Files.RegenerateFileOwnershipToken; -public class RegenerateFileOwnershipTokenResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RegenerateFileOwnershipTokenResponse")] +public class Response { - public RegenerateFileOwnershipTokenResponse(File file) + public Response(File file) { NewOwnershipToken = file.OwnershipToken.Value; } diff --git a/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Validator.cs b/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Validator.cs index d2ac3a939c..677e17f0d9 100644 --- a/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Validator.cs +++ b/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Files.Module.Features.Files.RegenerateFileOwnershipToken; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.FileId).ValidId(); + RuleFor(x => x.FileId).ValidId(); } } diff --git a/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Endpoint.cs b/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Endpoint.cs index 4298682a84..32b02219b3 100644 --- a/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Endpoint.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Endpoint.cs @@ -13,7 +13,7 @@ internal static class Endpoint public static RouteGroupBuilder MapValidateFileOwnershipTokenEndpoint(this RouteGroupBuilder group) { group.MapPost("{fileId}/ValidateOwnershipToken", Handle) - .Produces>(StatusCodes.Status200OK) + .Produces>(StatusCodes.Status200OK) .Produces(StatusCodes.Status400BadRequest) .Produces(StatusCodes.Status403Forbidden) .Produces(StatusCodes.Status404NotFound); @@ -22,7 +22,7 @@ public static RouteGroupBuilder MapValidateFileOwnershipTokenEndpoint(this Route private static async Task Handle([FromRoute] string fileId, [FromBody] RequestBody body, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new ValidateFileOwnershipTokenQuery { FileId = fileId, OwnershipToken = body.OwnershipToken }, cancellationToken); + var response = await mediator.Send(new Query { FileId = fileId, OwnershipToken = body.OwnershipToken }, cancellationToken); return EnvelopeHttpResults.Ok(response); } diff --git a/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Handler.cs b/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Handler.cs index 42d5bfb39a..1f2e8780b9 100644 --- a/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Handler.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Handler.cs @@ -8,7 +8,7 @@ namespace Backbone.Modules.Files.Module.Features.Files.ValidateFileOwnershipToken; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IFilesRepository _filesRepository; private readonly IdentityAddress _activeIdentity; @@ -19,7 +19,7 @@ public Handler(IFilesRepository filesRepository, IUserContext userContext) _activeIdentity = userContext.GetAddress(); } - public async Task Handle(ValidateFileOwnershipTokenQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var file = await _filesRepository.Get(FileId.Parse(request.FileId), cancellationToken, track: true) ?? throw new NotFoundException(nameof(File)); @@ -29,6 +29,6 @@ public async Task Handle(ValidateFileOwnersh await _filesRepository.Update(file, cancellationToken); - return new ValidateFileOwnershipTokenResponse { IsValid = isValid }; + return new Response { IsValid = isValid }; } } diff --git a/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Query.cs b/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Query.cs index 03f19a83b3..8deb625403 100644 --- a/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Query.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Query.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Files.Module.Features.Files.ValidateFileOwnershipToken; -public class ValidateFileOwnershipTokenQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ValidateFileOwnershipTokenQuery")] +public class Query : IRequest { public required string FileId { get; init; } public required string OwnershipToken { get; init; } diff --git a/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Response.cs b/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Response.cs index cd51d200b1..30838402d7 100644 --- a/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Response.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Response.cs @@ -1,6 +1,7 @@ namespace Backbone.Modules.Files.Module.Features.Files.ValidateFileOwnershipToken; -public class ValidateFileOwnershipTokenResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ValidateFileOwnershipTokenResponse")] +public class Response { public required bool IsValid { get; init; } } diff --git a/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Validator.cs b/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Validator.cs index 5a1bdcf0fc..b43deb6766 100644 --- a/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Validator.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Validator.cs @@ -6,11 +6,11 @@ namespace Backbone.Modules.Files.Module.Features.Files.ValidateFileOwnershipToken; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(f => f.FileId).ValidId(); + RuleFor(f => f.FileId).ValidId(); RuleFor(x => x.OwnershipToken) .DetailedNotEmpty() .Must(x => FileOwnershipToken.IsValid(x!)) diff --git a/Modules/Files/src/Files.Module/Features/Identities/AnonymizeCreatedByOfFiles/Command.cs b/Modules/Files/src/Files.Module/Features/Identities/AnonymizeCreatedByOfFiles/Command.cs index 312e6ad620..82e705f884 100644 --- a/Modules/Files/src/Files.Module/Features/Identities/AnonymizeCreatedByOfFiles/Command.cs +++ b/Modules/Files/src/Files.Module/Features/Identities/AnonymizeCreatedByOfFiles/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Files.Module.Features.Identities.AnonymizeCreatedByOfFiles; -public class AnonymizeCreatedByOfFilesCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("AnonymizeCreatedByOfFilesCommand")] +public class Command : IRequest { public required string IdentityAddress { get; init; } } diff --git a/Modules/Files/src/Files.Module/Features/Identities/AnonymizeCreatedByOfFiles/Handler.cs b/Modules/Files/src/Files.Module/Features/Identities/AnonymizeCreatedByOfFiles/Handler.cs index 28f8f13223..fdf78ab35e 100644 --- a/Modules/Files/src/Files.Module/Features/Identities/AnonymizeCreatedByOfFiles/Handler.cs +++ b/Modules/Files/src/Files.Module/Features/Identities/AnonymizeCreatedByOfFiles/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Files.Module.Features.Identities.AnonymizeCreatedByOfFiles; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IFilesRepository _filesRepository; private readonly ApplicationConfiguration _applicationConfiguration; @@ -17,7 +17,7 @@ public Handler(IFilesRepository filesRepository, IOptions +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.IdentityAddress).ValidId(); + RuleFor(x => x.IdentityAddress).ValidId(); } } diff --git a/Modules/Files/src/Files.Module/Features/Identities/DeleteFilesOfIdentity/Command.cs b/Modules/Files/src/Files.Module/Features/Identities/DeleteFilesOfIdentity/Command.cs index 3354c25f9c..9f906ffeae 100644 --- a/Modules/Files/src/Files.Module/Features/Identities/DeleteFilesOfIdentity/Command.cs +++ b/Modules/Files/src/Files.Module/Features/Identities/DeleteFilesOfIdentity/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; -public class DeleteFilesOfIdentityCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteFilesOfIdentityCommand")] +public class Command : IRequest { public required string IdentityAddress { get; init; } } diff --git a/Modules/Files/src/Files.Module/Features/Identities/DeleteFilesOfIdentity/Handler.cs b/Modules/Files/src/Files.Module/Features/Identities/DeleteFilesOfIdentity/Handler.cs index a6d726468c..2f65763cd7 100644 --- a/Modules/Files/src/Files.Module/Features/Identities/DeleteFilesOfIdentity/Handler.cs +++ b/Modules/Files/src/Files.Module/Features/Identities/DeleteFilesOfIdentity/Handler.cs @@ -4,7 +4,7 @@ namespace Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IFilesRepository _filesRepository; @@ -13,7 +13,7 @@ public Handler(IFilesRepository filesRepository) _filesRepository = filesRepository; } - public async Task Handle(DeleteFilesOfIdentityCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { await _filesRepository.DeleteFilesOfIdentity(IsOwnedBy(request.IdentityAddress), cancellationToken); } diff --git a/Modules/Files/src/Files.Module/Features/Identities/DeleteFilesOfIdentity/Validator.cs b/Modules/Files/src/Files.Module/Features/Identities/DeleteFilesOfIdentity/Validator.cs index cd07af15a4..345c2d6178 100644 --- a/Modules/Files/src/Files.Module/Features/Identities/DeleteFilesOfIdentity/Validator.cs +++ b/Modules/Files/src/Files.Module/Features/Identities/DeleteFilesOfIdentity/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.IdentityAddress).ValidId(); + RuleFor(x => x.IdentityAddress).ValidId(); } } diff --git a/Modules/Files/src/Files.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs b/Modules/Files/src/Files.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs index 46a442b12a..7d4dec01c6 100644 --- a/Modules/Files/src/Files.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs +++ b/Modules/Files/src/Files.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs @@ -1,7 +1,7 @@ -using Backbone.BuildingBlocks.Application.Identities; +using AnonymizeCreatedByOfFiles = Backbone.Modules.Files.Module.Features.Identities.AnonymizeCreatedByOfFiles; +using DeleteFilesOfIdentity = Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; +using Backbone.BuildingBlocks.Application.Identities; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Files.Module.Features.Identities.AnonymizeCreatedByOfFiles; -using Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; using MediatR; namespace Backbone.Modules.Files.Module.Features.Identities.DeleteIdentity; @@ -19,8 +19,8 @@ public IdentityDeleter(IMediator mediator, IDeletionProcessLogger deletionProces public async Task Delete(IdentityAddress identityAddress) { - await _mediator.Send(new DeleteFilesOfIdentityCommand { IdentityAddress = identityAddress }); - await _mediator.Send(new AnonymizeCreatedByOfFilesCommand { IdentityAddress = identityAddress }); + await _mediator.Send(new DeleteFilesOfIdentity.Command { IdentityAddress = identityAddress }); + await _mediator.Send(new AnonymizeCreatedByOfFiles.Command { IdentityAddress = identityAddress }); await _deletionProcessLogger.LogDeletion(identityAddress, "Files"); } } diff --git a/Modules/Files/test/Files.Module.Tests/Tests/Files/Queries/GetFileContent/ValidatorTests.cs b/Modules/Files/test/Files.Module.Tests/Tests/Files/Queries/GetFileContent/ValidatorTests.cs index 448bb80a40..cce6d206fd 100644 --- a/Modules/Files/test/Files.Module.Tests/Tests/Files/Queries/GetFileContent/ValidatorTests.cs +++ b/Modules/Files/test/Files.Module.Tests/Tests/Files/Queries/GetFileContent/ValidatorTests.cs @@ -1,4 +1,5 @@ -using Backbone.Modules.Files.Module.Features.Files.GetFileContent; +using GetFileContentSlice = Backbone.Modules.Files.Module.Features.Files.GetFileContent; +using Backbone.Modules.Files.Module.Features.Files.GetFileContent; using Backbone.Modules.Files.Domain.Entities; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; @@ -14,7 +15,7 @@ public void Happy_path() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new GetFileContentQuery { Id = FileId.New() }); + var validationResult = validator.TestValidate(new GetFileContentSlice.Query { Id = FileId.New() }); // Assert validationResult.ShouldNotHaveAnyValidationErrors(); @@ -27,9 +28,9 @@ public void Fails_when_file_id_is_invalid() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new GetFileContentQuery { Id = "some-invalid-file-id" }); + var validationResult = validator.TestValidate(new GetFileContentSlice.Query { Id = "some-invalid-file-id" }); // Assert - validationResult.ShouldHaveValidationErrorForId(nameof(GetFileContentQuery.Id)); + validationResult.ShouldHaveValidationErrorForId(nameof(GetFileContentSlice.Query.Id)); } } diff --git a/Modules/Files/test/Files.Module.Tests/Tests/Files/Queries/GetFileMetadata/ValidatorTests.cs b/Modules/Files/test/Files.Module.Tests/Tests/Files/Queries/GetFileMetadata/ValidatorTests.cs index abcc8e9e8c..3a9d83c3f1 100644 --- a/Modules/Files/test/Files.Module.Tests/Tests/Files/Queries/GetFileMetadata/ValidatorTests.cs +++ b/Modules/Files/test/Files.Module.Tests/Tests/Files/Queries/GetFileMetadata/ValidatorTests.cs @@ -1,4 +1,5 @@ -using Backbone.Modules.Files.Module.Features.Files.GetFileMetadata; +using GetFileMetadataSlice = Backbone.Modules.Files.Module.Features.Files.GetFileMetadata; +using Backbone.Modules.Files.Module.Features.Files.GetFileMetadata; using Backbone.Modules.Files.Domain.Entities; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; @@ -14,7 +15,7 @@ public void Happy_path() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new GetFileMetadataQuery { Id = FileId.New() }); + var validationResult = validator.TestValidate(new GetFileMetadataSlice.Query { Id = FileId.New() }); // Assert validationResult.ShouldNotHaveAnyValidationErrors(); @@ -27,9 +28,9 @@ public void Fails_when_file_id_is_invalid() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new GetFileMetadataQuery { Id = "some-invalid-file-id" }); + var validationResult = validator.TestValidate(new GetFileMetadataSlice.Query { Id = "some-invalid-file-id" }); // Assert - validationResult.ShouldHaveValidationErrorForId(nameof(GetFileMetadataQuery.Id)); + validationResult.ShouldHaveValidationErrorForId(nameof(GetFileMetadataSlice.Query.Id)); } } diff --git a/Modules/Files/test/Files.Module.Tests/Tests/Files/Queries/ListFileMetadata/ValidatorTests.cs b/Modules/Files/test/Files.Module.Tests/Tests/Files/Queries/ListFileMetadata/ValidatorTests.cs index 4571d9489a..fc37a2d938 100644 --- a/Modules/Files/test/Files.Module.Tests/Tests/Files/Queries/ListFileMetadata/ValidatorTests.cs +++ b/Modules/Files/test/Files.Module.Tests/Tests/Files/Queries/ListFileMetadata/ValidatorTests.cs @@ -1,4 +1,5 @@ -using Backbone.BuildingBlocks.Application.Pagination; +using ListFileMetadataSlice = Backbone.Modules.Files.Module.Features.Files.ListFileMetadata; +using Backbone.BuildingBlocks.Application.Pagination; using Backbone.Modules.Files.Module.Features.Files.ListFileMetadata; using Backbone.Modules.Files.Domain.Entities; using Backbone.UnitTestTools.FluentValidation; @@ -15,7 +16,7 @@ public void Happy_path() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new ListFileMetadataQuery { PaginationFilter = new PaginationFilter(), Ids = [FileId.New()] }); + var validationResult = validator.TestValidate(new ListFileMetadataSlice.Query { PaginationFilter = new PaginationFilter(), Ids = [FileId.New()] }); // Assert validationResult.ShouldNotHaveAnyValidationErrors(); @@ -28,11 +29,11 @@ public void Fails_when_file_id_is_invalid() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new ListFileMetadataQuery { PaginationFilter = new PaginationFilter(), Ids = ["some-invalid-file-id"] }); + var validationResult = validator.TestValidate(new ListFileMetadataSlice.Query { PaginationFilter = new PaginationFilter(), Ids = ["some-invalid-file-id"] }); // Assert validationResult.ShouldHaveValidationErrorForIdInCollection( - collectionWithInvalidId: nameof(ListFileMetadataQuery.Ids), + collectionWithInvalidId: nameof(ListFileMetadataSlice.Query.Ids), indexWithInvalidId: 0); } } diff --git a/Modules/Files/test/Files.Module.Tests/Tests/Identities/Commands/DeleteFilesOfIdentity/HandlerTests.cs b/Modules/Files/test/Files.Module.Tests/Tests/Identities/Commands/DeleteFilesOfIdentity/HandlerTests.cs index 32540a8a87..96ceaa2eef 100644 --- a/Modules/Files/test/Files.Module.Tests/Tests/Identities/Commands/DeleteFilesOfIdentity/HandlerTests.cs +++ b/Modules/Files/test/Files.Module.Tests/Tests/Identities/Commands/DeleteFilesOfIdentity/HandlerTests.cs @@ -1,4 +1,5 @@ -using System.Linq.Expressions; +using DeleteFilesOfIdentitySlice = Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; +using System.Linq.Expressions; using Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; using Backbone.Modules.Files.Abstractions; using FakeItEasy; @@ -17,7 +18,7 @@ public async Task Handler_calls_deletion_method_on_repository() var identityAddress = CreateRandomIdentityAddress(); // Act - await handler.Handle(new DeleteFilesOfIdentityCommand { IdentityAddress = identityAddress }, CancellationToken.None); + await handler.Handle(new DeleteFilesOfIdentitySlice.Command { IdentityAddress = identityAddress }, CancellationToken.None); // Assert A.CallTo(() => mockFilesRepository.DeleteFilesOfIdentity(A>>._, A._)).MustHaveHappenedOnceExactly(); diff --git a/Modules/Files/test/Files.Module.Tests/Tests/Identities/Commands/DeleteFilesOfIdentity/ValidatorTests.cs b/Modules/Files/test/Files.Module.Tests/Tests/Identities/Commands/DeleteFilesOfIdentity/ValidatorTests.cs index 0df02cbc64..9d29205a75 100644 --- a/Modules/Files/test/Files.Module.Tests/Tests/Identities/Commands/DeleteFilesOfIdentity/ValidatorTests.cs +++ b/Modules/Files/test/Files.Module.Tests/Tests/Identities/Commands/DeleteFilesOfIdentity/ValidatorTests.cs @@ -1,4 +1,5 @@ -using Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; +using DeleteFilesOfIdentitySlice = Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; +using Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; @@ -13,7 +14,7 @@ public void Happy_path() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new DeleteFilesOfIdentityCommand { IdentityAddress = CreateRandomIdentityAddress() }); + var validationResult = validator.TestValidate(new DeleteFilesOfIdentitySlice.Command { IdentityAddress = CreateRandomIdentityAddress() }); // Assert validationResult.ShouldNotHaveAnyValidationErrors(); @@ -26,9 +27,9 @@ public void Fails_when_identity_address_is_invalid() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new DeleteFilesOfIdentityCommand { IdentityAddress = "invalid-identity-address" }); + var validationResult = validator.TestValidate(new DeleteFilesOfIdentitySlice.Command { IdentityAddress = "invalid-identity-address" }); // Assert - validationResult.ShouldHaveValidationErrorForId(nameof(DeleteFilesOfIdentityCommand.IdentityAddress)); + validationResult.ShouldHaveValidationErrorForId(nameof(DeleteFilesOfIdentitySlice.Command.IdentityAddress)); } } diff --git a/Modules/Files/test/Files.Module.Tests/Tests/Identities/IdentityDeleterTests.cs b/Modules/Files/test/Files.Module.Tests/Tests/Identities/IdentityDeleterTests.cs index acf418c8d8..cf1a0deea9 100644 --- a/Modules/Files/test/Files.Module.Tests/Tests/Identities/IdentityDeleterTests.cs +++ b/Modules/Files/test/Files.Module.Tests/Tests/Identities/IdentityDeleterTests.cs @@ -1,6 +1,6 @@ -using Backbone.BuildingBlocks.Application.Identities; +using DeleteFilesOfIdentity = Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; +using Backbone.BuildingBlocks.Application.Identities; using Backbone.Modules.Files.Module.Features.Identities.DeleteIdentity; -using Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; using FakeItEasy; using MediatR; @@ -21,7 +21,7 @@ public async Task Deleter_calls_correct_command() await deleter.Delete(identityAddress); // Assert - A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); + A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); } [Fact] diff --git a/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Endpoint.cs b/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Endpoint.cs index 431bfc5f54..7566f9ccd1 100644 --- a/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Endpoint.cs +++ b/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Endpoint.cs @@ -25,7 +25,7 @@ public static RouteGroupBuilder MapGetMessageEndpoint(this RouteGroupBuilder gro private static async Task Handle(string id, bool? noBody, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new GetMessageQuery { Id = id, NoBody = noBody == true }, cancellationToken); + var response = await mediator.Send(new Query { Id = id, NoBody = noBody == true }, cancellationToken); return EnvelopeHttpResults.Ok(response); } } diff --git a/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Handler.cs b/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Handler.cs index 69065a0d7f..e3465a3e59 100644 --- a/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Handler.cs +++ b/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Handler.cs @@ -7,7 +7,7 @@ namespace Backbone.Modules.Messages.Module.Features.Messages.GetMessage; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IMessagesRepository _messagesRepository; private readonly IUserContext _userContext; @@ -20,7 +20,7 @@ public Handler(IUserContext userContext, IMessagesRepository messagesRepository, _configuration = options.Value; } - public async Task Handle(GetMessageQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var message = await _messagesRepository.GetWithContent(MessageId.Parse(request.Id), _userContext.GetAddress(), cancellationToken, true); message.Recipients.FirstWithIdOrDefault(_userContext.GetAddress())?.FetchedMessage(_userContext.GetDeviceId()); diff --git a/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Query.cs b/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Query.cs index 75a5428f79..2987c52ddd 100644 --- a/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Query.cs +++ b/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Query.cs @@ -3,7 +3,8 @@ namespace Backbone.Modules.Messages.Module.Features.Messages.GetMessage; -public class GetMessageQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetMessageQuery")] +public class Query : IRequest { public required string Id { get; init; } public required bool NoBody { get; init; } diff --git a/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Validator.cs b/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Validator.cs index 0557099ddf..658fd3b90d 100644 --- a/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Validator.cs +++ b/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Messages.Module.Features.Messages.GetMessage; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(query => query.Id).ValidId(); + RuleFor(query => query.Id).ValidId(); } } diff --git a/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Endpoint.cs b/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Endpoint.cs index b6741ddab9..6d0ea636ca 100644 --- a/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Endpoint.cs +++ b/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Endpoint.cs @@ -17,7 +17,7 @@ internal static class Endpoint public static RouteGroupBuilder MapListMessagesEndpoint(this RouteGroupBuilder group) { group.MapGet("", Handle) - .Produces>(StatusCodes.Status200OK) + .Produces>(StatusCodes.Status200OK) .Produces(StatusCodes.Status400BadRequest); return group; @@ -31,7 +31,7 @@ private static async Task Handle([FromQuery] int? pageNumber, [FromQuer if (paginationFilter.PageSize > options.Value.Pagination.MaxPageSize) throw new ApplicationException(GenericApplicationErrors.Validation.InvalidPageSize(options.Value.Pagination.MaxPageSize)); - var response = await mediator.Send(new ListMessagesQuery { PaginationFilter = paginationFilter, Ids = ids ?? [] }, cancellationToken); + var response = await mediator.Send(new Query { PaginationFilter = paginationFilter, Ids = ids ?? [] }, cancellationToken); return EnvelopeHttpResults.Paged(response); } } diff --git a/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Handler.cs b/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Handler.cs index da381c320a..48ce57cd1d 100644 --- a/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Handler.cs +++ b/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Handler.cs @@ -7,7 +7,7 @@ namespace Backbone.Modules.Messages.Module.Features.Messages.ListMessages; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IMessagesRepository _messagesRepository; private readonly IUserContext _userContext; @@ -20,7 +20,7 @@ public Handler(IUserContext userContext, IMessagesRepository messagesRepository, _configuration = options.Value; } - public async Task Handle(ListMessagesQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var result = await _messagesRepository.ListMessagesWithContent(request.Ids.Select(MessageId.Parse), _userContext.GetAddress(), request.PaginationFilter, cancellationToken, track: true); @@ -29,6 +29,6 @@ public async Task Handle(ListMessagesQuery request, Cancel message.Recipients.FirstWithIdOrDefault(_userContext.GetAddress())?.FetchedMessage(_userContext.GetDeviceId()); await _messagesRepository.Update(result.ItemsOnPage); - return new ListMessagesResponse(result, request.PaginationFilter, _userContext.GetAddress(), _configuration.DidDomainName); + return new Response(result, request.PaginationFilter, _userContext.GetAddress(), _configuration.DidDomainName); } } diff --git a/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Query.cs b/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Query.cs index 11b0d2a263..5a35c3562c 100644 --- a/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Query.cs +++ b/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Query.cs @@ -3,7 +3,8 @@ namespace Backbone.Modules.Messages.Module.Features.Messages.ListMessages; -public class ListMessagesQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListMessagesQuery")] +public class Query : IRequest { public required PaginationFilter PaginationFilter { get; init; } public required IEnumerable Ids { get; init; } diff --git a/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Response.cs b/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Response.cs index 355d612654..7db423bbe9 100644 --- a/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Response.cs +++ b/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Response.cs @@ -6,9 +6,10 @@ namespace Backbone.Modules.Messages.Module.Features.Messages.ListMessages; -public class ListMessagesResponse : PagedResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListMessagesResponse")] +public class Response : PagedResponse { - public ListMessagesResponse(DbPaginationResult result, PaginationFilter previousFilter, IdentityAddress activeIdentity, string didDomainName) + public Response(DbPaginationResult result, PaginationFilter previousFilter, IdentityAddress activeIdentity, string didDomainName) : base(result.ItemsOnPage.Select(message => new MessageDTO(message, activeIdentity, didDomainName)), previousFilter, result.TotalNumberOfItems) { } diff --git a/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Validator.cs b/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Validator.cs index 421362a4c3..d65ef7b1d3 100644 --- a/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Validator.cs +++ b/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Messages.Module.Features.Messages.ListMessages; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleForEach(query => query.Ids).ValidId(); + RuleForEach(query => query.Ids).ValidId(); } } diff --git a/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Command.cs b/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Command.cs index 81d9177921..415e27807b 100644 --- a/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Command.cs +++ b/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Command.cs @@ -3,8 +3,9 @@ namespace Backbone.Modules.Messages.Module.Features.Messages.SendMessage; +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("SendMessageCommand")] [ApplyQuotasForMetrics("NumberOfSentMessages")] -public class SendMessageCommand : IRequest +public class Command : IRequest { public ICollection Recipients { get; set; } = new List(); public required byte[] Body { get; set; } diff --git a/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Endpoint.cs b/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Endpoint.cs index 0dec14684d..f42f1f6f26 100644 --- a/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Endpoint.cs +++ b/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Endpoint.cs @@ -14,13 +14,13 @@ internal static class Endpoint public static RouteGroupBuilder MapSendMessageEndpoint(this RouteGroupBuilder group) { group.MapPost("", Handle) - .Produces>(StatusCodes.Status201Created) + .Produces>(StatusCodes.Status201Created) .Produces(StatusCodes.Status400BadRequest); return group; } - private static async Task Handle([FromBody] SendMessageCommand request, HttpContext context, IMediator mediator, CancellationToken cancellationToken) + private static async Task Handle([FromBody] Command request, HttpContext context, IMediator mediator, CancellationToken cancellationToken) { var response = await mediator.Send(request, cancellationToken); return EnvelopeHttpResults.CreatedAtRoute(GetMessage.Endpoint.ROUTE_NAME, new { v = context.Request.RouteValues["v"], id = response.Id }, response); diff --git a/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Handler.cs b/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Handler.cs index a1df03ca2e..ece1ad89e4 100644 --- a/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Handler.cs +++ b/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Handler.cs @@ -9,7 +9,7 @@ namespace Backbone.Modules.Messages.Module.Features.Messages.SendMessage; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly ILogger _logger; private readonly ApplicationConfiguration _configuration; @@ -27,7 +27,7 @@ public Handler(IUserContext userContext, IOptionsSnapshot Handle(SendMessageCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var recipients = await ValidateRecipients(request, cancellationToken); @@ -39,10 +39,10 @@ public async Task Handle(SendMessageCommand request, Cancel recipients); await _messagesRepository.Add(message, cancellationToken); - return new SendMessageResponse(message); + return new Response(message); } - private async Task> ValidateRecipients(SendMessageCommand request, CancellationToken cancellationToken) + private async Task> ValidateRecipients(Command request, CancellationToken cancellationToken) { _logger.LogTrace("Validating recipients..."); var sender = _userContext.GetAddress(); diff --git a/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Response.cs b/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Response.cs index 2c774b5db8..c00fcf7b22 100644 --- a/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Response.cs +++ b/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Response.cs @@ -2,9 +2,10 @@ namespace Backbone.Modules.Messages.Module.Features.Messages.SendMessage; -public class SendMessageResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("SendMessageResponse")] +public class Response { - public SendMessageResponse(Message message) + public Response(Message message) { Id = message.Id; CreatedAt = message.CreatedAt; diff --git a/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Validator.cs b/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Validator.cs index d72c20fa75..c02cd71427 100644 --- a/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Validator.cs +++ b/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Validator.cs @@ -9,7 +9,7 @@ namespace Backbone.Modules.Messages.Module.Features.Messages.SendMessage; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator(IOptions options) { diff --git a/Modules/Quotas/src/Quotas.Module/ApplicationServiceCollectionExtensions.cs b/Modules/Quotas/src/Quotas.Module/ApplicationServiceCollectionExtensions.cs index 61f930dd15..5e6443efab 100644 --- a/Modules/Quotas/src/Quotas.Module/ApplicationServiceCollectionExtensions.cs +++ b/Modules/Quotas/src/Quotas.Module/ApplicationServiceCollectionExtensions.cs @@ -1,8 +1,8 @@ +using CreateQuotaForTier = Backbone.Modules.Quotas.Module.Features.Tiers.CreateQuotaForTier; using System.Reflection; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Application.MediatR; using Backbone.Modules.Quotas.Module.Features.Metrics.Shared; -using Backbone.Modules.Quotas.Module.Features.Tiers.CreateQuotaForTier; using Backbone.Modules.Quotas.Domain; using Backbone.Modules.Quotas.Domain.Metrics; using Microsoft.Extensions.DependencyInjection; @@ -16,7 +16,7 @@ internal static class ApplicationServiceCollectionExtensions public void AddApplication() { services.AddMediatR(c => c - .RegisterServicesFromAssemblyContaining() + .RegisterServicesFromAssemblyContaining() .AddOpenBehavior(typeof(LoggingBehavior<,>)) .AddOpenBehavior(typeof(RequestValidationBehavior<,>)) .AddOpenBehavior(typeof(QuotaEnforcerBehavior<,>)) diff --git a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/FileUploaded/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/FileUploaded/Handler.cs index 994c4a23ab..42d7940434 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/FileUploaded/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/FileUploaded/Handler.cs @@ -6,11 +6,11 @@ namespace Backbone.Modules.Quotas.Module.Features.DomainEvents.FileUploaded; -public class FileUploadedDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly IMetricStatusesService _metricStatusesService; - public FileUploadedDomainEventHandler(IMetricStatusesService metricStatusesService) + public Handler(IMetricStatusesService metricStatusesService) { _metricStatusesService = metricStatusesService; } diff --git a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/IdentityCreated/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/IdentityCreated/Handler.cs index 0debaae327..2157bf9494 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/IdentityCreated/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/IdentityCreated/Handler.cs @@ -9,14 +9,14 @@ namespace Backbone.Modules.Quotas.Module.Features.DomainEvents.IdentityCreated; -public class IdentityCreatedDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly IIdentitiesRepository _identitiesRepository; private readonly ITiersRepository _tiersRepository; private readonly MetricCalculatorFactory _metricCalculatorFactory; - private readonly ILogger _logger; + private readonly ILogger _logger; - public IdentityCreatedDomainEventHandler(IIdentitiesRepository identitiesRepository, ILogger logger, ITiersRepository tiersRepository, + public Handler(IIdentitiesRepository identitiesRepository, ILogger logger, ITiersRepository tiersRepository, MetricCalculatorFactory metricCalculatorFactory) { _identitiesRepository = identitiesRepository; diff --git a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/MessageCreated/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/MessageCreated/Handler.cs index c69f9171c0..0a44d22cb7 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/MessageCreated/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/MessageCreated/Handler.cs @@ -6,11 +6,11 @@ namespace Backbone.Modules.Quotas.Module.Features.DomainEvents.MessageCreated; -public class MessageCreatedDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly IMetricStatusesService _metricStatusesService; - public MessageCreatedDomainEventHandler(IMetricStatusesService metricStatusesService) + public Handler(IMetricStatusesService metricStatusesService) { _metricStatusesService = metricStatusesService; } diff --git a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/RelationshipStatusChanged/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/RelationshipStatusChanged/Handler.cs index 8115d72f12..c498bde540 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/RelationshipStatusChanged/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/RelationshipStatusChanged/Handler.cs @@ -6,11 +6,11 @@ namespace Backbone.Modules.Quotas.Module.Features.DomainEvents.RelationshipStatusChanged; -public class RelationshipStatusChangedDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly IMetricStatusesService _metricStatusesService; - public RelationshipStatusChangedDomainEventHandler(IMetricStatusesService metricStatusesService) + public Handler(IMetricStatusesService metricStatusesService) { _metricStatusesService = metricStatusesService; } diff --git a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/RelationshipTemplateCreated/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/RelationshipTemplateCreated/Handler.cs index 9d73606c36..2a42ed4dd3 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/RelationshipTemplateCreated/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/RelationshipTemplateCreated/Handler.cs @@ -6,11 +6,11 @@ namespace Backbone.Modules.Quotas.Module.Features.DomainEvents.RelationshipTemplateCreated; -public class RelationshipTemplateCreatedDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly IMetricStatusesService _metricStatusesService; - public RelationshipTemplateCreatedDomainEventHandler(IMetricStatusesService metricStatusesService) + public Handler(IMetricStatusesService metricStatusesService) { _metricStatusesService = metricStatusesService; } diff --git a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierCreated/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierCreated/Handler.cs index e3a6d60bcd..cb15ee26f6 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierCreated/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierCreated/Handler.cs @@ -6,12 +6,12 @@ namespace Backbone.Modules.Quotas.Module.Features.DomainEvents.TierCreated; -public class TierCreatedDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly ITiersRepository _tiersRepository; - private readonly ILogger _logger; + private readonly ILogger _logger; - public TierCreatedDomainEventHandler(ITiersRepository tiersRepository, ILogger logger) + public Handler(ITiersRepository tiersRepository, ILogger logger) { _tiersRepository = tiersRepository; _logger = logger; diff --git a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierDeleted/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierDeleted/Handler.cs index a1a795983f..9cda192be1 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierDeleted/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierDeleted/Handler.cs @@ -7,12 +7,12 @@ namespace Backbone.Modules.Quotas.Module.Features.DomainEvents.TierDeleted; -public class TierDeletedDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly ITiersRepository _tiersRepository; - private readonly ILogger _logger; + private readonly ILogger _logger; - public TierDeletedDomainEventHandler(ILogger logger, ITiersRepository tiersRepository) + public Handler(ILogger logger, ITiersRepository tiersRepository) { _tiersRepository = tiersRepository; _logger = logger; diff --git a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierOfIdentityChanged/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierOfIdentityChanged/Handler.cs index 8a5ee40cf2..ce6102f301 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierOfIdentityChanged/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierOfIdentityChanged/Handler.cs @@ -8,13 +8,13 @@ namespace Backbone.Modules.Quotas.Module.Features.DomainEvents.TierOfIdentityChanged; -public class TierOfIdentityChangedDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly IIdentitiesRepository _identitiesRepository; private readonly ITiersRepository _tiersRepository; private readonly MetricCalculatorFactory _metricCalculatorFactory; - public TierOfIdentityChangedDomainEventHandler(IIdentitiesRepository identitiesRepository, ITiersRepository tiersRepository, MetricCalculatorFactory metricCalculatorFactory) + public Handler(IIdentitiesRepository identitiesRepository, ITiersRepository tiersRepository, MetricCalculatorFactory metricCalculatorFactory) { _identitiesRepository = identitiesRepository; _tiersRepository = tiersRepository; diff --git a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierQuotaDefinitionCreated/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierQuotaDefinitionCreated/Handler.cs index 305f23ad64..58c2c223f9 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierQuotaDefinitionCreated/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierQuotaDefinitionCreated/Handler.cs @@ -6,14 +6,14 @@ namespace Backbone.Modules.Quotas.Module.Features.DomainEvents.TierQuotaDefinitionCreated; -public class TierQuotaDefinitionCreatedDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly IIdentitiesRepository _identitiesRepository; private readonly ITiersRepository _tiersRepository; - private readonly ILogger _logger; + private readonly ILogger _logger; - public TierQuotaDefinitionCreatedDomainEventHandler(IIdentitiesRepository identitiesRepository, - ITiersRepository tiersRepository, ILogger logger) + public Handler(IIdentitiesRepository identitiesRepository, + ITiersRepository tiersRepository, ILogger logger) { _identitiesRepository = identitiesRepository; _tiersRepository = tiersRepository; diff --git a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierQuotaDefinitionDeleted/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierQuotaDefinitionDeleted/Handler.cs index 4a30e0d899..0c687dfd06 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierQuotaDefinitionDeleted/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierQuotaDefinitionDeleted/Handler.cs @@ -9,14 +9,14 @@ namespace Backbone.Modules.Quotas.Module.Features.DomainEvents.TierQuotaDefinitionDeleted; -public class TierQuotaDefinitionDeletedDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly IIdentitiesRepository _identitiesRepository; private readonly IMetricStatusesService _metricStatusesService; - private readonly ILogger _logger; + private readonly ILogger _logger; - public TierQuotaDefinitionDeletedDomainEventHandler(IIdentitiesRepository identitiesRepository, IMetricStatusesService metricStatusesService, - ILogger logger) + public Handler(IIdentitiesRepository identitiesRepository, IMetricStatusesService metricStatusesService, + ILogger logger) { _metricStatusesService = metricStatusesService; _identitiesRepository = identitiesRepository; diff --git a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TokenCreated/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TokenCreated/Handler.cs index 8c2fc3a1f6..9192f95ba5 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TokenCreated/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TokenCreated/Handler.cs @@ -6,11 +6,11 @@ namespace Backbone.Modules.Quotas.Module.Features.DomainEvents.TokenCreated; -public class TokenCreatedDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly IMetricStatusesService _metricStatusesService; - public TokenCreatedDomainEventHandler(IMetricStatusesService metricStatusesService) + public Handler(IMetricStatusesService metricStatusesService) { _metricStatusesService = metricStatusesService; } diff --git a/Modules/Quotas/src/Quotas.Module/Features/Identities/CreateQuotaForIdentity/Command.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/CreateQuotaForIdentity/Command.cs index b2bf124aa5..e8f8fe5fc2 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Identities/CreateQuotaForIdentity/Command.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/CreateQuotaForIdentity/Command.cs @@ -4,7 +4,8 @@ namespace Backbone.Modules.Quotas.Module.Features.Identities.CreateQuotaForIdentity; -public class CreateQuotaForIdentityCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateQuotaForIdentityCommand")] +public class Command : IRequest { public required string IdentityAddress { get; init; } public required string MetricKey { get; init; } diff --git a/Modules/Quotas/src/Quotas.Module/Features/Identities/CreateQuotaForIdentity/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/CreateQuotaForIdentity/Handler.cs index 08d662ea68..ee2602be2e 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Identities/CreateQuotaForIdentity/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/CreateQuotaForIdentity/Handler.cs @@ -10,7 +10,7 @@ namespace Backbone.Modules.Quotas.Module.Features.Identities.CreateQuotaForIdentity; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IIdentitiesRepository _identitiesRepository; private readonly ILogger _logger; @@ -25,7 +25,7 @@ public Handler(IIdentitiesRepository identitiesRepository, ILogger logg _metricStatusesService = metricStatusesService; } - public async Task Handle(CreateQuotaForIdentityCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var identity = await _identitiesRepository.Get(request.IdentityAddress, cancellationToken, true) ?? throw new NotFoundException(nameof(Identity)); var parseMetricKeyResult = MetricKey.Parse(request.MetricKey); diff --git a/Modules/Quotas/src/Quotas.Module/Features/Identities/CreateQuotaForIdentity/Validator.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/CreateQuotaForIdentity/Validator.cs index 11b56f8e13..3645de7fd3 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Identities/CreateQuotaForIdentity/Validator.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/CreateQuotaForIdentity/Validator.cs @@ -6,11 +6,11 @@ namespace Backbone.Modules.Quotas.Module.Features.Identities.CreateQuotaForIdentity; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(c => c.IdentityAddress).ValidId(); + RuleFor(c => c.IdentityAddress).ValidId(); RuleFor(c => c.Max) .GreaterThan(0).WithErrorCode(GenericApplicationErrors.Validation.InvalidPropertyValue().Code); RuleFor(c => c.Period) diff --git a/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteIdentity/Command.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteIdentity/Command.cs index ae94899f53..df280a58b5 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteIdentity/Command.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteIdentity/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Quotas.Module.Features.Identities.DeleteIdentity; -public class DeleteIdentityCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteIdentityCommand")] +public class Command : IRequest { public required string IdentityAddress { get; init; } } diff --git a/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteIdentity/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteIdentity/Handler.cs index 4daed984fa..430842d0a7 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteIdentity/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteIdentity/Handler.cs @@ -4,7 +4,7 @@ namespace Backbone.Modules.Quotas.Module.Features.Identities.DeleteIdentity; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IIdentitiesRepository _identitiesRepository; @@ -13,7 +13,7 @@ public Handler(IIdentitiesRepository identitiesRepository) _identitiesRepository = identitiesRepository; } - public async Task Handle(DeleteIdentityCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { await _identitiesRepository.Delete(Identity.HasAddress(request.IdentityAddress), cancellationToken); } diff --git a/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs index 4fc98beda6..b86848ca8b 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs @@ -18,7 +18,7 @@ public IdentityDeleter(IMediator mediator, IDeletionProcessLogger deletionProces public async Task Delete(IdentityAddress identityAddress) { - await _mediator.Send(new DeleteIdentityCommand { IdentityAddress = identityAddress }); + await _mediator.Send(new Command { IdentityAddress = identityAddress }); await _deletionProcessLogger.LogDeletion(identityAddress, "QuotaIdentities"); } } diff --git a/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteIdentity/Validator.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteIdentity/Validator.cs index 5109b4cfa3..b9fc2ecba7 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteIdentity/Validator.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteIdentity/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Quotas.Module.Features.Identities.DeleteIdentity; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.IdentityAddress).ValidId(); + RuleFor(x => x.IdentityAddress).ValidId(); } } diff --git a/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteQuotaForIdentity/Command.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteQuotaForIdentity/Command.cs index 5043e1f19f..a413ad9525 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteQuotaForIdentity/Command.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteQuotaForIdentity/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Quotas.Module.Features.Identities.DeleteQuotaForIdentity; -public class DeleteQuotaForIdentityCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteQuotaForIdentityCommand")] +public class Command : IRequest { public required string IdentityAddress { get; init; } public required string IndividualQuotaId { get; init; } diff --git a/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteQuotaForIdentity/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteQuotaForIdentity/Handler.cs index e177495150..ffb69b6d1f 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteQuotaForIdentity/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteQuotaForIdentity/Handler.cs @@ -7,7 +7,7 @@ namespace Backbone.Modules.Quotas.Module.Features.Identities.DeleteQuotaForIdentity; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IIdentitiesRepository _identitiesRepository; private readonly ILogger _logger; @@ -18,7 +18,7 @@ public Handler(IIdentitiesRepository identitiesRepository, ILogger logg _logger = logger; } - public async Task Handle(DeleteQuotaForIdentityCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { _logger.LogTrace("Deleting individual quota with id: '{individualQuotaId}'.", request.IndividualQuotaId); diff --git a/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteQuotaForIdentity/Validator.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteQuotaForIdentity/Validator.cs index c3958a9e39..a898c86e54 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteQuotaForIdentity/Validator.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteQuotaForIdentity/Validator.cs @@ -5,11 +5,11 @@ namespace Backbone.Modules.Quotas.Module.Features.Identities.DeleteQuotaForIdentity; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(c => c.IdentityAddress).ValidId(); - RuleFor(c => c.IndividualQuotaId).ValidId(); + RuleFor(c => c.IdentityAddress).ValidId(); + RuleFor(c => c.IndividualQuotaId).ValidId(); } } diff --git a/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Handler.cs index b5f3a1d388..8a01b47289 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Quotas.Module.Features.Identities.GetIdentity; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IIdentitiesRepository _identitiesRepository; private readonly IMetricsRepository _metricsRepository; @@ -19,12 +19,12 @@ public Handler(IIdentitiesRepository identitiesRepository, IMetricsRepository me _metricCalculatorFactory = metricCalculatorFactory; } - public async Task Handle(GetIdentityQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var identity = await _identitiesRepository.Get(request.Address, cancellationToken) ?? throw new NotFoundException(nameof(Identity)); var metricsKeys = identity.TierQuotas.Select(q => q.MetricKey).Union(identity.IndividualQuotas.Select(q => q.MetricKey)); var metrics = await _metricsRepository.List(metricsKeys, cancellationToken); - return await GetIdentityResponse.Create(_metricCalculatorFactory, identity.Address, identity.TierQuotas, identity.IndividualQuotas, metrics, cancellationToken); + return await Response.Create(_metricCalculatorFactory, identity.Address, identity.TierQuotas, identity.IndividualQuotas, metrics, cancellationToken); } } diff --git a/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Query.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Query.cs index 3394b7771a..4e1fa1cb3c 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Query.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Query.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Quotas.Module.Features.Identities.GetIdentity; -public class GetIdentityQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetIdentityQuery")] +public class Query : IRequest { public required string Address { get; init; } } diff --git a/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Response.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Response.cs index 19094e62a7..950a585b3c 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Response.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Response.cs @@ -6,12 +6,13 @@ namespace Backbone.Modules.Quotas.Module.Features.Identities.GetIdentity; -public class GetIdentityResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetIdentityResponse")] +public class Response { public required string Address { get; set; } public required IEnumerable Quotas { get; set; } - public static async Task Create(MetricCalculatorFactory metricCalculatorFactory, string identityAddress, IEnumerable tierQuotas, IEnumerable individualQuotas, IEnumerable metrics, CancellationToken cancellationToken) + public static async Task Create(MetricCalculatorFactory metricCalculatorFactory, string identityAddress, IEnumerable tierQuotas, IEnumerable individualQuotas, IEnumerable metrics, CancellationToken cancellationToken) { var quotasList = new List(); @@ -27,7 +28,7 @@ public static async Task Create(MetricCalculatorFactory met )); } - return new GetIdentityResponse + return new Response { Address = identityAddress, Quotas = quotasList diff --git a/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Validator.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Validator.cs index 2a08515f53..2f513ff1c4 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Validator.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Quotas.Module.Features.Identities.GetIdentity; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.Address).ValidId(); + RuleFor(x => x.Address).ValidId(); } } diff --git a/Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Endpoint.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Endpoint.cs index 39021afd61..efa6160710 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Endpoint.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Endpoint.cs @@ -12,14 +12,14 @@ internal static class Endpoint public static RouteGroupBuilder MapListQuotasForIdentityEndpoint(this RouteGroupBuilder group) { group.MapGet("", Handle) - .Produces>(StatusCodes.Status200OK) + .Produces>(StatusCodes.Status200OK) .Produces(StatusCodes.Status400BadRequest); return group; } private static async Task Handle(IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new ListQuotasForIdentityQuery(), cancellationToken); + var response = await mediator.Send(new Query(), cancellationToken); return EnvelopeHttpResults.Ok(response); } } diff --git a/Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Handler.cs index 188d7316c0..6b4014c72c 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Handler.cs @@ -10,7 +10,7 @@ namespace Backbone.Modules.Quotas.Module.Features.Identities.ListQuotasForIdentity; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IIdentitiesRepository _identitiesRepository; private readonly MetricCalculatorFactory _metricCalculatorFactory; @@ -23,13 +23,13 @@ public Handler(IUserContext userContext, IIdentitiesRepository identitiesReposit _metricCalculatorFactory = metricCalculatorFactory; } - public async Task Handle(ListQuotasForIdentityQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var identity = await _identitiesRepository.Get(_identityAddress, cancellationToken) ?? throw new Exception($"Identity with Id '{_identityAddress}' not found."); var quotaGroupDTOs = await identity.GetAllQuotas().AsQuotaGroupDTOs(identity.Address, _metricCalculatorFactory, cancellationToken); - return new ListQuotasForIdentityResponse(quotaGroupDTOs); + return new Response(quotaGroupDTOs); } } diff --git a/Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Query.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Query.cs index 623f14c7e7..9ff074cc13 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Query.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Query.cs @@ -2,4 +2,5 @@ namespace Backbone.Modules.Quotas.Module.Features.Identities.ListQuotasForIdentity; -public class ListQuotasForIdentityQuery : IRequest; +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListQuotasForIdentityQuery")] +public class Query : IRequest; diff --git a/Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Response.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Response.cs index d20fc8851e..0537550e16 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Response.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Response.cs @@ -3,9 +3,10 @@ namespace Backbone.Modules.Quotas.Module.Features.Identities.ListQuotasForIdentity; -public class ListQuotasForIdentityResponse : CollectionResponseBase +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListQuotasForIdentityResponse")] +public class Response : CollectionResponseBase { - public ListQuotasForIdentityResponse(IEnumerable items) : base(items) { } + public Response(IEnumerable items) : base(items) { } } public class SingleQuotaDTO diff --git a/Modules/Quotas/src/Quotas.Module/Features/Metrics/ListMetrics/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/Metrics/ListMetrics/Handler.cs index f7052f00a7..f5dee5180b 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Metrics/ListMetrics/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Metrics/ListMetrics/Handler.cs @@ -3,7 +3,7 @@ namespace Backbone.Modules.Quotas.Module.Features.Metrics.ListMetrics; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IMetricsRepository _metricsRepository; @@ -12,9 +12,9 @@ public Handler(IMetricsRepository metricsRepository) _metricsRepository = metricsRepository; } - public async Task Handle(ListMetricsQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var metrics = await _metricsRepository.List(cancellationToken); - return new ListMetricsResponse(metrics); + return new Response(metrics); } } diff --git a/Modules/Quotas/src/Quotas.Module/Features/Metrics/ListMetrics/Query.cs b/Modules/Quotas/src/Quotas.Module/Features/Metrics/ListMetrics/Query.cs index 0031e51cb7..b34dd24e48 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Metrics/ListMetrics/Query.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Metrics/ListMetrics/Query.cs @@ -2,4 +2,5 @@ namespace Backbone.Modules.Quotas.Module.Features.Metrics.ListMetrics; -public class ListMetricsQuery : IRequest; +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListMetricsQuery")] +public class Query : IRequest; diff --git a/Modules/Quotas/src/Quotas.Module/Features/Metrics/ListMetrics/Response.cs b/Modules/Quotas/src/Quotas.Module/Features/Metrics/ListMetrics/Response.cs index c1e79a63cb..647e544732 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Metrics/ListMetrics/Response.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Metrics/ListMetrics/Response.cs @@ -4,9 +4,10 @@ namespace Backbone.Modules.Quotas.Module.Features.Metrics.ListMetrics; -public class ListMetricsResponse : CollectionResponseBase +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListMetricsResponse")] +public class Response : CollectionResponseBase { - public ListMetricsResponse(IEnumerable items) : base(items.Select(m => new MetricDTO(m))) + public Response(IEnumerable items) : base(items.Select(m => new MetricDTO(m))) { } } diff --git a/Modules/Quotas/src/Quotas.Module/Features/Tiers/CreateQuotaForTier/Command.cs b/Modules/Quotas/src/Quotas.Module/Features/Tiers/CreateQuotaForTier/Command.cs index 66114b587f..8e47d49ec6 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Tiers/CreateQuotaForTier/Command.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Tiers/CreateQuotaForTier/Command.cs @@ -4,7 +4,8 @@ namespace Backbone.Modules.Quotas.Module.Features.Tiers.CreateQuotaForTier; -public class CreateQuotaForTierCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateQuotaForTierCommand")] +public class Command : IRequest { public required string TierId { get; init; } public required string MetricKey { get; init; } diff --git a/Modules/Quotas/src/Quotas.Module/Features/Tiers/CreateQuotaForTier/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/Tiers/CreateQuotaForTier/Handler.cs index 5e06494d7d..e4814b9e73 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Tiers/CreateQuotaForTier/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Tiers/CreateQuotaForTier/Handler.cs @@ -9,7 +9,7 @@ namespace Backbone.Modules.Quotas.Module.Features.Tiers.CreateQuotaForTier; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly ITiersRepository _tiersRepository; private readonly ILogger _logger; @@ -22,7 +22,7 @@ public Handler(ITiersRepository tierRepository, ILogger logger, IMetric _metricsRepository = metricsRepository; } - public async Task Handle(CreateQuotaForTierCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { _logger.LogTrace("Handling CreateQuotaForTierCommand ..."); diff --git a/Modules/Quotas/src/Quotas.Module/Features/Tiers/CreateQuotaForTier/Validator.cs b/Modules/Quotas/src/Quotas.Module/Features/Tiers/CreateQuotaForTier/Validator.cs index b97c1b480f..2cea3f429b 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Tiers/CreateQuotaForTier/Validator.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Tiers/CreateQuotaForTier/Validator.cs @@ -6,11 +6,11 @@ namespace Backbone.Modules.Quotas.Module.Features.Tiers.CreateQuotaForTier; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(c => c.TierId).ValidId(); + RuleFor(c => c.TierId).ValidId(); RuleFor(c => c.Max) .GreaterThan(0).WithErrorCode(GenericApplicationErrors.Validation.InvalidPropertyValue().Code); RuleFor(c => c.Period) diff --git a/Modules/Quotas/src/Quotas.Module/Features/Tiers/DeleteTierQuotaDefinition/Command.cs b/Modules/Quotas/src/Quotas.Module/Features/Tiers/DeleteTierQuotaDefinition/Command.cs index 4f850eab98..38ee98409d 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Tiers/DeleteTierQuotaDefinition/Command.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Tiers/DeleteTierQuotaDefinition/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Quotas.Module.Features.Tiers.DeleteTierQuotaDefinition; -public class DeleteTierQuotaDefinitionCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteTierQuotaDefinitionCommand")] +public class Command : IRequest { public required string TierId { get; init; } public required string TierQuotaDefinitionId { get; init; } diff --git a/Modules/Quotas/src/Quotas.Module/Features/Tiers/DeleteTierQuotaDefinition/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/Tiers/DeleteTierQuotaDefinition/Handler.cs index dba543d23f..b6792d23d6 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Tiers/DeleteTierQuotaDefinition/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Tiers/DeleteTierQuotaDefinition/Handler.cs @@ -7,7 +7,7 @@ namespace Backbone.Modules.Quotas.Module.Features.Tiers.DeleteTierQuotaDefinition; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly ITiersRepository _tiersRepository; private readonly ILogger _logger; @@ -18,7 +18,7 @@ public Handler(ITiersRepository tiersRepository, ILogger logger) _logger = logger; } - public async Task Handle(DeleteTierQuotaDefinitionCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var tier = await _tiersRepository.Get(request.TierId, cancellationToken, true) ?? throw new NotFoundException(nameof(Tier)); diff --git a/Modules/Quotas/src/Quotas.Module/Features/Tiers/DeleteTierQuotaDefinition/Validator.cs b/Modules/Quotas/src/Quotas.Module/Features/Tiers/DeleteTierQuotaDefinition/Validator.cs index b8cd9fca35..b59b67d159 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Tiers/DeleteTierQuotaDefinition/Validator.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Tiers/DeleteTierQuotaDefinition/Validator.cs @@ -4,11 +4,11 @@ namespace Backbone.Modules.Quotas.Module.Features.Tiers.DeleteTierQuotaDefinition; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(c => c.TierId).ValidId(); - RuleFor(c => c.TierQuotaDefinitionId).ValidId(); + RuleFor(c => c.TierId).ValidId(); + RuleFor(c => c.TierQuotaDefinitionId).ValidId(); } } diff --git a/Modules/Quotas/src/Quotas.Module/Features/Tiers/GetTier/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/Tiers/GetTier/Handler.cs index 2ddea4d957..282a7f951f 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Tiers/GetTier/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Tiers/GetTier/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Quotas.Module.Features.Tiers.GetTier; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly ITiersRepository _tiersRepository; private readonly IMetricsRepository _metricsRepository; @@ -17,7 +17,7 @@ public Handler(ITiersRepository tiersRepository, IMetricsRepository metricsRepos _metricsRepository = metricsRepository; } - public async Task Handle(GetTierQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var tier = await _tiersRepository.Get(request.Id, cancellationToken) ?? throw new NotFoundException(nameof(Tier)); diff --git a/Modules/Quotas/src/Quotas.Module/Features/Tiers/GetTier/Query.cs b/Modules/Quotas/src/Quotas.Module/Features/Tiers/GetTier/Query.cs index b658f647b6..298f8571d7 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Tiers/GetTier/Query.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Tiers/GetTier/Query.cs @@ -3,7 +3,8 @@ namespace Backbone.Modules.Quotas.Module.Features.Tiers.GetTier; -public class GetTierQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetTierQuery")] +public class Query : IRequest { public required string Id { get; init; } } diff --git a/Modules/Quotas/src/Quotas.Module/Features/Tiers/GetTier/Validator.cs b/Modules/Quotas/src/Quotas.Module/Features/Tiers/GetTier/Validator.cs index 85e1803e3a..b70da9f2ed 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Tiers/GetTier/Validator.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Tiers/GetTier/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Quotas.Module.Features.Tiers.GetTier; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(c => c.Id).ValidId(); + RuleFor(c => c.Id).ValidId(); } } diff --git a/Modules/Quotas/src/Quotas.Module/Features/Tiers/SeedQueuedForDeletionTier/Command.cs b/Modules/Quotas/src/Quotas.Module/Features/Tiers/SeedQueuedForDeletionTier/Command.cs index e9822f1e34..0b3451b856 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Tiers/SeedQueuedForDeletionTier/Command.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Tiers/SeedQueuedForDeletionTier/Command.cs @@ -2,4 +2,5 @@ namespace Backbone.Modules.Quotas.Module.Features.Tiers.SeedQueuedForDeletionTier; -public class SeedQueuedForDeletionTierCommand : IRequest; +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("SeedQueuedForDeletionTierCommand")] +public class Command : IRequest; diff --git a/Modules/Quotas/src/Quotas.Module/Features/Tiers/SeedQueuedForDeletionTier/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/Tiers/SeedQueuedForDeletionTier/Handler.cs index 79c7f3979c..943441840f 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Tiers/SeedQueuedForDeletionTier/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Tiers/SeedQueuedForDeletionTier/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Quotas.Module.Features.Tiers.SeedQueuedForDeletionTier; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private const int MAX_RETRIES_TO_FIND_QUEUED_FOR_DELETION_TIER = 5; private static readonly TimeSpan RETRY_DELAY = 5.Seconds(); @@ -20,7 +20,7 @@ public Handler(ITiersRepository tiersRepository, IMetricsRepository metricsRepos _metricsRepository = metricsRepository; } - public async Task Handle(SeedQueuedForDeletionTierCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var queuedForDeletionTier = await ReadQueuedForDeletionTier(cancellationToken) ?? throw new Exception("Queued for deletion tier not found"); await Seed(queuedForDeletionTier); diff --git a/Modules/Quotas/src/Quotas.Module/QuotasEventBusExtensions.cs b/Modules/Quotas/src/Quotas.Module/QuotasEventBusExtensions.cs index 784d150278..eccc2a846f 100644 --- a/Modules/Quotas/src/Quotas.Module/QuotasEventBusExtensions.cs +++ b/Modules/Quotas/src/Quotas.Module/QuotasEventBusExtensions.cs @@ -1,18 +1,18 @@ +using FileUploaded = Backbone.Modules.Quotas.Module.Features.DomainEvents.FileUploaded; +using IdentityCreated = Backbone.Modules.Quotas.Module.Features.DomainEvents.IdentityCreated; +using MessageCreated = Backbone.Modules.Quotas.Module.Features.DomainEvents.MessageCreated; +using RelationshipStatusChanged = Backbone.Modules.Quotas.Module.Features.DomainEvents.RelationshipStatusChanged; +using RelationshipTemplateCreated = Backbone.Modules.Quotas.Module.Features.DomainEvents.RelationshipTemplateCreated; +using TierCreated = Backbone.Modules.Quotas.Module.Features.DomainEvents.TierCreated; +using TierDeleted = Backbone.Modules.Quotas.Module.Features.DomainEvents.TierDeleted; +using TierOfIdentityChanged = Backbone.Modules.Quotas.Module.Features.DomainEvents.TierOfIdentityChanged; +using TierQuotaDefinitionCreated = Backbone.Modules.Quotas.Module.Features.DomainEvents.TierQuotaDefinitionCreated; +using TierQuotaDefinitionDeleted = Backbone.Modules.Quotas.Module.Features.DomainEvents.TierQuotaDefinitionDeleted; +using TokenCreated = Backbone.Modules.Quotas.Module.Features.DomainEvents.TokenCreated; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.Modules.Devices.Contracts.DomainEvents; using Backbone.Modules.Files.Contracts.DomainEvents; using Backbone.Modules.Messages.Contracts.DomainEvents; -using Backbone.Modules.Quotas.Module.Features.DomainEvents.FileUploaded; -using Backbone.Modules.Quotas.Module.Features.DomainEvents.IdentityCreated; -using Backbone.Modules.Quotas.Module.Features.DomainEvents.MessageCreated; -using Backbone.Modules.Quotas.Module.Features.DomainEvents.RelationshipStatusChanged; -using Backbone.Modules.Quotas.Module.Features.DomainEvents.RelationshipTemplateCreated; -using Backbone.Modules.Quotas.Module.Features.DomainEvents.TierCreated; -using Backbone.Modules.Quotas.Module.Features.DomainEvents.TierDeleted; -using Backbone.Modules.Quotas.Module.Features.DomainEvents.TierOfIdentityChanged; -using Backbone.Modules.Quotas.Module.Features.DomainEvents.TierQuotaDefinitionCreated; -using Backbone.Modules.Quotas.Module.Features.DomainEvents.TierQuotaDefinitionDeleted; -using Backbone.Modules.Quotas.Module.Features.DomainEvents.TokenCreated; using Backbone.Modules.Quotas.Contracts.DomainEvents; using Backbone.Modules.Relationships.Contracts.DomainEvents; using Backbone.Modules.Tokens.Contracts.DomainEvents; @@ -30,17 +30,17 @@ private static async Task SubscribeToSynchronizationEvents(IEventBus eventBus) { await Task.WhenAll(new List { - eventBus.Subscribe(), - eventBus.Subscribe(), - eventBus.Subscribe(), - eventBus.Subscribe(), - eventBus.Subscribe(), - eventBus.Subscribe(), - eventBus.Subscribe(), - eventBus.Subscribe(), - eventBus.Subscribe(), - eventBus.Subscribe(), - eventBus.Subscribe() + eventBus.Subscribe(), + eventBus.Subscribe(), + eventBus.Subscribe(), + eventBus.Subscribe(), + eventBus.Subscribe(), + eventBus.Subscribe(), + eventBus.Subscribe(), + eventBus.Subscribe(), + eventBus.Subscribe(), + eventBus.Subscribe(), + eventBus.Subscribe() }); } } diff --git a/Modules/Quotas/test/Quotas.Module.Tests/Tests/DomainEvents/TierDeleted/TierDeletedDomainEventHandlerTests.cs b/Modules/Quotas/test/Quotas.Module.Tests/Tests/DomainEvents/TierDeleted/TierDeletedDomainEventHandlerTests.cs index 2d151b8f79..41ca3e2eeb 100644 --- a/Modules/Quotas/test/Quotas.Module.Tests/Tests/DomainEvents/TierDeleted/TierDeletedDomainEventHandlerTests.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/Tests/DomainEvents/TierDeleted/TierDeletedDomainEventHandlerTests.cs @@ -1,5 +1,5 @@ +using TierDeletedSlice = Backbone.Modules.Quotas.Module.Features.DomainEvents.TierDeleted; using Backbone.Modules.Devices.Contracts.DomainEvents; -using Backbone.Modules.Quotas.Module.Features.DomainEvents.TierDeleted; using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; using FakeItEasy; @@ -27,8 +27,8 @@ public async Task Deletes_tier_after_consuming_domain_event() A.CallTo(() => tiersRepository.RemoveById(tier.Id)).MustHaveHappenedOnceExactly(); } - private static TierDeletedDomainEventHandler CreateHandler(ITiersRepository tiersRepository) + private static TierDeletedSlice.Handler CreateHandler(ITiersRepository tiersRepository) { - return new TierDeletedDomainEventHandler(A.Dummy>(), tiersRepository); + return new TierDeletedSlice.Handler(A.Dummy>(), tiersRepository); } } diff --git a/Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/Commands/DeleteIdentityCommandTests/HandlerTests.cs b/Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/Commands/DeleteIdentityCommandTests/HandlerTests.cs index f3a27f77cf..a6fe9be096 100644 --- a/Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/Commands/DeleteIdentityCommandTests/HandlerTests.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/Commands/DeleteIdentityCommandTests/HandlerTests.cs @@ -1,4 +1,5 @@ -using System.Linq.Expressions; +using DeleteIdentity = Backbone.Modules.Quotas.Module.Features.Identities.DeleteIdentity; +using System.Linq.Expressions; using Backbone.Modules.Quotas.Module.Features.Identities.DeleteIdentity; using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; @@ -16,7 +17,7 @@ public async Task Handler_calls_deletion_method_on_repository() var mockIdentitiesRepository = A.Fake(); var handler = CreateHandler(mockIdentitiesRepository); - await handler.Handle(new DeleteIdentityCommand { IdentityAddress = identity.Address }, CancellationToken.None); + await handler.Handle(new DeleteIdentity.Command { IdentityAddress = identity.Address }, CancellationToken.None); A.CallTo(() => mockIdentitiesRepository.Delete(A>>._, A._)).MustHaveHappenedOnceExactly(); } diff --git a/Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/IdentityCreatedDomainEventHandlerTests.cs b/Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/IdentityCreatedDomainEventHandlerTests.cs index 93cb903556..3e3a508feb 100644 --- a/Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/IdentityCreatedDomainEventHandlerTests.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/IdentityCreatedDomainEventHandlerTests.cs @@ -1,5 +1,5 @@ +using IdentityCreated = Backbone.Modules.Quotas.Module.Features.DomainEvents.IdentityCreated; using Backbone.Modules.Devices.Contracts.DomainEvents; -using Backbone.Modules.Quotas.Module.Features.DomainEvents.IdentityCreated; using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Module.Tests.TestDoubles; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; @@ -55,10 +55,10 @@ public async Task Assigns_tier_quotas_to_new_identity() A.CallTo(() => mockIdentitiesRepository.Add(A.That.Matches(i => i.TierQuotas.Count == 2), CancellationToken.None)).MustHaveHappened(); } - private static IdentityCreatedDomainEventHandler CreateHandler(IIdentitiesRepository identities, FindTiersStubRepository tiers) + private static IdentityCreated.Handler CreateHandler(IIdentitiesRepository identities, FindTiersStubRepository tiers) { - var logger = A.Fake>(); + var logger = A.Fake>(); var metricCalculatorFactory = A.Fake(); - return new IdentityCreatedDomainEventHandler(identities, logger, tiers, metricCalculatorFactory); + return new IdentityCreated.Handler(identities, logger, tiers, metricCalculatorFactory); } } diff --git a/Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/IdentityDeleterTests.cs b/Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/IdentityDeleterTests.cs index b35412584a..bead94209f 100644 --- a/Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/IdentityDeleterTests.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/IdentityDeleterTests.cs @@ -1,4 +1,5 @@ -using Backbone.BuildingBlocks.Application.Identities; +using DeleteIdentity = Backbone.Modules.Quotas.Module.Features.Identities.DeleteIdentity; +using Backbone.BuildingBlocks.Application.Identities; using Backbone.Modules.Quotas.Module.Features.Identities.DeleteIdentity; using FakeItEasy; using MediatR; @@ -20,7 +21,7 @@ public async Task Deleter_calls_correct_command() await deleter.Delete(identityAddress); // Assert - A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); + A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); } [Fact] diff --git a/Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/TierQuotaDefinitionCreatedDomainEventHandlerTests.cs b/Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/TierQuotaDefinitionCreatedDomainEventHandlerTests.cs index 3592adce93..98c65c8618 100644 --- a/Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/TierQuotaDefinitionCreatedDomainEventHandlerTests.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/TierQuotaDefinitionCreatedDomainEventHandlerTests.cs @@ -1,4 +1,4 @@ -using Backbone.Modules.Quotas.Module.Features.DomainEvents.TierQuotaDefinitionCreated; +using TierQuotaDefinitionCreated = Backbone.Modules.Quotas.Module.Features.DomainEvents.TierQuotaDefinitionCreated; using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Module.Tests.TestDoubles; using Backbone.Modules.Quotas.Contracts.DomainEvents; @@ -68,9 +68,9 @@ public async Task Creates_tier_quota_after_consuming_domain_event() // ).MustHaveHappened(); // } - private static TierQuotaDefinitionCreatedDomainEventHandler CreateHandler(IIdentitiesRepository identities, ITiersRepository tierQuotaDefinitions) + private static TierQuotaDefinitionCreated.Handler CreateHandler(IIdentitiesRepository identities, ITiersRepository tierQuotaDefinitions) { - var logger = A.Fake>(); - return new TierQuotaDefinitionCreatedDomainEventHandler(identities, tierQuotaDefinitions, logger); + var logger = A.Fake>(); + return new TierQuotaDefinitionCreated.Handler(identities, tierQuotaDefinitions, logger); } } diff --git a/Modules/Quotas/test/Quotas.Module.Tests/Tests/Quotas/CreateQuotaForIdentity/HandlerTests.cs b/Modules/Quotas/test/Quotas.Module.Tests/Tests/Quotas/CreateQuotaForIdentity/HandlerTests.cs index 5776860575..8a65d83479 100644 --- a/Modules/Quotas/test/Quotas.Module.Tests/Tests/Quotas/CreateQuotaForIdentity/HandlerTests.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/Tests/Quotas/CreateQuotaForIdentity/HandlerTests.cs @@ -1,4 +1,5 @@ -using Backbone.Modules.Quotas.Module.Features.Identities.CreateQuotaForIdentity; +using CreateQuotaForIdentitySlice = Backbone.Modules.Quotas.Module.Features.Identities.CreateQuotaForIdentity; +using Backbone.Modules.Quotas.Module.Features.Identities.CreateQuotaForIdentity; using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Module.Features.Metrics.Shared; using Backbone.Modules.Quotas.Module.Tests.TestDoubles; @@ -20,7 +21,7 @@ public async Task Updates_metric_statuses_after_creating_quota_for_identity() var metricKey = MetricKey.NUMBER_OF_SENT_MESSAGES; var tierId = TierId.Parse("TIRsomeTierId1111111"); var identity = new Identity(CreateRandomIdentityAddress(), tierId); - var command = new CreateQuotaForIdentityCommand { IdentityAddress = identity.Address, MetricKey = metricKey.Value, Max = 5, Period = QuotaPeriod.Month }; + var command = new CreateQuotaForIdentitySlice.Command { IdentityAddress = identity.Address, MetricKey = metricKey.Value, Max = 5, Period = QuotaPeriod.Month }; var identitiesRepository = A.Fake(); A.CallTo(() => identitiesRepository.Get(identity.Address, A._, A._)).Returns(identity); diff --git a/Modules/Quotas/test/Quotas.Module.Tests/Tests/Tiers/TierCreatedDomainEventHandlerTests.cs b/Modules/Quotas/test/Quotas.Module.Tests/Tests/Tiers/TierCreatedDomainEventHandlerTests.cs index 04187068f8..354219bb7f 100644 --- a/Modules/Quotas/test/Quotas.Module.Tests/Tests/Tiers/TierCreatedDomainEventHandlerTests.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/Tests/Tiers/TierCreatedDomainEventHandlerTests.cs @@ -1,5 +1,5 @@ +using TierCreated = Backbone.Modules.Quotas.Module.Features.DomainEvents.TierCreated; using Backbone.Modules.Devices.Contracts.DomainEvents; -using Backbone.Modules.Quotas.Module.Features.DomainEvents.TierCreated; using Backbone.Modules.Quotas.Module.Tests.TestDoubles; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; using FakeItEasy; @@ -27,9 +27,9 @@ public async Task Creates_tier_after_consuming_domain_event() mockTierRepository.WasCalledWith.Name.ShouldBe(name); } - private static TierCreatedDomainEventHandler CreateHandler(AddMockTiersRepository tiers) + private static TierCreated.Handler CreateHandler(AddMockTiersRepository tiers) { - var logger = A.Fake>(); - return new TierCreatedDomainEventHandler(tiers, logger); + var logger = A.Fake>(); + return new TierCreated.Handler(tiers, logger); } } diff --git a/Modules/Relationships/src/Relationships.Module/ApplicationServiceCollectionExtensions.cs b/Modules/Relationships/src/Relationships.Module/ApplicationServiceCollectionExtensions.cs index e41eaaa15c..575a709883 100644 --- a/Modules/Relationships/src/Relationships.Module/ApplicationServiceCollectionExtensions.cs +++ b/Modules/Relationships/src/Relationships.Module/ApplicationServiceCollectionExtensions.cs @@ -1,3 +1,4 @@ +using CreateRelationshipTemplate = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.CreateRelationshipTemplate; using System.Reflection; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Application.MediatR; @@ -14,7 +15,7 @@ internal static class ApplicationServiceCollectionExtensions public void AddApplication() { services.AddMediatR(c => c - .RegisterServicesFromAssemblyContaining() + .RegisterServicesFromAssemblyContaining() .AddOpenBehavior(typeof(LoggingBehavior<,>)) .AddOpenBehavior(typeof(RequestValidationBehavior<,>)) .AddOpenBehavior(typeof(QuotaEnforcerBehavior<,>)) diff --git a/Modules/Relationships/src/Relationships.Module/Features/DomainEvents/FeatureFlagsOfIdentityChanged/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/DomainEvents/FeatureFlagsOfIdentityChanged/Handler.cs index 174a7dfb91..6298ce68c5 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/DomainEvents/FeatureFlagsOfIdentityChanged/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/DomainEvents/FeatureFlagsOfIdentityChanged/Handler.cs @@ -10,13 +10,13 @@ namespace Backbone.Modules.Relationships.Module.Features.DomainEvents.FeatureFlagsOfIdentityChanged; -public class FeatureFlagsOfIdentityChangedDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly IRelationshipTemplatesRepository _relationshipTemplatesRepository; private readonly IRelationshipsRepository _relationshipsRepository; private readonly IEventBus _eventBus; - public FeatureFlagsOfIdentityChangedDomainEventHandler(IRelationshipTemplatesRepository relationshipTemplatesRepository, IEventBus eventBus, IRelationshipsRepository relationshipsRepository) + public Handler(IRelationshipTemplatesRepository relationshipTemplatesRepository, IEventBus eventBus, IRelationshipsRepository relationshipsRepository) { _relationshipTemplatesRepository = relationshipTemplatesRepository; _eventBus = eventBus; diff --git a/Modules/Relationships/src/Relationships.Module/Features/DomainEvents/IdentityDeleted/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/DomainEvents/IdentityDeleted/Handler.cs index 8e18f708dd..535fe42d87 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/DomainEvents/IdentityDeleted/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/DomainEvents/IdentityDeleted/Handler.cs @@ -8,12 +8,12 @@ namespace Backbone.Modules.Relationships.Module.Features.DomainEvents.IdentityDeleted; -public class IdentityDeletedDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly IRelationshipsRepository _relationshipsRepository; private readonly IEventBus _eventBus; - public IdentityDeletedDomainEventHandler(IRelationshipsRepository relationshipsRepository, IEventBus eventBus) + public Handler(IRelationshipsRepository relationshipsRepository, IEventBus eventBus) { _relationshipsRepository = relationshipsRepository; _eventBus = eventBus; diff --git a/Modules/Relationships/src/Relationships.Module/Features/DomainEvents/IdentityDeletionCancelled/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/DomainEvents/IdentityDeletionCancelled/Handler.cs index 421f5fd14b..684246a990 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/DomainEvents/IdentityDeletionCancelled/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/DomainEvents/IdentityDeletionCancelled/Handler.cs @@ -8,12 +8,12 @@ namespace Backbone.Modules.Relationships.Module.Features.DomainEvents.IdentityDeletionCancelled; -public class IdentityDeletionCancelledDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly IRelationshipsRepository _relationshipsRepository; private readonly IEventBus _eventBus; - public IdentityDeletionCancelledDomainEventHandler(IRelationshipsRepository relationshipsRepository, IEventBus eventBus) + public Handler(IRelationshipsRepository relationshipsRepository, IEventBus eventBus) { _relationshipsRepository = relationshipsRepository; _eventBus = eventBus; diff --git a/Modules/Relationships/src/Relationships.Module/Features/DomainEvents/IdentityToBeDeleted/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/DomainEvents/IdentityToBeDeleted/Handler.cs index 8ff8811ad4..e82d1cc590 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/DomainEvents/IdentityToBeDeleted/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/DomainEvents/IdentityToBeDeleted/Handler.cs @@ -8,12 +8,12 @@ namespace Backbone.Modules.Relationships.Module.Features.DomainEvents.IdentityToBeDeleted; -public class IdentityToBeDeletedDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly IRelationshipsRepository _relationshipsRepository; private readonly IEventBus _eventBus; - public IdentityToBeDeletedDomainEventHandler(IRelationshipsRepository relationshipsRepository, IEventBus eventBus) + public Handler(IRelationshipsRepository relationshipsRepository, IEventBus eventBus) { _relationshipsRepository = relationshipsRepository; _eventBus = eventBus; diff --git a/Modules/Relationships/src/Relationships.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs b/Modules/Relationships/src/Relationships.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs index 6331986657..43bb3158ff 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs @@ -1,9 +1,9 @@ +using AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity; +using AnonymizeRelationshipTemplatesForIdentity = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplatesForIdentity; +using DecomposeAndAnonymizeRelationshipsOfIdentity = Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeAndAnonymizeRelationshipsOfIdentity; +using DeleteRelationshipTemplatesOfIdentity = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplatesOfIdentity; using Backbone.BuildingBlocks.Application.Identities; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity; -using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplatesForIdentity; -using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplatesOfIdentity; -using Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeAndAnonymizeRelationshipsOfIdentity; using MediatR; namespace Backbone.Modules.Relationships.Module.Features.Identities.DeleteIdentity; @@ -21,12 +21,12 @@ public IdentityDeleter(IMediator mediator, IDeletionProcessLogger deletionProces public async Task Delete(IdentityAddress identityAddress) { - await _mediator.Send(new DecomposeAndAnonymizeRelationshipsOfIdentityCommand { IdentityAddress = identityAddress }); + await _mediator.Send(new DecomposeAndAnonymizeRelationshipsOfIdentity.Command { IdentityAddress = identityAddress }); await _deletionProcessLogger.LogDeletion(identityAddress, "Relationships"); - await _mediator.Send(new DeleteRelationshipTemplatesOfIdentityCommand { IdentityAddress = identityAddress }); - await _mediator.Send(new AnonymizeRelationshipTemplatesForIdentityCommand { IdentityAddress = identityAddress }); + await _mediator.Send(new DeleteRelationshipTemplatesOfIdentity.Command { IdentityAddress = identityAddress }); + await _mediator.Send(new AnonymizeRelationshipTemplatesForIdentity.Command { IdentityAddress = identityAddress }); await _deletionProcessLogger.LogDeletion(identityAddress, "RelationshipTemplates"); - await _mediator.Send(new AnonymizeRelationshipTemplateAllocationsAllocatedByIdentityCommand { IdentityAddress = identityAddress }); + await _mediator.Send(new AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity.Command { IdentityAddress = identityAddress }); await _deletionProcessLogger.LogDeletion(identityAddress, "RelationshipTemplateAllocations"); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Endpoint.cs index eaac44c318..40b84e8d4a 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Endpoint.cs @@ -21,7 +21,7 @@ public static IEndpointRouteBuilder MapListPublicRelationshipTemplateReferencesE private static async Task Handle(IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new ListPublicRelationshipTemplateReferencesQuery(), cancellationToken); + var response = await mediator.Send(new Query(), cancellationToken); return EnvelopeHttpResults.Ok(response); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Handler.cs index e84e2c89fd..92ffdcb790 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Handler.cs @@ -5,9 +5,9 @@ namespace Backbone.Modules.Relationships.Module.Features.PublicRelationshipTemplateReferences.ListPublicRelationshipTemplateReferences; public class Handler(IUserContext userContext, IConfiguration configuration) - : IRequestHandler> + : IRequestHandler> { - public Task> Handle(ListPublicRelationshipTemplateReferencesQuery request, CancellationToken cancellationToken) + public Task> Handle(Query request, CancellationToken cancellationToken) { var definitions = new Dictionary>(); configuration.GetSection("Modules:Relationships:PublicRelationshipTemplateReferences").Bind(definitions); diff --git a/Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Query.cs b/Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Query.cs index e75f5fcc95..cf9393dde8 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Query.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Query.cs @@ -2,4 +2,5 @@ namespace Backbone.Modules.Relationships.Module.Features.PublicRelationshipTemplateReferences.ListPublicRelationshipTemplateReferences; -public class ListPublicRelationshipTemplateReferencesQuery : IRequest>; +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListPublicRelationshipTemplateReferencesQuery")] +public class Query : IRequest>; diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Command.cs index 08155e04c6..70d82bfef7 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity; -public class AnonymizeRelationshipTemplateAllocationsAllocatedByIdentityCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("AnonymizeRelationshipTemplateAllocationsAllocatedByIdentityCommand")] +public class Command : IRequest { public required string IdentityAddress { get; init; } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Handler.cs index 093e1f0f5e..657828ffc0 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Handler.cs @@ -5,7 +5,7 @@ namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IRelationshipTemplatesRepository _relationshipTemplatesRepository; private readonly ApplicationConfiguration _applicationConfiguration; @@ -16,7 +16,7 @@ public Handler(IRelationshipTemplatesRepository relationshipTemplatesRepository, _applicationConfiguration = options.Value; } - public async Task Handle(AnonymizeRelationshipTemplateAllocationsAllocatedByIdentityCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var allocations = (await _relationshipTemplatesRepository.ListRelationshipTemplateAllocations(RelationshipTemplateAllocation.WasAllocatedBy(request.IdentityAddress), cancellationToken)).ToList(); diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Validator.cs index 9f59c69aa1..9adc4f11e6 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.IdentityAddress).ValidId(); + RuleFor(x => x.IdentityAddress).ValidId(); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplatesForIdentity/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplatesForIdentity/Command.cs index 42f2d8dd18..e069c7a78c 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplatesForIdentity/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplatesForIdentity/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplatesForIdentity; -public class AnonymizeRelationshipTemplatesForIdentityCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("AnonymizeRelationshipTemplatesForIdentityCommand")] +public class Command : IRequest { public required string IdentityAddress { get; init; } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplatesForIdentity/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplatesForIdentity/Handler.cs index 85f8708ba1..43fb09fb15 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplatesForIdentity/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplatesForIdentity/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplatesForIdentity; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IRelationshipTemplatesRepository _relationshipTemplatesRepository; private readonly ApplicationConfiguration _applicationConfiguration; @@ -17,7 +17,7 @@ public Handler(IRelationshipTemplatesRepository relationshipTemplatesRepository, _applicationConfiguration = options.Value; } - public async Task Handle(AnonymizeRelationshipTemplatesForIdentityCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var relationshipTemplates = (await _relationshipTemplatesRepository.ListWithoutContent(RelationshipTemplate.IsFor(IdentityAddress.Parse(request.IdentityAddress)), cancellationToken)).ToList(); diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplatesForIdentity/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplatesForIdentity/Validator.cs index 40d624105b..bef840d803 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplatesForIdentity/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplatesForIdentity/Validator.cs @@ -4,11 +4,11 @@ namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplatesForIdentity; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { RuleFor(c => c.IdentityAddress) - .ValidId(); + .ValidId(); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Command.cs index b5d45156c2..bf33422756 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Command.cs @@ -3,8 +3,9 @@ namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.CreateRelationshipTemplate; +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateRelationshipTemplateCommand")] [ApplyQuotasForMetrics("NumberOfRelationshipTemplates")] -public class CreateRelationshipTemplateCommand : IRequest +public class Command : IRequest { public DateTime? ExpiresAt { get; init; } public int? MaxNumberOfAllocations { get; init; } diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Endpoint.cs index a151db3497..438199ad0a 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Endpoint.cs @@ -13,12 +13,12 @@ internal static class Endpoint public static RouteGroupBuilder MapCreateRelationshipTemplateEndpoint(this RouteGroupBuilder group) { group.MapPost("", Handle) - .Produces>(StatusCodes.Status201Created) + .Produces>(StatusCodes.Status201Created) .Produces(StatusCodes.Status400BadRequest); return group; } - private static async Task Handle([FromBody] CreateRelationshipTemplateCommand request, HttpContext context, IMediator mediator, CancellationToken cancellationToken) + private static async Task Handle([FromBody] Command request, HttpContext context, IMediator mediator, CancellationToken cancellationToken) { if (request.Content == null) throw new BadHttpRequestException("Content is required."); diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Handler.cs index ce9e4ed8e6..0643fc5846 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.CreateRelationshipTemplate; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IRelationshipTemplatesRepository _relationshipTemplatesRepository; private readonly IUserContext _userContext; @@ -17,7 +17,7 @@ public Handler(IRelationshipTemplatesRepository relationshipTemplatesRepository, _userContext = userContext; } - public async Task Handle(CreateRelationshipTemplateCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var forIdentity = request.ForIdentity == null ? null : IdentityAddress.Parse(request.ForIdentity); var template = new RelationshipTemplate( @@ -31,6 +31,6 @@ public async Task Handle(CreateRelationshipT await _relationshipTemplatesRepository.Add(template, cancellationToken); - return new CreateRelationshipTemplateResponse(template); + return new Response(template); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Response.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Response.cs index 1efc64813f..540ae67077 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Response.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Response.cs @@ -2,9 +2,10 @@ namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.CreateRelationshipTemplate; -public class CreateRelationshipTemplateResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateRelationshipTemplateResponse")] +public class Response { - public CreateRelationshipTemplateResponse(RelationshipTemplate relationshipTemplate) + public Response(RelationshipTemplate relationshipTemplate) { Id = relationshipTemplate.Id; CreatedAt = relationshipTemplate.CreatedAt; diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Validator.cs index b90ff3f662..396a822d3f 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Validator.cs @@ -9,7 +9,7 @@ namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.CreateRelationshipTemplate; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { @@ -23,7 +23,7 @@ public Validator() .When(c => c.ExpiresAt != null); RuleFor(c => c.ForIdentity) - .ValidId() + .ValidId() .When(c => c.ForIdentity != null); RuleFor(c => c.Password).NumberOfBytes(1, RelationshipTemplate.MAX_PASSWORD_LENGTH).When(t => t.Password != null); diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Command.cs index d1c6bf4ca3..09f0e06eed 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplate; -public class DeleteRelationshipTemplateCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteRelationshipTemplateCommand")] +public class Command : IRequest { public required string Id { get; init; } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Endpoint.cs index a8bb368a17..46b8a06b8c 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Endpoint.cs @@ -21,7 +21,7 @@ public static RouteGroupBuilder MapDeleteRelationshipTemplateEndpoint(this Route private static async Task Handle([FromRoute] string id, IMediator mediator, CancellationToken cancellationToken) { - await mediator.Send(new DeleteRelationshipTemplateCommand { Id = id }, cancellationToken); + await mediator.Send(new Command { Id = id }, cancellationToken); return Results.NoContent(); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Handler.cs index 5a4db31756..ed86f9de0a 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplate; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IRelationshipTemplatesRepository _relationshipTemplatesRepository; private readonly IUserContext _userContext; @@ -17,7 +17,7 @@ public Handler(IRelationshipTemplatesRepository relationshipTemplatesRepository, _userContext = userContext; } - public async Task Handle(DeleteRelationshipTemplateCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var relationshipTemplate = await _relationshipTemplatesRepository.GetWithoutContent(RelationshipTemplateId.Parse(request.Id), _userContext.GetAddress(), cancellationToken) ?? throw new NotFoundException(nameof(RelationshipTemplate)); diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Validator.cs index 64cf1d913d..f47d208bbf 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplate; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(command => command.Id).ValidId(); + RuleFor(command => command.Id).ValidId(); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/Command.cs index 861f3a37f0..95eba44779 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplatesOfIdentity; -public class DeleteRelationshipTemplatesOfIdentityCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteRelationshipTemplatesOfIdentityCommand")] +public class Command : IRequest { public required string IdentityAddress { get; init; } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/Handler.cs index b94f382a36..fd36b2cde0 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/Handler.cs @@ -4,7 +4,7 @@ namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplatesOfIdentity; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IRelationshipTemplatesRepository _relationshipTemplatesRepository; @@ -13,7 +13,7 @@ public Handler(IRelationshipTemplatesRepository relationshipTemplatesRepository) _relationshipTemplatesRepository = relationshipTemplatesRepository; } - public async Task Handle(DeleteRelationshipTemplatesOfIdentityCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { await _relationshipTemplatesRepository.Delete(RelationshipTemplate.WasCreatedBy(request.IdentityAddress), cancellationToken); } diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/Validator.cs index c0423498d4..5fbe6c6584 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplatesOfIdentity; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.IdentityAddress).ValidId(); + RuleFor(x => x.IdentityAddress).ValidId(); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Endpoint.cs index 8e8e93190d..844c98baad 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Endpoint.cs @@ -23,7 +23,7 @@ public static RouteGroupBuilder MapGetRelationshipTemplateEndpoint(this RouteGro private static async Task Handle([FromRoute] string id, [FromQuery] Base64QueryValue? password, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new GetRelationshipTemplateQuery { Id = id, Password = password?.Value }, cancellationToken); + var response = await mediator.Send(new Query { Id = id, Password = password?.Value }, cancellationToken); return EnvelopeHttpResults.Ok(response); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Handler.cs index 4c5c011d62..f68357ed1f 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Handler.cs @@ -7,7 +7,7 @@ namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.GetRelationshipTemplate; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IRelationshipTemplatesRepository _relationshipTemplatesRepository; private readonly IUserContext _userContext; @@ -18,7 +18,7 @@ public Handler(IUserContext userContext, IRelationshipTemplatesRepository relati _userContext = userContext; } - public async Task Handle(GetRelationshipTemplateQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var template = await GetRelationshipTemplate(request.Id, request.Password, cancellationToken); diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Query.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Query.cs index be9faa4e82..21da7e02b5 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Query.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Query.cs @@ -3,7 +3,8 @@ namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.GetRelationshipTemplate; -public class GetRelationshipTemplateQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetRelationshipTemplateQuery")] +public class Query : IRequest { public required string Id { get; init; } public byte[]? Password { get; init; } diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Validator.cs index 982aa91993..1a4cb85673 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Validator.cs @@ -5,11 +5,11 @@ namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.GetRelationshipTemplate; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.Id).ValidId(); + RuleFor(x => x.Id).ValidId(); RuleFor(x => x.Password).NumberOfBytes(1, RelationshipTemplate.MAX_PASSWORD_LENGTH).When(t => t.Password != null); } diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Endpoint.cs index bb78ff2c5f..a985c43d29 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Endpoint.cs @@ -17,7 +17,7 @@ internal static class Endpoint public static RouteGroupBuilder MapListRelationshipTemplatesEndpoint(this RouteGroupBuilder group) { group.MapGet("", Handle) - .Produces>(StatusCodes.Status200OK) + .Produces>(StatusCodes.Status200OK) .Produces(StatusCodes.Status400BadRequest); return group; } @@ -29,7 +29,7 @@ private static async Task Handle([FromQuery(Name = "PageNumber")] int? if (paginationFilter.PageSize > options.Value.Pagination.MaxPageSize) throw new ApplicationException(GenericApplicationErrors.Validation.InvalidPageSize(options.Value.Pagination.MaxPageSize)); - var response = await mediator.Send(new ListRelationshipTemplatesQuery { PaginationFilter = paginationFilter, Ids = ids?.ToList() ?? [] }, cancellationToken); + var response = await mediator.Send(new Query { PaginationFilter = paginationFilter, Ids = ids?.ToList() ?? [] }, cancellationToken); return EnvelopeHttpResults.Paged(response); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Handler.cs index 0f3d862886..6435ff6059 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Handler.cs @@ -4,7 +4,7 @@ namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.ListRelationshipTemplates; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IRelationshipTemplatesRepository _relationshipTemplatesRepository; private readonly IUserContext _userContext; @@ -15,11 +15,11 @@ public Handler(IUserContext userContext, IRelationshipTemplatesRepository relati _userContext = userContext; } - public async Task Handle(ListRelationshipTemplatesQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var dbPaginationResult = await _relationshipTemplatesRepository.ListWithContent(request.Ids, _userContext.GetAddress(), request.PaginationFilter, cancellationToken, track: false); - return new ListRelationshipTemplatesResponse(dbPaginationResult, request.PaginationFilter); + return new Response(dbPaginationResult, request.PaginationFilter); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Query.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Query.cs index dceb73f8e3..7d2ed79545 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Query.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Query.cs @@ -3,7 +3,8 @@ namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.ListRelationshipTemplates; -public class ListRelationshipTemplatesQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListRelationshipTemplatesQuery")] +public class Query : IRequest { public required PaginationFilter PaginationFilter { get; init; } public required List Ids { get; init; } diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Response.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Response.cs index abbd0a9618..9c5db5eb33 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Response.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Response.cs @@ -5,9 +5,10 @@ namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.ListRelationshipTemplates; -public class ListRelationshipTemplatesResponse : PagedResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListRelationshipTemplatesResponse")] +public class Response : PagedResponse { - public ListRelationshipTemplatesResponse(DbPaginationResult dbPaginationResult, PaginationFilter previousPaginationFilter) : base( + public Response(DbPaginationResult dbPaginationResult, PaginationFilter previousPaginationFilter) : base( dbPaginationResult.ItemsOnPage.Select(x => new RelationshipTemplateDTO(x)), previousPaginationFilter, dbPaginationResult.TotalNumberOfItems) { } diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Validator.cs index 40ea51f111..1fcdffd2d1 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Validator.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.ListRelationshipTemplates; // ReSharper disable once UnusedMember.Global -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { @@ -16,6 +16,6 @@ public Validator() RuleForEach(x => x.Ids) .Cascade(CascadeMode.Stop) - .ValidId(); + .ValidId(); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Command.cs index 738aec198c..439e6e68a1 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Command.cs @@ -3,8 +3,9 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.AcceptRelationship; +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("AcceptRelationshipCommand")] [ApplyQuotasForMetrics("NumberOfRelationships")] -public class AcceptRelationshipCommand : IRequest +public class Command : IRequest { public required string RelationshipId { get; init; } public required byte[]? CreationResponseContent { get; init; } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Endpoint.cs index bcb66f6329..a8799b96f0 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Endpoint.cs @@ -13,7 +13,7 @@ internal static class Endpoint public static RouteGroupBuilder MapAcceptRelationshipEndpoint(this RouteGroupBuilder group) { group.MapPut("{id}/Accept", Handle) - .Produces>(StatusCodes.Status200OK) + .Produces>(StatusCodes.Status200OK) .Produces(StatusCodes.Status400BadRequest) .Produces(StatusCodes.Status404NotFound); return group; @@ -21,7 +21,7 @@ public static RouteGroupBuilder MapAcceptRelationshipEndpoint(this RouteGroupBui private static async Task Handle([FromRoute] string id, [FromBody] RequestBody body, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new AcceptRelationshipCommand { RelationshipId = id, CreationResponseContent = body.CreationResponseContent }, cancellationToken); + var response = await mediator.Send(new Command { RelationshipId = id, CreationResponseContent = body.CreationResponseContent }, cancellationToken); return EnvelopeHttpResults.Ok(response); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Handler.cs index c4997b55e8..a66d42abfb 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.AcceptRelationship; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IRelationshipsRepository _relationshipsRepository; private readonly IdentityAddress _activeIdentity; @@ -19,7 +19,7 @@ public Handler(IRelationshipsRepository relationshipsRepository, IUserContext us _activeDevice = userContext.GetDeviceId(); } - public async Task Handle(AcceptRelationshipCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var relationshipId = RelationshipId.Parse(request.RelationshipId); var relationship = await _relationshipsRepository.GetRelationshipWithContent(relationshipId, _activeIdentity, cancellationToken, track: true); @@ -28,6 +28,6 @@ public async Task Handle(AcceptRelationshipCommand r await _relationshipsRepository.Update(relationship); - return new AcceptRelationshipResponse(relationship); + return new Response(relationship); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Response.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Response.cs index 268bbb5b51..8bc9d224df 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Response.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Response.cs @@ -3,9 +3,10 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.AcceptRelationship; -public class AcceptRelationshipResponse : RelationshipMetadataDTO +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("AcceptRelationshipResponse")] +public class Response : RelationshipMetadataDTO { - public AcceptRelationshipResponse(Relationship relationship) : base(relationship) + public Response(Relationship relationship) : base(relationship) { } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Validator.cs index a36fd0c870..eadf07884f 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.AcceptRelationship; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.RelationshipId).ValidId(); + RuleFor(x => x.RelationshipId).ValidId(); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Command.cs index 91718a4698..91368d851f 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.AcceptRelationshipReactivation; -public class AcceptRelationshipReactivationCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("AcceptRelationshipReactivationCommand")] +public class Command : IRequest { public required string RelationshipId { get; init; } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Endpoint.cs index d24553bace..cd51249a11 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Endpoint.cs @@ -13,7 +13,7 @@ internal static class Endpoint public static RouteGroupBuilder MapAcceptRelationshipReactivationEndpoint(this RouteGroupBuilder group) { group.MapPut("{id}/Reactivate/Accept", Handle) - .Produces>(StatusCodes.Status200OK) + .Produces>(StatusCodes.Status200OK) .Produces(StatusCodes.Status400BadRequest) .Produces(StatusCodes.Status404NotFound); return group; @@ -21,7 +21,7 @@ public static RouteGroupBuilder MapAcceptRelationshipReactivationEndpoint(this R private static async Task Handle([FromRoute] string id, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new AcceptRelationshipReactivationCommand { RelationshipId = id }, cancellationToken); + var response = await mediator.Send(new Command { RelationshipId = id }, cancellationToken); return EnvelopeHttpResults.Ok(response); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Handler.cs index 66483015ae..a17b8e5f34 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.AcceptRelationshipReactivation; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IRelationshipsRepository _relationshipsRepository; private readonly IdentityAddress _activeIdentity; @@ -19,7 +19,7 @@ public Handler(IRelationshipsRepository relationshipsRepository, IUserContext us _activeDevice = userContext.GetDeviceId(); } - public async Task Handle(AcceptRelationshipReactivationCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var relationshipId = RelationshipId.Parse(request.RelationshipId); var relationship = await _relationshipsRepository.GetRelationshipWithoutContent(relationshipId, _activeIdentity, cancellationToken, track: true); @@ -28,6 +28,6 @@ public async Task Handle(AcceptRelations await _relationshipsRepository.Update(relationship); - return new AcceptRelationshipReactivationResponse(relationship); + return new Response(relationship); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Response.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Response.cs index adff6acf31..a128e91ab5 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Response.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Response.cs @@ -3,9 +3,10 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.AcceptRelationshipReactivation; -public class AcceptRelationshipReactivationResponse : RelationshipMetadataDTO +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("AcceptRelationshipReactivationResponse")] +public class Response : RelationshipMetadataDTO { - public AcceptRelationshipReactivationResponse(Relationship relationship) : base(relationship) + public Response(Relationship relationship) : base(relationship) { } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Validator.cs index 43016ebf89..5b69a9eef5 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.AcceptRelationshipReactivation; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.RelationshipId).ValidId(); + RuleFor(x => x.RelationshipId).ValidId(); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Endpoint.cs index becb0e029d..31842ee2d7 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Endpoint.cs @@ -14,7 +14,7 @@ internal static class Endpoint public static RouteGroupBuilder MapCanEstablishRelationshipEndpoint(this RouteGroupBuilder group) { group.MapGet("CanCreate", Handle) - .Produces>(StatusCodes.Status200OK) + .Produces>(StatusCodes.Status200OK) .Produces(StatusCodes.Status400BadRequest); return group; } @@ -22,8 +22,8 @@ public static RouteGroupBuilder MapCanEstablishRelationshipEndpoint(this RouteGr private static async Task Handle([FromQuery(Name = "peer")] string peerAddress, IIdentityStatusProvider identities, IMediator mediator, CancellationToken cancellationToken) { var response = !await identities.IsActive(peerAddress, cancellationToken) - ? new CanEstablishRelationshipResponse { CanCreate = false, Code = ApplicationErrors.Relationship.PeerIsToBeDeleted().Code } - : await mediator.Send(new CanEstablishRelationshipQuery { PeerAddress = peerAddress }, cancellationToken); + ? new Response { CanCreate = false, Code = ApplicationErrors.Relationship.PeerIsToBeDeleted().Code } + : await mediator.Send(new Query { PeerAddress = peerAddress }, cancellationToken); return EnvelopeHttpResults.Ok(response); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Handler.cs index 1c53d7cffc..4866e02c22 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Handler.cs @@ -5,7 +5,7 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.CanEstablishRelationship; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IRelationshipsRepository _relationshipsRepository; private readonly IUserContext _userContext; @@ -16,7 +16,7 @@ public Handler(IUserContext userContext, IRelationshipsRepository relationshipsR _userContext = userContext; } - public async Task Handle(CanEstablishRelationshipQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var existingRelationships = await _relationshipsRepository.ListWithoutContent( Relationship.IsBetween(request.PeerAddress, _userContext.GetAddress()), @@ -25,6 +25,6 @@ public async Task Handle(CanEstablishRelations var error = Relationship.CanEstablish(existingRelationships.ToList()); - return new CanEstablishRelationshipResponse { CanCreate = error == null, Code = error?.Code }; + return new Response { CanCreate = error == null, Code = error?.Code }; } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Query.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Query.cs index 7c38ea9d2f..b8481055f2 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Query.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Query.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.CanEstablishRelationship; -public class CanEstablishRelationshipQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CanEstablishRelationshipQuery")] +public class Query : IRequest { public required string PeerAddress { get; init; } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Response.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Response.cs index 8ed4b4521d..962b93b405 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Response.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Response.cs @@ -1,6 +1,7 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.CanEstablishRelationship; -public class CanEstablishRelationshipResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CanEstablishRelationshipResponse")] +public class Response { public required bool CanCreate { get; set; } public required string? Code { get; set; } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/CanEstablishRelationshipQueryValidator.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Validator.cs similarity index 66% rename from Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/CanEstablishRelationshipQueryValidator.cs rename to Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Validator.cs index b3f569dd4f..6610178cc0 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/CanEstablishRelationshipQueryValidator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Validator.cs @@ -4,9 +4,9 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.CanEstablishRelationship; // ReSharper disable once UnusedType.Global -public class CanEstablishRelationshipQueryValidator : AbstractValidator +public class Validator : AbstractValidator { - public CanEstablishRelationshipQueryValidator() + public Validator() { RuleFor(q => q.PeerAddress).Must(IdentityAddress.IsValid); } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Command.cs index 041773d342..85084ec5c8 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Command.cs @@ -3,8 +3,9 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.CreateRelationship; +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateRelationshipCommand")] [ApplyQuotasForMetrics("NumberOfRelationships")] -public class CreateRelationshipCommand : IRequest +public class Command : IRequest { public required string RelationshipTemplateId { get; init; } public byte[]? CreationContent { get; init; } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Endpoint.cs index 7854b95ea4..d6c5f1ebaa 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Endpoint.cs @@ -1,3 +1,4 @@ +using GetRelationshipTemplate = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.GetRelationshipTemplate; using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; using Backbone.Modules.Devices.Contracts; @@ -16,18 +17,18 @@ internal static class Endpoint public static RouteGroupBuilder MapCreateRelationshipEndpoint(this RouteGroupBuilder group) { group.MapPost("", Handle) - .Produces>(StatusCodes.Status201Created) + .Produces>(StatusCodes.Status201Created) .Produces(StatusCodes.Status400BadRequest) .Produces(StatusCodes.Status404NotFound); return group; } - private static async Task Handle([FromBody] CreateRelationshipCommand request, IIdentityStatusProvider identities, IMediator mediator, CancellationToken cancellationToken) + private static async Task Handle([FromBody] Command request, IIdentityStatusProvider identities, IMediator mediator, CancellationToken cancellationToken) { if (request.RelationshipTemplateId == null) throw new BadHttpRequestException("RelationshipTemplateId is required."); - var template = await mediator.Send(new GetRelationshipTemplateQuery { Id = request.RelationshipTemplateId }, cancellationToken); + var template = await mediator.Send(new GetRelationshipTemplate.Query { Id = request.RelationshipTemplateId }, cancellationToken); if (!await identities.IsActive(template.CreatedBy, cancellationToken)) throw new ApplicationException(ApplicationErrors.Relationship.PeerIsToBeDeleted()); diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Handler.cs index d4e628222e..5f7ac37aa0 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Handler.cs @@ -8,7 +8,7 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.CreateRelationship; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IRelationshipsRepository _relationshipsRepository; private readonly IRelationshipTemplatesRepository _relationshipTemplatesRepository; @@ -16,7 +16,7 @@ public class Handler : IRequestHandler Handle(CreateRelationshipCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { _cancellationToken = cancellationToken; _request = request; @@ -40,7 +40,7 @@ public async Task Handle(CreateRelationshipCommand r await ReadTemplateFromDb(); await CreateAndSaveRelationship(); - return new CreateRelationshipResponse(_relationship); + return new Response(_relationship); } private async Task ReadTemplateFromDb() diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Response.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Response.cs index 4e4b3252f5..810373163d 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Response.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Response.cs @@ -3,9 +3,10 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.CreateRelationship; -public class CreateRelationshipResponse : RelationshipMetadataDTO +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateRelationshipResponse")] +public class Response : RelationshipMetadataDTO { - public CreateRelationshipResponse(Relationship relationship) : base(relationship) + public Response(Relationship relationship) : base(relationship) { } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Validator.cs index ddb95bd783..49cac585f0 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Validator.cs @@ -7,11 +7,11 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.CreateRelationship; // ReSharper disable once UnusedMember.Global -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(c => c.RelationshipTemplateId).ValidId(); + RuleFor(c => c.RelationshipTemplateId).ValidId(); RuleFor(c => c.CreationContent).NumberOfBytes(0, 10.Mebibytes()); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeAndAnonymizeRelationshipsOfIdentity/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeAndAnonymizeRelationshipsOfIdentity/Command.cs index f664eaf954..5a0b3ae27c 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeAndAnonymizeRelationshipsOfIdentity/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeAndAnonymizeRelationshipsOfIdentity/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeAndAnonymizeRelationshipsOfIdentity; -public class DecomposeAndAnonymizeRelationshipsOfIdentityCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DecomposeAndAnonymizeRelationshipsOfIdentityCommand")] +public class Command : IRequest { public required string IdentityAddress { get; init; } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeAndAnonymizeRelationshipsOfIdentity/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeAndAnonymizeRelationshipsOfIdentity/Handler.cs index 492a599534..c34eee4701 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeAndAnonymizeRelationshipsOfIdentity/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeAndAnonymizeRelationshipsOfIdentity/Handler.cs @@ -5,7 +5,7 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeAndAnonymizeRelationshipsOfIdentity; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IRelationshipsRepository _relationshipsRepository; private readonly ApplicationConfiguration _applicationConfiguration; @@ -16,7 +16,7 @@ public Handler(IRelationshipsRepository relationshipsRepository, IOptions +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.IdentityAddress).ValidId(); + RuleFor(x => x.IdentityAddress).ValidId(); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Command.cs index b36f731871..96a0f4ba50 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeRelationship; -public class DecomposeRelationshipCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DecomposeRelationshipCommand")] +public class Command : IRequest { public required string RelationshipId { get; init; } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Endpoint.cs index f46fbdc3a4..019c7f9b0f 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Endpoint.cs @@ -13,7 +13,7 @@ internal static class Endpoint public static RouteGroupBuilder MapDecomposeRelationshipEndpoint(this RouteGroupBuilder group) { group.MapPut("{id}/Decompose", Handle) - .Produces>(StatusCodes.Status200OK) + .Produces>(StatusCodes.Status200OK) .Produces(StatusCodes.Status400BadRequest) .Produces(StatusCodes.Status404NotFound); return group; @@ -21,7 +21,7 @@ public static RouteGroupBuilder MapDecomposeRelationshipEndpoint(this RouteGroup private static async Task Handle([FromRoute] string id, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new DecomposeRelationshipCommand { RelationshipId = id }, cancellationToken); + var response = await mediator.Send(new Command { RelationshipId = id }, cancellationToken); return EnvelopeHttpResults.Ok(response); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Handler.cs index 245713e267..9f70b1ce14 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeRelationship; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IRelationshipsRepository _relationshipsRepository; private readonly IdentityAddress _activeIdentity; @@ -19,7 +19,7 @@ public Handler(IRelationshipsRepository relationshipsRepository, IUserContext us _activeDevice = userContext.GetDeviceId(); } - public async Task Handle(DecomposeRelationshipCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var relationshipId = RelationshipId.Parse(request.RelationshipId); var relationship = await _relationshipsRepository.GetRelationshipWithoutContent(relationshipId, _activeIdentity, cancellationToken, track: true); @@ -28,6 +28,6 @@ public async Task Handle(DecomposeRelationshipCom await _relationshipsRepository.Update(relationship); - return new DecomposeRelationshipResponse(relationship); + return new Response(relationship); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Response.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Response.cs index a956898c74..20e9db328a 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Response.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Response.cs @@ -3,9 +3,10 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeRelationship; -public class DecomposeRelationshipResponse : RelationshipMetadataDTO +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DecomposeRelationshipResponse")] +public class Response : RelationshipMetadataDTO { - public DecomposeRelationshipResponse(Relationship relationship) : base(relationship) + public Response(Relationship relationship) : base(relationship) { } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Validator.cs index 432b7de5ce..0f1ce00240 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Validator.cs @@ -4,11 +4,11 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeRelationship; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.RelationshipId).ValidId(); + RuleFor(x => x.RelationshipId).ValidId(); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ExecuteHousekeeping/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ExecuteHousekeeping/Command.cs index ba95313041..0278b46303 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ExecuteHousekeeping/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ExecuteHousekeeping/Command.cs @@ -2,4 +2,5 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.ExecuteHousekeeping; -public class ExecuteHousekeepingCommand : IRequest; +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ExecuteHousekeepingCommand")] +public class Command : IRequest; diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ExecuteHousekeeping/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ExecuteHousekeeping/Handler.cs index 41ac0eb27b..628e720dde 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ExecuteHousekeeping/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ExecuteHousekeeping/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.ExecuteHousekeeping; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IRelationshipTemplatesRepository _relationshipTemplatesRepository; private readonly IRelationshipsRepository _relationshipsRepository; @@ -17,7 +17,7 @@ public Handler(IRelationshipTemplatesRepository relationshipTemplatesRepository, _relationshipsRepository = relationshipsRepository; } - public async Task Handle(ExecuteHousekeepingCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { await DeleteRelationshipTemplates(cancellationToken); await DeleteRelationships(cancellationToken); diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Handler.cs index eaa0129f6c..ba275c9ffb 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Handler.cs @@ -5,7 +5,7 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.GetPeerOfActiveIdentityInRelationship; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IRelationshipsRepository _relationshipsRepository; private readonly IUserContext _userContext; @@ -16,9 +16,9 @@ public Handler(IUserContext userContext, IRelationshipsRepository relationshipsR _userContext = userContext; } - public async Task Handle(GetPeerOfActiveIdentityInRelationshipQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var peerIdentityAddress = await _relationshipsRepository.GetRelationshipPeer(RelationshipId.Parse(request.Id), _userContext.GetAddress(), cancellationToken); - return new GetPeerOfActiveIdentityInRelationshipResponse { IdentityAddress = peerIdentityAddress }; + return new Response { IdentityAddress = peerIdentityAddress }; } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Query.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Query.cs index a3cd6a6990..8188156bff 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Query.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Query.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.GetPeerOfActiveIdentityInRelationship; -public class GetPeerOfActiveIdentityInRelationshipQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetPeerOfActiveIdentityInRelationshipQuery")] +public class Query : IRequest { public required string Id { get; init; } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Response.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Response.cs index d3583287fa..088d1481a4 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Response.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Response.cs @@ -1,6 +1,7 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.GetPeerOfActiveIdentityInRelationship; -public class GetPeerOfActiveIdentityInRelationshipResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetPeerOfActiveIdentityInRelationshipResponse")] +public class Response { public required string IdentityAddress { get; set; } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Validator.cs index 206470bf34..e490afb66c 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.GetPeerOfActiveIdentityInRelationship; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.Id).ValidId(); + RuleFor(x => x.Id).ValidId(); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Endpoint.cs index ce0baea5c5..a4c63f56cc 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Endpoint.cs @@ -22,7 +22,7 @@ public static RouteGroupBuilder MapGetRelationshipEndpoint(this RouteGroupBuilde private static async Task Handle([FromRoute] string id, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new GetRelationshipQuery { Id = id }, cancellationToken); + var response = await mediator.Send(new Query { Id = id }, cancellationToken); return EnvelopeHttpResults.Ok(response); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Handler.cs index ae479c65f8..ddd3f07d0b 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Handler.cs @@ -7,7 +7,7 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.GetRelationship; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IRelationshipsRepository _relationshipsRepository; private readonly IdentityAddress _activeIdentity; @@ -18,7 +18,7 @@ public Handler(IUserContext userContext, IRelationshipsRepository relationshipsR _activeIdentity = userContext.GetAddress(); } - public async Task Handle(GetRelationshipQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var relationship = await _relationshipsRepository.GetRelationshipWithContent(RelationshipId.Parse(request.Id), _activeIdentity, cancellationToken, track: false); diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Query.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Query.cs index d0284d6603..a630c13cc4 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Query.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Query.cs @@ -3,7 +3,8 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.GetRelationship; -public class GetRelationshipQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetRelationshipQuery")] +public class Query : IRequest { public required string Id { get; init; } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Validator.cs index 328a8d1dfd..1329725004 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.GetRelationship; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.Id).ValidId(); + RuleFor(x => x.Id).ValidId(); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Endpoint.cs index 917ccd096b..ca61934629 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Endpoint.cs @@ -17,7 +17,7 @@ internal static class Endpoint public static RouteGroupBuilder MapListRelationshipsEndpoint(this RouteGroupBuilder group) { group.MapGet("", Handle) - .Produces>(StatusCodes.Status200OK) + .Produces>(StatusCodes.Status200OK) .Produces(StatusCodes.Status400BadRequest); return group; } @@ -29,7 +29,7 @@ private static async Task Handle([FromQuery(Name = "PageNumber")] int? if (paginationFilter.PageSize > options.Value.Pagination.MaxPageSize) throw new ApplicationException(GenericApplicationErrors.Validation.InvalidPageSize(options.Value.Pagination.MaxPageSize)); - var response = await mediator.Send(new ListRelationshipsQuery { PaginationFilter = paginationFilter, Ids = (ids ?? []).ToList() }, cancellationToken); + var response = await mediator.Send(new Query { PaginationFilter = paginationFilter, Ids = (ids ?? []).ToList() }, cancellationToken); return EnvelopeHttpResults.Paged(response); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Handler.cs index 3092da1ca8..f587c16712 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Handler.cs @@ -5,7 +5,7 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationships; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IRelationshipsRepository _relationshipsRepository; private readonly IUserContext _userContext; @@ -16,11 +16,11 @@ public Handler(IUserContext userContext, IRelationshipsRepository relationshipsR _userContext = userContext; } - public async Task Handle(ListRelationshipsQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var dbPaginationResult = await _relationshipsRepository.ListRelationshipsWithContent(request.Ids.Select(RelationshipId.Parse), _userContext.GetAddress(), request.PaginationFilter, cancellationToken, track: false); - return new ListRelationshipsResponse(dbPaginationResult, request.PaginationFilter); + return new Response(dbPaginationResult, request.PaginationFilter); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Query.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Query.cs index 1ea7be2ca3..8f81ddeeaa 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Query.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Query.cs @@ -3,7 +3,8 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationships; -public class ListRelationshipsQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListRelationshipsQuery")] +public class Query : IRequest { public required PaginationFilter PaginationFilter { get; init; } public required List Ids { get; set; } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Response.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Response.cs index 9056f83e60..996d0d67b9 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Response.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Response.cs @@ -5,9 +5,10 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationships; -public class ListRelationshipsResponse : PagedResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListRelationshipsResponse")] +public class Response : PagedResponse { - public ListRelationshipsResponse(DbPaginationResult dbPaginationResult, PaginationFilter previousPaginationFilter) : base( + public Response(DbPaginationResult dbPaginationResult, PaginationFilter previousPaginationFilter) : base( dbPaginationResult.ItemsOnPage.Select(r => new RelationshipDTO(r)), previousPaginationFilter, dbPaginationResult.TotalNumberOfItems) { } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Validator.cs index 10e266f99e..5aed573998 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Validator.cs @@ -7,7 +7,7 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationships; // ReSharper disable once UnusedMember.Global -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { @@ -16,6 +16,6 @@ public Validator() .DetailedNotNull() .Must(ids => ids.Count > 0).WithErrorCode(GenericApplicationErrors.Validation.InvalidPropertyValue().Code).WithMessage("'Ids' must not be empty."); - RuleForEach(x => x.Ids).ValidId(); + RuleForEach(x => x.Ids).ValidId(); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Handler.cs index 99ff3c0b79..def39c4a9b 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Handler.cs @@ -4,7 +4,7 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationshipsOfIdentity; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IRelationshipsRepository _relationshipsRepository; @@ -13,10 +13,10 @@ public Handler(IRelationshipsRepository relationshipsRepository) _relationshipsRepository = relationshipsRepository; } - public async Task Handle(ListRelationshipsOfIdentityQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var relationships = await _relationshipsRepository.ListWithoutContent(Relationship.HasParticipant(request.IdentityAddress), cancellationToken); - return new ListRelationshipsOfIdentityResponse(relationships); + return new Response(relationships); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Query.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Query.cs index 459a41434c..3867b34cd2 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Query.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Query.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationshipsOfIdentity; -public class ListRelationshipsOfIdentityQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListRelationshipsOfIdentityQuery")] +public class Query : IRequest { public required string IdentityAddress { get; init; } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Response.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Response.cs index 0bb0ac9ca3..abcbb304aa 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Response.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Response.cs @@ -3,9 +3,10 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationshipsOfIdentity; -public class ListRelationshipsOfIdentityResponse : CollectionResponseBase +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListRelationshipsOfIdentityResponse")] +public class Response : CollectionResponseBase { - public ListRelationshipsOfIdentityResponse(IEnumerable items) : base(items) + public Response(IEnumerable items) : base(items) { } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Validator.cs index bc6cce6411..493fca6d7c 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationshipsOfIdentity; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.IdentityAddress).ValidId(); + RuleFor(x => x.IdentityAddress).ValidId(); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Command.cs index 60512a0351..1209d92fbf 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.RejectRelationship; -public class RejectRelationshipCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RejectRelationshipCommand")] +public class Command : IRequest { public required string RelationshipId { get; init; } public byte[]? CreationResponseContent { get; init; } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Endpoint.cs index d27fa8bda6..2de83056fb 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Endpoint.cs @@ -13,7 +13,7 @@ internal static class Endpoint public static RouteGroupBuilder MapRejectRelationshipEndpoint(this RouteGroupBuilder group) { group.MapPut("{id}/Reject", Handle) - .Produces>(StatusCodes.Status200OK) + .Produces>(StatusCodes.Status200OK) .Produces(StatusCodes.Status400BadRequest) .Produces(StatusCodes.Status404NotFound); return group; @@ -21,7 +21,7 @@ public static RouteGroupBuilder MapRejectRelationshipEndpoint(this RouteGroupBui private static async Task Handle([FromRoute] string id, [FromBody] RequestBody body, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new RejectRelationshipCommand { RelationshipId = id, CreationResponseContent = body.CreationResponseContent }, cancellationToken); + var response = await mediator.Send(new Command { RelationshipId = id, CreationResponseContent = body.CreationResponseContent }, cancellationToken); return EnvelopeHttpResults.Ok(response); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Handler.cs index fa609b332c..0ca70e30bd 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Handler.cs @@ -7,7 +7,7 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.RejectRelationship; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IRelationshipsRepository _relationshipsRepository; private readonly DeviceId _activeDevice; @@ -20,7 +20,7 @@ public Handler(IRelationshipsRepository relationshipsRepository, IUserContext us _activeDevice = userContext.GetDeviceId(); } - public async Task Handle(RejectRelationshipCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var relationshipId = RelationshipId.Parse(request.RelationshipId); @@ -31,6 +31,6 @@ public async Task Handle(RejectRelationshipCommand r await _relationshipsRepository.Update(relationship); - return new RejectRelationshipResponse(relationship); + return new Response(relationship); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Response.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Response.cs index 8e64f55e65..dcb4ca3465 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Response.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Response.cs @@ -3,9 +3,10 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.RejectRelationship; -public class RejectRelationshipResponse : RelationshipMetadataDTO +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RejectRelationshipResponse")] +public class Response : RelationshipMetadataDTO { - public RejectRelationshipResponse(Relationship relationship) : base(relationship) + public Response(Relationship relationship) : base(relationship) { } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Validator.cs index da86109dc2..ec2c418e19 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.RejectRelationship; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.RelationshipId).ValidId(); + RuleFor(x => x.RelationshipId).ValidId(); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Command.cs index 60971f45df..42849c72d2 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.RejectRelationshipReactivation; -public class RejectRelationshipReactivationCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RejectRelationshipReactivationCommand")] +public class Command : IRequest { public required string RelationshipId { get; init; } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Endpoint.cs index 8b61058f8b..468fc79652 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Endpoint.cs @@ -13,7 +13,7 @@ internal static class Endpoint public static RouteGroupBuilder MapRejectRelationshipReactivationEndpoint(this RouteGroupBuilder group) { group.MapPut("{id}/Reactivate/Reject", Handle) - .Produces>(StatusCodes.Status200OK) + .Produces>(StatusCodes.Status200OK) .Produces(StatusCodes.Status400BadRequest) .Produces(StatusCodes.Status404NotFound); return group; @@ -21,7 +21,7 @@ public static RouteGroupBuilder MapRejectRelationshipReactivationEndpoint(this R private static async Task Handle([FromRoute] string id, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new RejectRelationshipReactivationCommand { RelationshipId = id }, cancellationToken); + var response = await mediator.Send(new Command { RelationshipId = id }, cancellationToken); return EnvelopeHttpResults.Ok(response); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Handler.cs index 353da7beed..37e67e28ee 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.RejectRelationshipReactivation; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IRelationshipsRepository _relationshipsRepository; private readonly IdentityAddress _activeIdentity; @@ -19,7 +19,7 @@ public Handler(IRelationshipsRepository relationshipsRepository, IUserContext us _activeDevice = userContext.GetDeviceId(); } - public async Task Handle(RejectRelationshipReactivationCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var relationshipId = RelationshipId.Parse(request.RelationshipId); @@ -29,6 +29,6 @@ public async Task Handle(RejectRelations await _relationshipsRepository.Update(relationship); - return new RejectRelationshipReactivationResponse(relationship); + return new Response(relationship); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Response.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Response.cs index 71c6be3cbd..c630f7b406 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Response.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Response.cs @@ -3,9 +3,10 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.RejectRelationshipReactivation; -public class RejectRelationshipReactivationResponse : RelationshipMetadataDTO +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RejectRelationshipReactivationResponse")] +public class Response : RelationshipMetadataDTO { - public RejectRelationshipReactivationResponse(Relationship relationship) : base(relationship) + public Response(Relationship relationship) : base(relationship) { } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Validator.cs index bb122bb130..1857a3d632 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.RejectRelationshipReactivation; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.RelationshipId).ValidId(); + RuleFor(x => x.RelationshipId).ValidId(); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Command.cs index 138517fcba..f740f04095 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.RequestRelationshipReactivation; -public class RequestRelationshipReactivationCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RequestRelationshipReactivationCommand")] +public class Command : IRequest { public required string RelationshipId { get; init; } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Endpoint.cs index b44b573f82..f9d250936d 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Endpoint.cs @@ -13,7 +13,7 @@ internal static class Endpoint public static RouteGroupBuilder MapRequestRelationshipReactivationEndpoint(this RouteGroupBuilder group) { group.MapPut("{id}/Reactivate", Handle) - .Produces>(StatusCodes.Status200OK) + .Produces>(StatusCodes.Status200OK) .Produces(StatusCodes.Status400BadRequest) .Produces(StatusCodes.Status404NotFound); return group; @@ -21,7 +21,7 @@ public static RouteGroupBuilder MapRequestRelationshipReactivationEndpoint(this private static async Task Handle([FromRoute] string id, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new RequestRelationshipReactivationCommand { RelationshipId = id }, cancellationToken); + var response = await mediator.Send(new Command { RelationshipId = id }, cancellationToken); return EnvelopeHttpResults.Ok(response); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Handler.cs index 8a52e5c3eb..fd17f724c2 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.RequestRelationshipReactivation; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IRelationshipsRepository _relationshipsRepository; private readonly IdentityAddress _activeIdentity; @@ -19,7 +19,7 @@ public Handler(IRelationshipsRepository relationshipsRepository, IUserContext us _activeDevice = userContext.GetDeviceId(); } - public async Task Handle(RequestRelationshipReactivationCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var relationshipId = RelationshipId.Parse(request.RelationshipId); var relationship = await _relationshipsRepository.GetRelationshipWithoutContent(relationshipId, _activeIdentity, cancellationToken, track: true); @@ -28,6 +28,6 @@ public async Task Handle(RequestRelatio await _relationshipsRepository.Update(relationship); - return new RequestRelationshipReactivationResponse(relationship); + return new Response(relationship); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Response.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Response.cs index 273c088487..80b252a390 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Response.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Response.cs @@ -3,9 +3,10 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.RequestRelationshipReactivation; -public class RequestRelationshipReactivationResponse : RelationshipMetadataDTO +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RequestRelationshipReactivationResponse")] +public class Response : RelationshipMetadataDTO { - public RequestRelationshipReactivationResponse(Relationship relationship) : base(relationship) + public Response(Relationship relationship) : base(relationship) { } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Validator.cs index 1efc2169c9..733020ef1e 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.RequestRelationshipReactivation; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.RelationshipId).ValidId(); + RuleFor(x => x.RelationshipId).ValidId(); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Command.cs index 4ad26c622f..901ff81cdc 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.RevokeRelationship; -public class RevokeRelationshipCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RevokeRelationshipCommand")] +public class Command : IRequest { public required string RelationshipId { get; init; } public byte[]? CreationResponseContent { get; init; } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Endpoint.cs index 9d8601a757..05608e15f3 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Endpoint.cs @@ -13,7 +13,7 @@ internal static class Endpoint public static RouteGroupBuilder MapRevokeRelationshipEndpoint(this RouteGroupBuilder group) { group.MapPut("{id}/Revoke", Handle) - .Produces>(StatusCodes.Status200OK) + .Produces>(StatusCodes.Status200OK) .Produces(StatusCodes.Status400BadRequest) .Produces(StatusCodes.Status404NotFound); return group; @@ -21,7 +21,7 @@ public static RouteGroupBuilder MapRevokeRelationshipEndpoint(this RouteGroupBui private static async Task Handle([FromRoute] string id, [FromBody] RequestBody body, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new RevokeRelationshipCommand { RelationshipId = id, CreationResponseContent = body.CreationResponseContent }, cancellationToken); + var response = await mediator.Send(new Command { RelationshipId = id, CreationResponseContent = body.CreationResponseContent }, cancellationToken); return EnvelopeHttpResults.Ok(response); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Handler.cs index 6ffcdca538..5ce91ba4e1 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.RevokeRelationship; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IRelationshipsRepository _relationshipsRepository; private readonly IdentityAddress _activeIdentity; @@ -19,7 +19,7 @@ public Handler(IRelationshipsRepository relationshipsRepository, IUserContext us _activeDevice = userContext.GetDeviceId(); } - public async Task Handle(RevokeRelationshipCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var relationshipId = RelationshipId.Parse(request.RelationshipId); var relationship = await _relationshipsRepository.GetRelationshipWithContent(relationshipId, _activeIdentity, cancellationToken, track: true); @@ -28,6 +28,6 @@ public async Task Handle(RevokeRelationshipCommand r await _relationshipsRepository.Update(relationship); - return new RevokeRelationshipResponse(relationship); + return new Response(relationship); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Response.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Response.cs index d81d4ae400..e122926e20 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Response.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Response.cs @@ -3,9 +3,10 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.RevokeRelationship; -public class RevokeRelationshipResponse : RelationshipMetadataDTO +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RevokeRelationshipResponse")] +public class Response : RelationshipMetadataDTO { - public RevokeRelationshipResponse(Relationship relationship) : base(relationship) + public Response(Relationship relationship) : base(relationship) { } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Validator.cs index 8b761adac6..62c85243a0 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.RevokeRelationship; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.RelationshipId).ValidId(); + RuleFor(x => x.RelationshipId).ValidId(); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Command.cs index db0a42e0c0..a6fde0bb6b 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.RevokeRelationshipReactivation; -public class RevokeRelationshipReactivationCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RevokeRelationshipReactivationCommand")] +public class Command : IRequest { public required string RelationshipId { get; init; } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Endpoint.cs index ca543d8f78..7fc2635020 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Endpoint.cs @@ -13,7 +13,7 @@ internal static class Endpoint public static RouteGroupBuilder MapRevokeRelationshipReactivationEndpoint(this RouteGroupBuilder group) { group.MapPut("{id}/Reactivate/Revoke", Handle) - .Produces>(StatusCodes.Status200OK) + .Produces>(StatusCodes.Status200OK) .Produces(StatusCodes.Status400BadRequest) .Produces(StatusCodes.Status404NotFound); return group; @@ -21,7 +21,7 @@ public static RouteGroupBuilder MapRevokeRelationshipReactivationEndpoint(this R private static async Task Handle([FromRoute] string id, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new RevokeRelationshipReactivationCommand { RelationshipId = id }, cancellationToken); + var response = await mediator.Send(new Command { RelationshipId = id }, cancellationToken); return EnvelopeHttpResults.Ok(response); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Handler.cs index 34a8c242d7..8d03cd72d8 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.RevokeRelationshipReactivation; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IRelationshipsRepository _relationshipsRepository; private readonly IdentityAddress _activeIdentity; @@ -19,7 +19,7 @@ public Handler(IRelationshipsRepository relationshipsRepository, IUserContext us _activeDevice = userContext.GetDeviceId(); } - public async Task Handle(RevokeRelationshipReactivationCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var relationshipId = RelationshipId.Parse(request.RelationshipId); var relationship = await _relationshipsRepository.GetRelationshipWithoutContent(relationshipId, _activeIdentity, cancellationToken, track: true); @@ -28,6 +28,6 @@ public async Task Handle(RevokeRelations await _relationshipsRepository.Update(relationship); - return new RevokeRelationshipReactivationResponse(relationship); + return new Response(relationship); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Response.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Response.cs index 25184126e1..933b739e56 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Response.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Response.cs @@ -3,7 +3,8 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.RevokeRelationshipReactivation; -public class RevokeRelationshipReactivationResponse : RelationshipMetadataDTO +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RevokeRelationshipReactivationResponse")] +public class Response : RelationshipMetadataDTO { - public RevokeRelationshipReactivationResponse(Relationship relationship) : base(relationship) { } + public Response(Relationship relationship) : base(relationship) { } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Validator.cs index 57a6f29546..79ec86e4e5 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.RevokeRelationshipReactivation; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.RelationshipId).ValidId(); + RuleFor(x => x.RelationshipId).ValidId(); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Command.cs index 959a81751e..f2709497dc 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Command.cs @@ -3,7 +3,8 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.TerminateRelationship; -public class TerminateRelationshipCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("TerminateRelationshipCommand")] +public class Command : IRequest { public required string RelationshipId { get; init; } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Endpoint.cs index f46601254f..87931d65d4 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Endpoint.cs @@ -22,7 +22,7 @@ public static RouteGroupBuilder MapTerminateRelationshipEndpoint(this RouteGroup private static async Task Handle([FromRoute] string id, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new TerminateRelationshipCommand { RelationshipId = id }, cancellationToken); + var response = await mediator.Send(new Command { RelationshipId = id }, cancellationToken); return EnvelopeHttpResults.Ok(response); } } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Handler.cs index bb7937bcf9..6ca2c37e8d 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Handler.cs @@ -7,7 +7,7 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.TerminateRelationship; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IRelationshipsRepository _relationshipsRepository; private readonly IdentityAddress _activeIdentity; @@ -20,7 +20,7 @@ public Handler(IRelationshipsRepository relationshipsRepository, IUserContext us _activeDevice = userContext.GetDeviceId(); } - public async Task Handle(TerminateRelationshipCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var relationshipId = RelationshipId.Parse(request.RelationshipId); var relationship = await _relationshipsRepository.GetRelationshipWithoutContent(relationshipId, _activeIdentity, cancellationToken, track: true); diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Validator.cs index e14470000b..0bbc9d0179 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Validator.cs @@ -4,11 +4,11 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.TerminateRelationship; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.RelationshipId).ValidId(); + RuleFor(x => x.RelationshipId).ValidId(); } } diff --git a/Modules/Relationships/src/Relationships.Module/RelationshipsEventBusExtensions.cs b/Modules/Relationships/src/Relationships.Module/RelationshipsEventBusExtensions.cs index b0e1ef63f2..be3cca77fa 100644 --- a/Modules/Relationships/src/Relationships.Module/RelationshipsEventBusExtensions.cs +++ b/Modules/Relationships/src/Relationships.Module/RelationshipsEventBusExtensions.cs @@ -1,9 +1,9 @@ +using FeatureFlagsOfIdentityChanged = Backbone.Modules.Relationships.Module.Features.DomainEvents.FeatureFlagsOfIdentityChanged; +using IdentityDeleted = Backbone.Modules.Relationships.Module.Features.DomainEvents.IdentityDeleted; +using IdentityDeletionCancelled = Backbone.Modules.Relationships.Module.Features.DomainEvents.IdentityDeletionCancelled; +using IdentityToBeDeleted = Backbone.Modules.Relationships.Module.Features.DomainEvents.IdentityToBeDeleted; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.Modules.Devices.Contracts.DomainEvents; -using Backbone.Modules.Relationships.Module.Features.DomainEvents.FeatureFlagsOfIdentityChanged; -using Backbone.Modules.Relationships.Module.Features.DomainEvents.IdentityDeleted; -using Backbone.Modules.Relationships.Module.Features.DomainEvents.IdentityDeletionCancelled; -using Backbone.Modules.Relationships.Module.Features.DomainEvents.IdentityToBeDeleted; namespace Backbone.Modules.Relationships.Module; @@ -18,10 +18,10 @@ private static async Task SubscribeToIdentitiesEvents(IEventBus eventBus) { await Task.WhenAll(new List { - eventBus.Subscribe(), - eventBus.Subscribe(), - eventBus.Subscribe(), - eventBus.Subscribe() + eventBus.Subscribe(), + eventBus.Subscribe(), + eventBus.Subscribe(), + eventBus.Subscribe() }); } } diff --git a/Modules/Relationships/test/Relationships.Module.Tests/DomainEvents/Incoming/IdentityDeleted/IdentityDeletedDomainEventHandler.Tests.cs b/Modules/Relationships/test/Relationships.Module.Tests/DomainEvents/Incoming/IdentityDeleted/IdentityDeletedDomainEventHandler.Tests.cs index b315ceb22c..a7e5bb82a7 100644 --- a/Modules/Relationships/test/Relationships.Module.Tests/DomainEvents/Incoming/IdentityDeleted/IdentityDeletedDomainEventHandler.Tests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/DomainEvents/Incoming/IdentityDeleted/IdentityDeletedDomainEventHandler.Tests.cs @@ -1,7 +1,7 @@ -using System.Linq.Expressions; +using IdentityDeletedSlice = Backbone.Modules.Relationships.Module.Features.DomainEvents.IdentityDeleted; +using System.Linq.Expressions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.Modules.Devices.Contracts.DomainEvents; -using Backbone.Modules.Relationships.Module.Features.DomainEvents.IdentityDeleted; using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Module.Tests.TestHelpers; using Backbone.Modules.Relationships.Contracts.DomainEvents; @@ -47,8 +47,8 @@ public static async Task Publishes_PeerToBeDeletedDomainEvent() .MustHaveHappenedOnceExactly(); } - private static IdentityDeletedDomainEventHandler CreateHandler(IRelationshipsRepository relationshipsRepository, IEventBus eventBus) + private static IdentityDeletedSlice.Handler CreateHandler(IRelationshipsRepository relationshipsRepository, IEventBus eventBus) { - return new IdentityDeletedDomainEventHandler(relationshipsRepository, eventBus); + return new IdentityDeletedSlice.Handler(relationshipsRepository, eventBus); } } diff --git a/Modules/Relationships/test/Relationships.Module.Tests/DomainEvents/Incoming/IdentityDeletionCancelled/IdentityDeletionCancelledDomainEventHandler.Tests.cs b/Modules/Relationships/test/Relationships.Module.Tests/DomainEvents/Incoming/IdentityDeletionCancelled/IdentityDeletionCancelledDomainEventHandler.Tests.cs index 2521aa31a4..119aeb23a6 100644 --- a/Modules/Relationships/test/Relationships.Module.Tests/DomainEvents/Incoming/IdentityDeletionCancelled/IdentityDeletionCancelledDomainEventHandler.Tests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/DomainEvents/Incoming/IdentityDeletionCancelled/IdentityDeletionCancelledDomainEventHandler.Tests.cs @@ -1,7 +1,7 @@ -using System.Linq.Expressions; +using IdentityDeletionCancelledSlice = Backbone.Modules.Relationships.Module.Features.DomainEvents.IdentityDeletionCancelled; +using System.Linq.Expressions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.Modules.Devices.Contracts.DomainEvents; -using Backbone.Modules.Relationships.Module.Features.DomainEvents.IdentityDeletionCancelled; using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Module.Tests.TestHelpers; using Backbone.Modules.Relationships.Contracts.DomainEvents; @@ -47,8 +47,8 @@ public static async Task Publishes_PeerToBeDeletedDomainEvent() .MustHaveHappenedOnceExactly(); } - private static IdentityDeletionCancelledDomainEventHandler CreateHandler(IRelationshipsRepository relationshipsRepository, IEventBus eventBus) + private static IdentityDeletionCancelledSlice.Handler CreateHandler(IRelationshipsRepository relationshipsRepository, IEventBus eventBus) { - return new IdentityDeletionCancelledDomainEventHandler(relationshipsRepository, eventBus); + return new IdentityDeletionCancelledSlice.Handler(relationshipsRepository, eventBus); } } diff --git a/Modules/Relationships/test/Relationships.Module.Tests/DomainEvents/Incoming/IdentityToBeDeleted/IdentityToBeDeletedDomainEventHandler.Tests.cs b/Modules/Relationships/test/Relationships.Module.Tests/DomainEvents/Incoming/IdentityToBeDeleted/IdentityToBeDeletedDomainEventHandler.Tests.cs index d18fed5ee4..28ae5a6fe7 100644 --- a/Modules/Relationships/test/Relationships.Module.Tests/DomainEvents/Incoming/IdentityToBeDeleted/IdentityToBeDeletedDomainEventHandler.Tests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/DomainEvents/Incoming/IdentityToBeDeleted/IdentityToBeDeletedDomainEventHandler.Tests.cs @@ -1,7 +1,7 @@ -using System.Linq.Expressions; +using IdentityToBeDeletedSlice = Backbone.Modules.Relationships.Module.Features.DomainEvents.IdentityToBeDeleted; +using System.Linq.Expressions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.Modules.Devices.Contracts.DomainEvents; -using Backbone.Modules.Relationships.Module.Features.DomainEvents.IdentityToBeDeleted; using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Module.Tests.TestHelpers; using Backbone.Modules.Relationships.Contracts.DomainEvents; @@ -51,8 +51,8 @@ public static async Task Publishes_PeerToBeDeletedDomainEvent() .MustHaveHappenedOnceExactly(); } - private static IdentityToBeDeletedDomainEventHandler CreateHandler(IRelationshipsRepository relationshipsRepository, IEventBus eventBus) + private static IdentityToBeDeletedSlice.Handler CreateHandler(IRelationshipsRepository relationshipsRepository, IEventBus eventBus) { - return new IdentityToBeDeletedDomainEventHandler(relationshipsRepository, eventBus); + return new IdentityToBeDeletedSlice.Handler(relationshipsRepository, eventBus); } } diff --git a/Modules/Relationships/test/Relationships.Module.Tests/Identities/IdentityDeleter.Tests.cs b/Modules/Relationships/test/Relationships.Module.Tests/Identities/IdentityDeleter.Tests.cs index eb5a914858..d1ec16432a 100644 --- a/Modules/Relationships/test/Relationships.Module.Tests/Identities/IdentityDeleter.Tests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/Identities/IdentityDeleter.Tests.cs @@ -1,9 +1,9 @@ -using Backbone.BuildingBlocks.Application.Identities; +using AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity; +using AnonymizeRelationshipTemplatesForIdentity = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplatesForIdentity; +using DecomposeAndAnonymizeRelationshipsOfIdentity = Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeAndAnonymizeRelationshipsOfIdentity; +using DeleteRelationshipTemplatesOfIdentity = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplatesOfIdentity; +using Backbone.BuildingBlocks.Application.Identities; using Backbone.Modules.Relationships.Module.Features.Identities.DeleteIdentity; -using Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeAndAnonymizeRelationshipsOfIdentity; -using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity; -using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplatesForIdentity; -using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplatesOfIdentity; using FakeItEasy; using MediatR; @@ -25,16 +25,16 @@ public async Task Deleter_calls_correct_command() // Assert A.CallTo(() => mockMediator.Send( - A.That.Matches(i => i.IdentityAddress == identityAddress), + A.That.Matches(i => i.IdentityAddress == identityAddress), A._)).MustHaveHappenedOnceExactly(); A.CallTo(() => mockMediator.Send( - A.That.Matches(i => i.IdentityAddress == identityAddress), + A.That.Matches(i => i.IdentityAddress == identityAddress), A._)).MustHaveHappenedOnceExactly(); A.CallTo(() => mockMediator.Send( - A.That.Matches(i => i.IdentityAddress == identityAddress), + A.That.Matches(i => i.IdentityAddress == identityAddress), A._)).MustHaveHappenedOnceExactly(); A.CallTo(() => mockMediator.Send( - A.That.Matches(i => i.IdentityAddress == identityAddress), + A.That.Matches(i => i.IdentityAddress == identityAddress), A._)).MustHaveHappenedOnceExactly(); } diff --git a/Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Commands/CreateRelationshipTemplate/Validator.Tests.cs b/Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Commands/CreateRelationshipTemplate/Validator.Tests.cs index fb0b1d37d3..b1c5b8e9ad 100644 --- a/Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Commands/CreateRelationshipTemplate/Validator.Tests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Commands/CreateRelationshipTemplate/Validator.Tests.cs @@ -1,4 +1,5 @@ -using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.CreateRelationshipTemplate; +using CreateRelationshipTemplateSlice = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.CreateRelationshipTemplate; +using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.CreateRelationshipTemplate; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; @@ -14,7 +15,7 @@ public void Happy_Path_with_optional_parameters() // Act var validationResult = validator.TestValidate( - new CreateRelationshipTemplateCommand + new CreateRelationshipTemplateSlice.Command { ExpiresAt = DateTime.UtcNow.AddDays(1), MaxNumberOfAllocations = 1, @@ -34,7 +35,7 @@ public void Happy_Path_without_optional_parameters() // Act var validationResult = validator.TestValidate( - new CreateRelationshipTemplateCommand + new CreateRelationshipTemplateSlice.Command { Content = [1] }); @@ -51,14 +52,14 @@ public void Fails_when_ExpiresAt_is_invalid() // Act var validationResult = validator.TestValidate( - new CreateRelationshipTemplateCommand + new CreateRelationshipTemplateSlice.Command { ExpiresAt = DateTime.UtcNow.AddDays(-1), Content = [1] }); // Assert - validationResult.ShouldHaveValidationErrorForItem(nameof(CreateRelationshipTemplateCommand.ExpiresAt), "error.platform.validation.invalidPropertyValue", "'Expires At' must be in the future."); + validationResult.ShouldHaveValidationErrorForItem(nameof(CreateRelationshipTemplateSlice.Command.ExpiresAt), "error.platform.validation.invalidPropertyValue", "'Expires At' must be in the future."); } [Fact] @@ -69,14 +70,14 @@ public void Fails_when_MaxNumberOfAllocations_is_invalid() // Act var validationResult = validator.TestValidate( - new CreateRelationshipTemplateCommand + new CreateRelationshipTemplateSlice.Command { MaxNumberOfAllocations = 0, Content = [1] }); // Assert - validationResult.ShouldHaveValidationErrorForItem(nameof(CreateRelationshipTemplateCommand.MaxNumberOfAllocations), "error.platform.validation.invalidPropertyValue", + validationResult.ShouldHaveValidationErrorForItem(nameof(CreateRelationshipTemplateSlice.Command.MaxNumberOfAllocations), "error.platform.validation.invalidPropertyValue", "'Max Number Of Allocations' must be greater than '0'."); } @@ -88,14 +89,14 @@ public void Fails_when_ForIdentity_is_invalid() // Act var validationResult = validator.TestValidate( - new CreateRelationshipTemplateCommand + new CreateRelationshipTemplateSlice.Command { Content = [1], ForIdentity = "some-address" }); // Assert - validationResult.ShouldHaveValidationErrorForId(nameof(CreateRelationshipTemplateCommand.ForIdentity)); + validationResult.ShouldHaveValidationErrorForId(nameof(CreateRelationshipTemplateSlice.Command.ForIdentity)); } [Fact] @@ -109,14 +110,14 @@ public void Fails_when_Password_is_too_long() // Act var validationResult = validator.TestValidate( - new CreateRelationshipTemplateCommand + new CreateRelationshipTemplateSlice.Command { Content = [1], Password = password }); // Assert - validationResult.ShouldHaveValidationErrorForItem(nameof(CreateRelationshipTemplateCommand.Password), "error.platform.validation.invalidPropertyValue", + validationResult.ShouldHaveValidationErrorForItem(nameof(CreateRelationshipTemplateSlice.Command.Password), "error.platform.validation.invalidPropertyValue", "'Password' must be between 1 and 200 bytes long. You entered 250 bytes."); } } diff --git a/Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Commands/DeleteRelationshipTemplatesOfIdentity/Handler.Tests.cs b/Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Commands/DeleteRelationshipTemplatesOfIdentity/Handler.Tests.cs index 54a6f5fc58..67c97f1fb4 100644 --- a/Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Commands/DeleteRelationshipTemplatesOfIdentity/Handler.Tests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Commands/DeleteRelationshipTemplatesOfIdentity/Handler.Tests.cs @@ -1,4 +1,5 @@ -using System.Linq.Expressions; +using DeleteRelationshipTemplatesOfIdentitySlice = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplatesOfIdentity; +using System.Linq.Expressions; using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplatesOfIdentity; using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; @@ -15,7 +16,7 @@ public async Task Command_calls_delete_on_repository() var mockRelationshipTemplatesRepository = A.Fake(); var handler = new Handler(mockRelationshipTemplatesRepository); - var request = new DeleteRelationshipTemplatesOfIdentityCommand { IdentityAddress = CreateRandomIdentityAddress() }; + var request = new DeleteRelationshipTemplatesOfIdentitySlice.Command { IdentityAddress = CreateRandomIdentityAddress() }; // Act await handler.Handle(request, CancellationToken.None); diff --git a/Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Queries/ListRelationshipTemplates/Validator.Tests.cs b/Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Queries/ListRelationshipTemplates/Validator.Tests.cs index 972bb66f25..81143c238b 100644 --- a/Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Queries/ListRelationshipTemplates/Validator.Tests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Queries/ListRelationshipTemplates/Validator.Tests.cs @@ -1,3 +1,4 @@ +using ListRelationshipTemplatesSlice = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.ListRelationshipTemplates; using Backbone.BuildingBlocks.Application.Pagination; using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.ListRelationshipTemplates; using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; @@ -15,7 +16,7 @@ public void Happy_path() var validator = new Validator(); // Act - var command = new ListRelationshipTemplatesQuery + var command = new ListRelationshipTemplatesSlice.Query { PaginationFilter = new PaginationFilter(), Ids = [RelationshipTemplateId.New()] @@ -34,11 +35,11 @@ public void Fails_when_Ids_is_empty() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new ListRelationshipTemplatesQuery { PaginationFilter = new PaginationFilter(), Ids = [] }); + var validationResult = validator.TestValidate(new ListRelationshipTemplatesSlice.Query { PaginationFilter = new PaginationFilter(), Ids = [] }); // Assert validationResult.ShouldHaveValidationErrorForItem( - propertyName: nameof(ListRelationshipTemplatesQuery.Ids), + propertyName: nameof(ListRelationshipTemplatesSlice.Query.Ids), expectedErrorCode: "error.platform.validation.invalidPropertyValue", expectedErrorMessage: "'Ids' must not be empty."); } diff --git a/Modules/Relationships/test/Relationships.Module.Tests/Relationships/Commands/DecomposeAndAnonymizeRelationshipsOfIdentity/Handler.Tests.cs b/Modules/Relationships/test/Relationships.Module.Tests/Relationships/Commands/DecomposeAndAnonymizeRelationshipsOfIdentity/Handler.Tests.cs index f1294ba8e8..65ddfda7d7 100644 --- a/Modules/Relationships/test/Relationships.Module.Tests/Relationships/Commands/DecomposeAndAnonymizeRelationshipsOfIdentity/Handler.Tests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/Relationships/Commands/DecomposeAndAnonymizeRelationshipsOfIdentity/Handler.Tests.cs @@ -1,4 +1,5 @@ -using Backbone.Modules.Relationships.Abstractions; +using DecomposeAndAnonymizeRelationshipsOfIdentitySlice = Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeAndAnonymizeRelationshipsOfIdentity; +using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeAndAnonymizeRelationshipsOfIdentity; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using FakeItEasy; @@ -16,7 +17,7 @@ public async Task Command_calls_update_on_repository() var mockOptions = A.Dummy>(); var handler = new Handler(mockRelationshipTemplatesRepository, mockOptions); - var request = new DecomposeAndAnonymizeRelationshipsOfIdentityCommand { IdentityAddress = CreateRandomIdentityAddress() }; + var request = new DecomposeAndAnonymizeRelationshipsOfIdentitySlice.Command { IdentityAddress = CreateRandomIdentityAddress() }; // Act await handler.Handle(request, CancellationToken.None); diff --git a/Modules/Relationships/test/Relationships.Module.Tests/Relationships/Queries/ListRelationships/ListRelationshipsValidator.Tests.cs b/Modules/Relationships/test/Relationships.Module.Tests/Relationships/Queries/ListRelationships/ListRelationshipsValidator.Tests.cs index 594f74b6a6..63a4068fff 100644 --- a/Modules/Relationships/test/Relationships.Module.Tests/Relationships/Queries/ListRelationships/ListRelationshipsValidator.Tests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/Relationships/Queries/ListRelationships/ListRelationshipsValidator.Tests.cs @@ -1,3 +1,4 @@ +using ListRelationshipsSlice = Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationships; using Backbone.BuildingBlocks.Application.Pagination; using Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationships; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; @@ -15,7 +16,7 @@ public void Happy_path() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new ListRelationshipsQuery { PaginationFilter = new PaginationFilter(), Ids = [RelationshipId.New().Value] }); + var validationResult = validator.TestValidate(new ListRelationshipsSlice.Query { PaginationFilter = new PaginationFilter(), Ids = [RelationshipId.New().Value] }); // Assert validationResult.ShouldNotHaveAnyValidationErrors(); @@ -28,11 +29,11 @@ public void Fails_when_Ids_is_null() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new ListRelationshipsQuery { PaginationFilter = new PaginationFilter(), Ids = [] }); + var validationResult = validator.TestValidate(new ListRelationshipsSlice.Query { PaginationFilter = new PaginationFilter(), Ids = [] }); // Assert validationResult.ShouldHaveValidationErrorForItem( - propertyName: nameof(ListRelationshipsQuery.Ids), + propertyName: nameof(ListRelationshipsSlice.Query.Ids), expectedErrorCode: "error.platform.validation.invalidPropertyValue", expectedErrorMessage: "'Ids' must not be empty."); } @@ -44,11 +45,11 @@ public void Fails_when_Ids_is_empty() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new ListRelationshipsQuery { PaginationFilter = new PaginationFilter(), Ids = [] }); + var validationResult = validator.TestValidate(new ListRelationshipsSlice.Query { PaginationFilter = new PaginationFilter(), Ids = [] }); // Assert validationResult.ShouldHaveValidationErrorForItem( - propertyName: nameof(ListRelationshipsQuery.Ids), + propertyName: nameof(ListRelationshipsSlice.Query.Ids), expectedErrorCode: "error.platform.validation.invalidPropertyValue", expectedErrorMessage: "'Ids' must not be empty."); } diff --git a/Modules/Synchronization/src/Synchronization.Module/ApplicationServiceCollectionExtensions.cs b/Modules/Synchronization/src/Synchronization.Module/ApplicationServiceCollectionExtensions.cs index 5a99cf69c7..713dbe0de1 100644 --- a/Modules/Synchronization/src/Synchronization.Module/ApplicationServiceCollectionExtensions.cs +++ b/Modules/Synchronization/src/Synchronization.Module/ApplicationServiceCollectionExtensions.cs @@ -1,7 +1,7 @@ +using PushDatawalletModifications = Backbone.Modules.Synchronization.Module.Features.Datawallets.PushDatawalletModifications; using System.Reflection; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Application.MediatR; -using Backbone.Modules.Synchronization.Module.Features.Datawallets.PushDatawalletModifications; using FluentValidation; using Microsoft.Extensions.DependencyInjection; @@ -14,13 +14,13 @@ internal static class ApplicationServiceCollectionExtensions public void AddApplication() { services.AddMediatR(c => c - .RegisterServicesFromAssemblyContaining() + .RegisterServicesFromAssemblyContaining() .AddOpenBehavior(typeof(LoggingBehavior<,>)) .AddOpenBehavior(typeof(RequestValidationBehavior<,>)) .AddOpenBehavior(typeof(QuotaEnforcerBehavior<,>)) ); - services.AddValidatorsFromAssembly(typeof(PushDatawalletModificationsCommand).Assembly); + services.AddValidatorsFromAssembly(typeof(PushDatawalletModifications.Command).Assembly); services.AddEventHandlers(); } diff --git a/Modules/Synchronization/src/Synchronization.Module/EventBusExtensions.cs b/Modules/Synchronization/src/Synchronization.Module/EventBusExtensions.cs index 4f03b563eb..c0c18900cf 100644 --- a/Modules/Synchronization/src/Synchronization.Module/EventBusExtensions.cs +++ b/Modules/Synchronization/src/Synchronization.Module/EventBusExtensions.cs @@ -1,22 +1,22 @@ +using FileOwnershipClaimed = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.FileOwnershipClaimed; +using FileOwnershipLocked = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.FileOwnershipLocked; +using IdentityDeletionProcessStarted = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.IdentityDeletionProcessStarted; +using IdentityDeletionProcessStatusChanged = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.IdentityDeletionProcessStatusChanged; +using MessageCreated = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.MessageCreated; +using PeerDeleted = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerDeleted; +using PeerDeletionCancelled = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerDeletionCancelled; +using PeerFeatureFlagsChanged = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerFeatureFlagsChanged; +using PeerToBeDeleted = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerToBeDeleted; +using RelationshipReactivationCompleted = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipReactivationCompleted; +using RelationshipReactivationRequested = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipReactivationRequested; +using RelationshipStatusChanged = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipStatusChanged; +using RelationshipTemplateAllocationsExhausted = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipTemplateAllocationsExhausted; +using TokenLocked = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.TokenLocked; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.Modules.Devices.Contracts.DomainEvents; using Backbone.Modules.Files.Contracts.DomainEvents; using Backbone.Modules.Messages.Contracts.DomainEvents; using Backbone.Modules.Relationships.Contracts.DomainEvents; -using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.FileOwnershipClaimed; -using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.FileOwnershipLocked; -using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.IdentityDeletionProcessStarted; -using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.IdentityDeletionProcessStatusChanged; -using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.MessageCreated; -using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerDeleted; -using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerDeletionCancelled; -using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerFeatureFlagsChanged; -using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerToBeDeleted; -using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipReactivationCompleted; -using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipReactivationRequested; -using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipStatusChanged; -using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipTemplateAllocationsExhausted; -using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.TokenLocked; using Backbone.Modules.Tokens.Contracts.DomainEvents; namespace Backbone.Modules.Synchronization.Module; @@ -37,9 +37,9 @@ private static async Task SubscribeToMessagesEvents(IEventBus eventBus) { await Task.WhenAll(new List { - eventBus.Subscribe(), - eventBus.Subscribe(), - eventBus.Subscribe() + eventBus.Subscribe(), + eventBus.Subscribe(), + eventBus.Subscribe() }); } @@ -47,21 +47,21 @@ private static async Task SubscribeToRelationshipsEvents(IEventBus eventBus) { await Task.WhenAll(new List { - eventBus.Subscribe(), - eventBus.Subscribe(), - eventBus.Subscribe(), - eventBus.Subscribe(), - eventBus.Subscribe(), - eventBus.Subscribe(), - eventBus.Subscribe(), - eventBus.Subscribe(), - eventBus.Subscribe(), - eventBus.Subscribe() + eventBus.Subscribe(), + eventBus.Subscribe(), + eventBus.Subscribe(), + eventBus.Subscribe(), + eventBus.Subscribe(), + eventBus.Subscribe(), + eventBus.Subscribe(), + eventBus.Subscribe(), + eventBus.Subscribe(), + eventBus.Subscribe() }); } private static async Task SubscribeToTokensEvents(IEventBus eventBus) { - await eventBus.Subscribe(); + await eventBus.Subscribe(); } } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/DeleteDatawalletsOfIdentity/DeleteDatawalletsOfIdentityCommand.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/DeleteDatawalletsOfIdentity/Command.cs similarity index 56% rename from Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/DeleteDatawalletsOfIdentity/DeleteDatawalletsOfIdentityCommand.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/DeleteDatawalletsOfIdentity/Command.cs index 398e32d884..1c68c9e68d 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/DeleteDatawalletsOfIdentity/DeleteDatawalletsOfIdentityCommand.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/DeleteDatawalletsOfIdentity/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.DeleteDatawalletsOfIdentity; -public class DeleteDatawalletsOfIdentityCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteDatawalletsOfIdentityCommand")] +public class Command : IRequest { public required string IdentityAddress { get; init; } } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/DeleteDatawalletsOfIdentity/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/DeleteDatawalletsOfIdentity/Handler.cs index 0aa6fa8efb..43cb9b6d52 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/DeleteDatawalletsOfIdentity/Handler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/DeleteDatawalletsOfIdentity/Handler.cs @@ -5,7 +5,7 @@ namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.DeleteDatawalletsOfIdentity; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly ISynchronizationDbContext _dbContext; @@ -14,7 +14,7 @@ public Handler(ISynchronizationDbContext dbContext) _dbContext = dbContext; } - public async Task Handle(DeleteDatawalletsOfIdentityCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { await _dbContext.Set().Where(d => d.Owner == request.IdentityAddress).ExecuteDeleteAsync(cancellationToken); } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/DeleteDatawalletsOfIdentity/Validator.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/DeleteDatawalletsOfIdentity/Validator.cs index 64ace8698b..6aa023b304 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/DeleteDatawalletsOfIdentity/Validator.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/DeleteDatawalletsOfIdentity/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.DeleteDatawalletsOfIdentity; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.IdentityAddress).ValidId(); + RuleFor(x => x.IdentityAddress).ValidId(); } } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/Endpoint.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/Endpoint.cs index f57a5c76cc..cd56354cb0 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/Endpoint.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/Endpoint.cs @@ -22,7 +22,7 @@ public static RouteGroupBuilder MapGetDatawalletEndpoint(this RouteGroupBuilder private static async Task Handle(IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new GetDatawalletQuery(), cancellationToken); + var response = await mediator.Send(new Query(), cancellationToken); return EnvelopeHttpResults.Ok(response); } } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/Handler.cs index cd954d16bb..355c73a802 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/Handler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/Handler.cs @@ -8,7 +8,7 @@ namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.GetDatawallet; -internal class Handler : IRequestHandler +internal class Handler : IRequestHandler { private readonly IdentityAddress _activeIdentity; private readonly ISynchronizationDbContext _dbContext; @@ -19,7 +19,7 @@ public Handler(ISynchronizationDbContext dbContext, IUserContext userContext) _activeIdentity = userContext.GetAddress(); } - public async Task Handle(GetDatawalletQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var datawallet = await _dbContext.GetDatawallet(_activeIdentity, cancellationToken) ?? throw new NotFoundException(nameof(Datawallet)); return new DatawalletDTO(datawallet); diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/GetDatawalletQuery.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/Query.cs similarity index 57% rename from Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/GetDatawalletQuery.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/Query.cs index 86ac244eab..28ca95fa3d 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/GetDatawalletQuery.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/Query.cs @@ -3,4 +3,5 @@ namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.GetDatawallet; -public class GetDatawalletQuery : IRequest; +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetDatawalletQuery")] +public class Query : IRequest; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Endpoint.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Endpoint.cs index 4489a6227e..f2e86639c2 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Endpoint.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Endpoint.cs @@ -17,7 +17,7 @@ internal static class Endpoint public static RouteGroupBuilder MapListModificationsEndpoint(this RouteGroupBuilder group) { group.MapGet("Modifications", Handle) - .Produces>(StatusCodes.Status200OK) + .Produces>(StatusCodes.Status200OK) .Produces(StatusCodes.Status400BadRequest); return group; } @@ -31,7 +31,7 @@ private static async Task Handle([FromQuery(Name = "PageNumber")] int? throw new ApplicationException(GenericApplicationErrors.Validation.InvalidPageSize(options.Value.Pagination.MaxPageSize)); paginationFilter.PageSize ??= options.Value.Pagination.DefaultPageSize; - var response = await mediator.Send(new ListModificationsQuery + var response = await mediator.Send(new Query { PaginationFilter = paginationFilter, LocalIndex = localIndex, SupportedDatawalletVersion = supportedDatawalletVersion ?? 0 }, cancellationToken); diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Handler.cs index 59fa94ceee..cc5292b081 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Handler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Handler.cs @@ -8,7 +8,7 @@ namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.ListModifications; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IdentityAddress _activeIdentity; private readonly ISynchronizationDbContext _dbContext; @@ -19,7 +19,7 @@ public Handler(ISynchronizationDbContext dbContext, IUserContext userContext) _activeIdentity = userContext.GetAddress(); } - public async Task Handle(ListModificationsQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var supportedDatawalletVersion = new Datawallet.DatawalletVersion(request.SupportedDatawalletVersion); @@ -30,7 +30,7 @@ public async Task Handle(ListModificationsQuery reque var dbPaginationResult = await _dbContext.GetDatawalletModifications(_activeIdentity, request.LocalIndex, request.PaginationFilter, cancellationToken); - return new ListModificationsResponse(dbPaginationResult.ItemsOnPage.Select(modification => new DatawalletModificationDTO(modification)), request.PaginationFilter, + return new Response(dbPaginationResult.ItemsOnPage.Select(modification => new DatawalletModificationDTO(modification)), request.PaginationFilter, dbPaginationResult.TotalNumberOfItems); } } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/ListModificationsResponse.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/ListModificationsResponse.cs deleted file mode 100644 index c5f426cb84..0000000000 --- a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/ListModificationsResponse.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; - -namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.ListModifications; - -public class ListModificationsResponse : PagedResponse -{ - public ListModificationsResponse(IEnumerable items, PaginationFilter previousPaginationFilter, int totalRecords) : base(items, previousPaginationFilter, totalRecords) - { - } -} diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/ListModificationsQuery.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Query.cs similarity index 72% rename from Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/ListModificationsQuery.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Query.cs index 5d033b9132..af07267a80 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/ListModificationsQuery.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Query.cs @@ -3,7 +3,8 @@ namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.ListModifications; -public class ListModificationsQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListModificationsQuery")] +public class Query : IRequest { public long? LocalIndex { get; init; } public required ushort SupportedDatawalletVersion { get; init; } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Response.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Response.cs new file mode 100644 index 0000000000..a53e9c8ccc --- /dev/null +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Response.cs @@ -0,0 +1,12 @@ +using Backbone.BuildingBlocks.Application.Pagination; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; + +namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.ListModifications; + +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListModificationsResponse")] +public class Response : PagedResponse +{ + public Response(IEnumerable items, PaginationFilter previousPaginationFilter, int totalRecords) : base(items, previousPaginationFilter, totalRecords) + { + } +} diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/PushDatawalletModificationsCommand.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Command.cs similarity index 72% rename from Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/PushDatawalletModificationsCommand.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Command.cs index 670c7d1c44..a2465fbc26 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/PushDatawalletModificationsCommand.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Command.cs @@ -3,7 +3,8 @@ namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.PushDatawalletModifications; -public class PushDatawalletModificationsCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("PushDatawalletModificationsCommand")] +public class Command : IRequest { public long? LocalIndex { get; init; } public required ushort SupportedDatawalletVersion { get; init; } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Endpoint.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Endpoint.cs index 7cbdae91f7..65eca93c37 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Endpoint.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Endpoint.cs @@ -15,7 +15,7 @@ public static RouteGroupBuilder MapPushDatawalletModificationsEndpoint(this Rout { group.MapPost("Modifications", Handle) .Accepts(isOptional: true, "application/json", "application/*+json") - .Produces>(StatusCodes.Status201Created) + .Produces>(StatusCodes.Status201Created) .Produces(StatusCodes.Status400BadRequest) .Produces(StatusCodes.Status404NotFound); return group; @@ -27,7 +27,7 @@ private static async Task Handle([FromBody] PushDatawalletModifications if (request == null || request.Modifications == null || request.Modifications.Any(m => m != null && (m.Collection == null || m.ObjectIdentifier == null))) throw new BadHttpRequestException("Required request fields must not be null."); - var response = await mediator.Send(new PushDatawalletModificationsCommand + var response = await mediator.Send(new Command { Modifications = request.Modifications, LocalIndex = request.LocalIndex, SupportedDatawalletVersion = supportedDatawalletVersion ?? 0 }, cancellationToken); diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Handler.cs index b654abe6ee..843215ed4b 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Handler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Handler.cs @@ -11,7 +11,7 @@ namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.PushDatawalletModifications; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly DeviceId _activeDevice; private readonly IdentityAddress _activeIdentity; @@ -20,8 +20,8 @@ public class Handler : IRequestHandler Handle(PushDatawalletModificationsCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { _request = request; _cancellationToken = cancellationToken; @@ -119,7 +119,7 @@ private void EnsureDeviceIsUpToDate() private void BuildResponse() { var responseItems = _modifications.Select(m => new PushDatawalletModificationsResponseItem(m)); - _response = new PushDatawalletModificationsResponse { Modifications = responseItems, NewIndex = responseItems.Max(i => i.Index) }; + _response = new Response { Modifications = responseItems, NewIndex = responseItems.Max(i => i.Index) }; } private async Task Save(DatawalletModification[] modifications) diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/PushDatawalletModificationsResponse.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Response.cs similarity index 85% rename from Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/PushDatawalletModificationsResponse.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Response.cs index 1d7ff26e56..0054c0ecb4 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/PushDatawalletModificationsResponse.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Response.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.PushDatawalletModifications; -public class PushDatawalletModificationsResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("PushDatawalletModificationsResponse")] +public class Response { public required long NewIndex { get; set; } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Validator.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Validator.cs index 1cf5aefa6c..6669acb1ad 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Validator.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Validator.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.PushDatawalletModifications; // ReSharper disable once UnusedMember.Global -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/FileOwnershipClaimed/FileOwnershipClaimedDomainEventHandler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/FileOwnershipClaimed/Handler.cs similarity index 78% rename from Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/FileOwnershipClaimed/FileOwnershipClaimedDomainEventHandler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/FileOwnershipClaimed/Handler.cs index 2f803906e9..9574f900a0 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/FileOwnershipClaimed/FileOwnershipClaimedDomainEventHandler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/FileOwnershipClaimed/Handler.cs @@ -7,12 +7,12 @@ namespace Backbone.Modules.Synchronization.Module.Features.ExternalEvents.FileOwnershipClaimed; -public class FileOwnershipClaimedDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly ISynchronizationDbContext _dbContext; - private readonly ILogger _logger; + private readonly ILogger _logger; - public FileOwnershipClaimedDomainEventHandler(ILogger logger, ISynchronizationDbContext dbContext) + public Handler(ILogger logger, ISynchronizationDbContext dbContext) { _logger = logger; _dbContext = dbContext; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/FileOwnershipLocked/FileOwnershipLockedDomainEventHandler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/FileOwnershipLocked/Handler.cs similarity index 77% rename from Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/FileOwnershipLocked/FileOwnershipLockedDomainEventHandler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/FileOwnershipLocked/Handler.cs index d2d34b0f0d..ea4211783d 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/FileOwnershipLocked/FileOwnershipLockedDomainEventHandler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/FileOwnershipLocked/Handler.cs @@ -7,12 +7,12 @@ namespace Backbone.Modules.Synchronization.Module.Features.ExternalEvents.FileOwnershipLocked; -public class FileOwnershipLockedDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly ISynchronizationDbContext _dbContext; - private readonly ILogger _logger; + private readonly ILogger _logger; - public FileOwnershipLockedDomainEventHandler(ILogger logger, ISynchronizationDbContext dbContext) + public Handler(ILogger logger, ISynchronizationDbContext dbContext) { _logger = logger; _dbContext = dbContext; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/IdentityDeletionProcessStarted/IdentityDeletionProcessStartedDomainEventHandler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/IdentityDeletionProcessStarted/Handler.cs similarity index 80% rename from Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/IdentityDeletionProcessStarted/IdentityDeletionProcessStartedDomainEventHandler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/IdentityDeletionProcessStarted/Handler.cs index a7af8dcda7..d30da478ae 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/IdentityDeletionProcessStarted/IdentityDeletionProcessStartedDomainEventHandler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/IdentityDeletionProcessStarted/Handler.cs @@ -7,12 +7,12 @@ namespace Backbone.Modules.Synchronization.Module.Features.ExternalEvents.IdentityDeletionProcessStarted; -public class IdentityDeletionProcessStartedDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly ISynchronizationDbContext _dbContext; - private readonly ILogger _logger; + private readonly ILogger _logger; - public IdentityDeletionProcessStartedDomainEventHandler(ISynchronizationDbContext dbContext, ILogger logger) + public Handler(ISynchronizationDbContext dbContext, ILogger logger) { _dbContext = dbContext; _logger = logger; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/IdentityDeletionProcessStatusChanged/IdentityDeletionProcessStatusChangedDomainEventHandler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/IdentityDeletionProcessStatusChanged/Handler.cs similarity index 80% rename from Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/IdentityDeletionProcessStatusChanged/IdentityDeletionProcessStatusChangedDomainEventHandler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/IdentityDeletionProcessStatusChanged/Handler.cs index f388d967cb..bbd75c1813 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/IdentityDeletionProcessStatusChanged/IdentityDeletionProcessStatusChangedDomainEventHandler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/IdentityDeletionProcessStatusChanged/Handler.cs @@ -7,13 +7,13 @@ namespace Backbone.Modules.Synchronization.Module.Features.ExternalEvents.IdentityDeletionProcessStatusChanged; -public class IdentityDeletionProcessStatusChangedDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly ISynchronizationDbContext _dbContext; - private readonly ILogger _logger; + private readonly ILogger _logger; - public IdentityDeletionProcessStatusChangedDomainEventHandler(ISynchronizationDbContext dbContext, - ILogger logger) + public Handler(ISynchronizationDbContext dbContext, + ILogger logger) { _dbContext = dbContext; _logger = logger; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/MessageCreated/MessageCreatedDomainEventHandler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/MessageCreated/Handler.cs similarity index 88% rename from Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/MessageCreated/MessageCreatedDomainEventHandler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/MessageCreated/Handler.cs index a83a46e086..aa10bbaca0 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/MessageCreated/MessageCreatedDomainEventHandler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/MessageCreated/Handler.cs @@ -8,13 +8,13 @@ namespace Backbone.Modules.Synchronization.Module.Features.ExternalEvents.MessageCreated; -public class MessageCreatedDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly ISynchronizationDbContext _dbContext; private readonly IRelationshipsRepository _relationshipsRepository; - private readonly ILogger _logger; + private readonly ILogger _logger; - public MessageCreatedDomainEventHandler(ISynchronizationDbContext dbContext, IRelationshipsRepository relationshipsRepository, ILogger logger) + public Handler(ISynchronizationDbContext dbContext, IRelationshipsRepository relationshipsRepository, ILogger logger) { _dbContext = dbContext; _relationshipsRepository = relationshipsRepository; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerDeleted/PeerDeletedDomainEventHandler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerDeleted/Handler.cs similarity index 82% rename from Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerDeleted/PeerDeletedDomainEventHandler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerDeleted/Handler.cs index a5013dd19a..a4582451e7 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerDeleted/PeerDeletedDomainEventHandler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerDeleted/Handler.cs @@ -8,12 +8,12 @@ namespace Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerDeleted; -public class PeerDeletedDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly ISynchronizationDbContext _dbContext; - private readonly ILogger _logger; + private readonly ILogger _logger; - public PeerDeletedDomainEventHandler(ISynchronizationDbContext dbContext, ILogger logger) + public Handler(ISynchronizationDbContext dbContext, ILogger logger) { _dbContext = dbContext; _logger = logger; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerDeletionCancelled/PeerDeletionCancelledDomainEventHandler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerDeletionCancelled/Handler.cs similarity index 81% rename from Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerDeletionCancelled/PeerDeletionCancelledDomainEventHandler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerDeletionCancelled/Handler.cs index b2e5ecc266..d2d8592039 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerDeletionCancelled/PeerDeletionCancelledDomainEventHandler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerDeletionCancelled/Handler.cs @@ -7,12 +7,12 @@ namespace Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerDeletionCancelled; -public class PeerDeletionCancelledDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly ISynchronizationDbContext _dbContext; - private readonly ILogger _logger; + private readonly ILogger _logger; - public PeerDeletionCancelledDomainEventHandler(ISynchronizationDbContext dbContext, ILogger logger) + public Handler(ISynchronizationDbContext dbContext, ILogger logger) { _dbContext = dbContext; _logger = logger; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerFeatureFlagsChanged/PeerFeatureFlagsChangedDomainEventHandler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerFeatureFlagsChanged/Handler.cs similarity index 79% rename from Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerFeatureFlagsChanged/PeerFeatureFlagsChangedDomainEventHandler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerFeatureFlagsChanged/Handler.cs index b5679cbc08..f70190e5d5 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerFeatureFlagsChanged/PeerFeatureFlagsChangedDomainEventHandler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerFeatureFlagsChanged/Handler.cs @@ -7,12 +7,12 @@ namespace Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerFeatureFlagsChanged; -public class PeerFeatureFlagsChangedDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly ISynchronizationDbContext _dbContext; - private readonly ILogger _logger; + private readonly ILogger _logger; - public PeerFeatureFlagsChangedDomainEventHandler(ILogger logger, ISynchronizationDbContext dbContext) + public Handler(ILogger logger, ISynchronizationDbContext dbContext) { _logger = logger; _dbContext = dbContext; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerToBeDeleted/PeerToBeDeletedDomainEventHandler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerToBeDeleted/Handler.cs similarity index 81% rename from Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerToBeDeleted/PeerToBeDeletedDomainEventHandler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerToBeDeleted/Handler.cs index b794603840..39c80fe248 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerToBeDeleted/PeerToBeDeletedDomainEventHandler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/PeerToBeDeleted/Handler.cs @@ -7,12 +7,12 @@ namespace Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerToBeDeleted; -public class PeerToBeDeletedDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly ISynchronizationDbContext _dbContext; - private readonly ILogger _logger; + private readonly ILogger _logger; - public PeerToBeDeletedDomainEventHandler(ISynchronizationDbContext dbContext, ILogger logger) + public Handler(ISynchronizationDbContext dbContext, ILogger logger) { _dbContext = dbContext; _logger = logger; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipReactivationCompleted/RelationshipReactivationCompletedDomainEventHandler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipReactivationCompleted/Handler.cs similarity index 83% rename from Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipReactivationCompleted/RelationshipReactivationCompletedDomainEventHandler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipReactivationCompleted/Handler.cs index c8f1c63108..8abfab0f00 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipReactivationCompleted/RelationshipReactivationCompletedDomainEventHandler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipReactivationCompleted/Handler.cs @@ -6,12 +6,12 @@ namespace Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipReactivationCompleted; -public class RelationshipReactivationCompletedDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly ISynchronizationDbContext _dbContext; - private readonly ILogger _logger; + private readonly ILogger _logger; - public RelationshipReactivationCompletedDomainEventHandler(ISynchronizationDbContext dbContext, ILogger logger) + public Handler(ISynchronizationDbContext dbContext, ILogger logger) { _dbContext = dbContext; _logger = logger; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipReactivationRequested/RelationshipReactivationRequestedDomainEventHandler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipReactivationRequested/Handler.cs similarity index 77% rename from Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipReactivationRequested/RelationshipReactivationRequestedDomainEventHandler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipReactivationRequested/Handler.cs index fc559abc5f..a49f1c099e 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipReactivationRequested/RelationshipReactivationRequestedDomainEventHandler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipReactivationRequested/Handler.cs @@ -6,12 +6,12 @@ namespace Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipReactivationRequested; -public class RelationshipReactivationRequestedDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly ISynchronizationDbContext _dbContext; - private readonly ILogger _logger; + private readonly ILogger _logger; - public RelationshipReactivationRequestedDomainEventHandler(ISynchronizationDbContext dbContext, ILogger logger) + public Handler(ISynchronizationDbContext dbContext, ILogger logger) { _dbContext = dbContext; _logger = logger; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipStatusChanged/RelationshipStatusChangedDomainEventHandler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipStatusChanged/Handler.cs similarity index 89% rename from Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipStatusChanged/RelationshipStatusChangedDomainEventHandler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipStatusChanged/Handler.cs index 3bb7abdf21..8a59a56438 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipStatusChanged/RelationshipStatusChangedDomainEventHandler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipStatusChanged/Handler.cs @@ -6,12 +6,12 @@ namespace Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipStatusChanged; -public class RelationshipStatusChangedDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly ISynchronizationDbContext _dbContext; - private readonly ILogger _logger; + private readonly ILogger _logger; - public RelationshipStatusChangedDomainEventHandler(ISynchronizationDbContext dbContext, ILogger logger) + public Handler(ISynchronizationDbContext dbContext, ILogger logger) { _dbContext = dbContext; _logger = logger; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipTemplateAllocationsExhausted/RelationshipTemplateAllocationsExhaustedDomainEventHandler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipTemplateAllocationsExhausted/Handler.cs similarity index 73% rename from Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipTemplateAllocationsExhausted/RelationshipTemplateAllocationsExhaustedDomainEventHandler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipTemplateAllocationsExhausted/Handler.cs index 0abe099a05..023be03793 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipTemplateAllocationsExhausted/RelationshipTemplateAllocationsExhaustedDomainEventHandler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/RelationshipTemplateAllocationsExhausted/Handler.cs @@ -6,12 +6,12 @@ namespace Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipTemplateAllocationsExhausted; -public class RelationshipTemplateAllocationsExhaustedDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly ISynchronizationDbContext _context; - private readonly ILogger _logger; + private readonly ILogger _logger; - public RelationshipTemplateAllocationsExhaustedDomainEventHandler(ISynchronizationDbContext context, ILogger logger) + public Handler(ISynchronizationDbContext context, ILogger logger) { _context = context; _logger = logger; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/TokenLocked/TokenLockedDomainEventHandler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/TokenLocked/Handler.cs similarity index 83% rename from Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/TokenLocked/TokenLockedDomainEventHandler.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/TokenLocked/Handler.cs index aacda0221c..f093e0f044 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/TokenLocked/TokenLockedDomainEventHandler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/ExternalEvents/TokenLocked/Handler.cs @@ -5,11 +5,11 @@ namespace Backbone.Modules.Synchronization.Module.Features.ExternalEvents.TokenLocked; -public class TokenLockedDomainEventHandler : IDomainEventHandler +public class Handler : IDomainEventHandler { private readonly ISynchronizationDbContext _dbContext; - public TokenLockedDomainEventHandler(ISynchronizationDbContext dbContext) + public Handler(ISynchronizationDbContext dbContext) { _dbContext = dbContext; } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs index ea84e8e192..659e3c26d6 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs @@ -1,8 +1,8 @@ +using DeleteDatawalletsOfIdentity = Backbone.Modules.Synchronization.Module.Features.Datawallets.DeleteDatawalletsOfIdentity; +using DeleteExternalEventsOfIdentity = Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteExternalEventsOfIdentity; +using DeleteSyncRunsOfIdentity = Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteSyncRunsOfIdentity; using Backbone.BuildingBlocks.Application.Identities; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Synchronization.Module.Features.Datawallets.DeleteDatawalletsOfIdentity; -using Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteExternalEventsOfIdentity; -using Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteSyncRunsOfIdentity; using MediatR; namespace Backbone.Modules.Synchronization.Module.Features.Identities.DeleteIdentity; @@ -20,11 +20,11 @@ public IdentityDeleter(IMediator mediator, IDeletionProcessLogger deletionProces public async Task Delete(IdentityAddress identityAddress) { - await _mediator.Send(new DeleteExternalEventsOfIdentityCommand { IdentityAddress = identityAddress }); + await _mediator.Send(new DeleteExternalEventsOfIdentity.Command { IdentityAddress = identityAddress }); await _deletionProcessLogger.LogDeletion(identityAddress, "ExternalEvents"); - await _mediator.Send(new DeleteSyncRunsOfIdentityCommand { IdentityAddress = identityAddress }); + await _mediator.Send(new DeleteSyncRunsOfIdentity.Command { IdentityAddress = identityAddress }); await _deletionProcessLogger.LogDeletion(identityAddress, "SyncRuns"); - await _mediator.Send(new DeleteDatawalletsOfIdentityCommand { IdentityAddress = identityAddress }); + await _mediator.Send(new DeleteDatawalletsOfIdentity.Command { IdentityAddress = identityAddress }); await _deletionProcessLogger.LogDeletion(identityAddress, "Datawallets"); } } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteExternalEventsOfIdentity/DeleteExternalEventsOfIdentityCommand.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteExternalEventsOfIdentity/Command.cs similarity index 56% rename from Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteExternalEventsOfIdentity/DeleteExternalEventsOfIdentityCommand.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteExternalEventsOfIdentity/Command.cs index ff55811391..d5d579d5cc 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteExternalEventsOfIdentity/DeleteExternalEventsOfIdentityCommand.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteExternalEventsOfIdentity/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteExternalEventsOfIdentity; -public class DeleteExternalEventsOfIdentityCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteExternalEventsOfIdentityCommand")] +public class Command : IRequest { public required string IdentityAddress { get; init; } } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteExternalEventsOfIdentity/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteExternalEventsOfIdentity/Handler.cs index 924f692bb6..567468d6c0 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteExternalEventsOfIdentity/Handler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteExternalEventsOfIdentity/Handler.cs @@ -5,7 +5,7 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteExternalEventsOfIdentity; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly ISynchronizationDbContext _dbContext; @@ -14,7 +14,7 @@ public Handler(ISynchronizationDbContext dbContext) _dbContext = dbContext; } - public async Task Handle(DeleteExternalEventsOfIdentityCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { await _dbContext.Set().Where(d => d.Owner == request.IdentityAddress).ExecuteDeleteAsync(cancellationToken); } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteExternalEventsOfIdentity/Validator.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteExternalEventsOfIdentity/Validator.cs index 3e355204c6..fdd1fcbf61 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteExternalEventsOfIdentity/Validator.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteExternalEventsOfIdentity/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteExternalEventsOfIdentity; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.IdentityAddress).ValidId(); + RuleFor(x => x.IdentityAddress).ValidId(); } } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteSyncRunsOfIdentity/DeleteSyncRunsOfIdentityCommand.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteSyncRunsOfIdentity/Command.cs similarity index 56% rename from Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteSyncRunsOfIdentity/DeleteSyncRunsOfIdentityCommand.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteSyncRunsOfIdentity/Command.cs index a2a29aa0c9..06004fb6d8 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteSyncRunsOfIdentity/DeleteSyncRunsOfIdentityCommand.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteSyncRunsOfIdentity/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteSyncRunsOfIdentity; -public class DeleteSyncRunsOfIdentityCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteSyncRunsOfIdentityCommand")] +public class Command : IRequest { public required string IdentityAddress { get; init; } } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteSyncRunsOfIdentity/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteSyncRunsOfIdentity/Handler.cs index 8f13b1fe87..21fc81a634 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteSyncRunsOfIdentity/Handler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteSyncRunsOfIdentity/Handler.cs @@ -5,7 +5,7 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteSyncRunsOfIdentity; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly ISynchronizationDbContext _dbContext; @@ -14,7 +14,7 @@ public Handler(ISynchronizationDbContext dbContext) _dbContext = dbContext; } - public async Task Handle(DeleteSyncRunsOfIdentityCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { await _dbContext.Set().Where(d => d.CreatedBy == request.IdentityAddress).ExecuteDeleteAsync(cancellationToken); } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteSyncRunsOfIdentity/Validator.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteSyncRunsOfIdentity/Validator.cs index 62d8b128b2..296ca04168 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteSyncRunsOfIdentity/Validator.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteSyncRunsOfIdentity/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteSyncRunsOfIdentity; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.IdentityAddress).ValidId(); + RuleFor(x => x.IdentityAddress).ValidId(); } } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ExecuteHousekeeping/Command.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ExecuteHousekeeping/Command.cs new file mode 100644 index 0000000000..54c52a79db --- /dev/null +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ExecuteHousekeeping/Command.cs @@ -0,0 +1,6 @@ +using MediatR; + +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.ExecuteHousekeeping; + +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ExecuteHousekeepingCommand")] +public class Command : IRequest; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs deleted file mode 100644 index 3f9cef198f..0000000000 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ExecuteHousekeeping/ExecuteHousekeepingCommand.cs +++ /dev/null @@ -1,5 +0,0 @@ -using MediatR; - -namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.ExecuteHousekeeping; - -public class ExecuteHousekeepingCommand : IRequest; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ExecuteHousekeeping/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ExecuteHousekeeping/Handler.cs index ca06295427..c520ebe182 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ExecuteHousekeeping/Handler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ExecuteHousekeeping/Handler.cs @@ -7,7 +7,7 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.ExecuteHousekeeping; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly ISynchronizationDbContext _dbContext; @@ -16,7 +16,7 @@ public Handler(ISynchronizationDbContext dbContext) _dbContext = dbContext; } - public async Task Handle(ExecuteHousekeepingCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { await DeleteSyncRuns(cancellationToken); await DeleteDatawalletModifications(cancellationToken); diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/FinalizeDatawalletVersionUpgradeSyncRunCommand.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Command.cs similarity index 72% rename from Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/FinalizeDatawalletVersionUpgradeSyncRunCommand.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Command.cs index e1dd9fc41d..982799cf2b 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/FinalizeDatawalletVersionUpgradeSyncRunCommand.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Command.cs @@ -3,7 +3,8 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeDatawalletVersionUpgrade; -public class FinalizeDatawalletVersionUpgradeSyncRunCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("FinalizeDatawalletVersionUpgradeSyncRunCommand")] +public class Command : IRequest { public required string SyncRunId { get; init; } public required ushort NewDatawalletVersion { get; init; } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Endpoint.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Endpoint.cs index 29ffadc18b..2597efab43 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Endpoint.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Endpoint.cs @@ -1,3 +1,4 @@ +using FinalizeExternalEventSync = Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeExternalEventSync; using Backbone.BuildingBlocks.API; using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; @@ -16,7 +17,7 @@ public static RouteGroupBuilder MapFinalizeDatawalletVersionUpgradeEndpoint(this { group.MapPut("{id}/FinalizeDatawalletVersionUpgrade", Handle) .Accepts(isOptional: true, "application/json", "application/*+json") - .Produces>(StatusCodes.Status200OK) + .Produces>(StatusCodes.Status200OK) .Produces(StatusCodes.Status400BadRequest) .Produces(StatusCodes.Status404NotFound); return group; @@ -27,7 +28,7 @@ private static async Task Handle([FromRoute] string id, [FromBody] Fina if (request == null || request.DatawalletModifications == null || request.DatawalletModifications.Any(m => m != null && (m.Collection == null || m.ObjectIdentifier == null))) throw new BadHttpRequestException("Required request fields must not be null."); - var response = await mediator.Send(new FinalizeDatawalletVersionUpgradeSyncRunCommand + var response = await mediator.Send(new Command { SyncRunId = id, NewDatawalletVersion = request.NewDatawalletVersion, DatawalletModifications = request.DatawalletModifications }, cancellationToken); diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Handler.cs index 5a4414dcf4..4bcc697063 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Handler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Handler.cs @@ -10,13 +10,13 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeDatawalletVersionUpgrade; -public class Handler : SyncRunFinalization, IRequestHandler +public class Handler : SyncRunFinalization, IRequestHandler { public Handler(ISynchronizationDbContext dbContext, IUserContext userContext) : base(dbContext, userContext) { } - public async Task Handle(FinalizeDatawalletVersionUpgradeSyncRunCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { _syncRun = await _dbContext.GetSyncRun(SyncRunId.Parse(request.SyncRunId), _activeIdentity, cancellationToken); @@ -43,7 +43,7 @@ public async Task Handle(Finali await _dbContext.SaveChangesAsync(cancellationToken); - var response = new FinalizeDatawalletVersionUpgradeSyncRunResponse + var response = new Response { NewDatawalletModificationIndex = _datawallet.LatestModification?.Index, DatawalletModifications = newModifications.Select(m => new CreatedDatawalletModificationDTO(m)) diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/FinalizeDatawalletVersionUpgradeSyncRunResponse.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Response.cs similarity index 71% rename from Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/FinalizeDatawalletVersionUpgradeSyncRunResponse.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Response.cs index 8e7bc4c3df..8cf73e9f05 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/FinalizeDatawalletVersionUpgradeSyncRunResponse.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Response.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeDatawalletVersionUpgrade; -public class FinalizeDatawalletVersionUpgradeSyncRunResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("FinalizeDatawalletVersionUpgradeSyncRunResponse")] +public class Response { public long? NewDatawalletModificationIndex { get; set; } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/FinalizeDatawalletVersionUpgradeSyncRunCommandValidator.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Validator.cs similarity index 66% rename from Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/FinalizeDatawalletVersionUpgradeSyncRunCommandValidator.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Validator.cs index 943c8224b4..c1e84af84f 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/FinalizeDatawalletVersionUpgradeSyncRunCommandValidator.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Validator.cs @@ -7,11 +7,11 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeDatawalletVersionUpgrade; // ReSharper disable once UnusedMember.Global -public class FinalizeDatawalletVersionUpgradeSyncRunCommandValidator : AbstractValidator +public class Validator : AbstractValidator { - public FinalizeDatawalletVersionUpgradeSyncRunCommandValidator() + public Validator() { - RuleFor(x => x.SyncRunId).ValidId(); + RuleFor(x => x.SyncRunId).ValidId(); RuleFor(x => x.NewDatawalletVersion).DetailedNotEmpty(); RuleForEach(x => x.DatawalletModifications).SetValidator(new PushDatawalletModificationItemValidator()); } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/FinalizeExternalEventSyncSyncRunCommand.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Command.cs similarity index 84% rename from Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/FinalizeExternalEventSyncSyncRunCommand.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Command.cs index b484453c6b..cfb0eb2154 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/FinalizeExternalEventSyncSyncRunCommand.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Command.cs @@ -4,7 +4,8 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeExternalEventSync; -public class FinalizeExternalEventSyncSyncRunCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("FinalizeExternalEventSyncSyncRunCommand")] +public class Command : IRequest { public required string SyncRunId { get; init; } public List ExternalEventResults { get; set; } = []; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Endpoint.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Endpoint.cs index 1c3c914b80..26e7b9790e 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Endpoint.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Endpoint.cs @@ -15,7 +15,7 @@ public static RouteGroupBuilder MapFinalizeExternalEventSyncEndpoint(this RouteG { group.MapPut("{id}/FinalizeExternalEventSync", Handle) .Accepts(isOptional: true, "application/json", "application/*+json") - .Produces>(StatusCodes.Status200OK) + .Produces>(StatusCodes.Status200OK) .Produces(StatusCodes.Status400BadRequest) .Produces(StatusCodes.Status404NotFound); return group; @@ -28,7 +28,7 @@ private static async Task Handle([FromRoute] string id, [FromBody] Fina request.DatawalletModifications.Any(m => m != null && (m.Collection == null || m.ObjectIdentifier == null))) throw new BadHttpRequestException("Required request fields must not be null."); - var response = await mediator.Send(new FinalizeExternalEventSyncSyncRunCommand + var response = await mediator.Send(new Command { SyncRunId = id, ExternalEventResults = request.ExternalEventResults, DatawalletModifications = request.DatawalletModifications }, cancellationToken); @@ -38,6 +38,6 @@ private static async Task Handle([FromRoute] string id, [FromBody] Fina public class FinalizeExternalEventSyncRequest { - public List ExternalEventResults { get; set; } = []; + public List ExternalEventResults { get; set; } = []; public List DatawalletModifications { get; set; } = []; } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Handler.cs index 9640cad050..900bc61578 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Handler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Handler.cs @@ -10,13 +10,13 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeExternalEventSync; -public class Handler : SyncRunFinalization, IRequestHandler +public class Handler : SyncRunFinalization, IRequestHandler { public Handler(ISynchronizationDbContext dbContext, IUserContext userContext) : base(dbContext, userContext) { } - public async Task Handle(FinalizeExternalEventSyncSyncRunCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { _syncRun = await _dbContext.GetSyncRunWithExternalEvents(SyncRunId.Parse(request.SyncRunId), _activeIdentity, cancellationToken); @@ -42,7 +42,7 @@ public async Task Handle(FinalizeExter var newUnsyncedExternalEventsExist = await _dbContext.DoNewUnsyncedExternalEventsExist(_activeIdentity, 1, cancellationToken); - var response = new FinalizeExternalEventSyncSyncRunResponse + var response = new Response { NewDatawalletModificationIndex = _datawallet.LatestModification?.Index, DatawalletModifications = newModifications.Select(x => new CreatedDatawalletModificationDTO(x)), diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/FinalizeExternalEventSyncSyncRunResponse.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Response.cs similarity index 75% rename from Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/FinalizeExternalEventSyncSyncRunResponse.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Response.cs index f5e67ae69c..7f2adb66f6 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/FinalizeExternalEventSyncSyncRunResponse.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Response.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeExternalEventSync; -public class FinalizeExternalEventSyncSyncRunResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("FinalizeExternalEventSyncSyncRunResponse")] +public class Response { public long? NewDatawalletModificationIndex { get; set; } public required IEnumerable DatawalletModifications { get; set; } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/FinalizeExternalEventSyncSyncRunCommandValidator.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Validator.cs similarity index 56% rename from Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/FinalizeExternalEventSyncSyncRunCommandValidator.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Validator.cs index 9d1176368b..67dcc010f0 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/FinalizeExternalEventSyncSyncRunCommandValidator.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Validator.cs @@ -6,20 +6,20 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeExternalEventSync; // ReSharper disable once UnusedMember.Global -public class FinalizeExternalEventSyncSyncRunCommandValidator : AbstractValidator +public class Validator : AbstractValidator { - public FinalizeExternalEventSyncSyncRunCommandValidator() + public Validator() { - RuleFor(x => x.SyncRunId).ValidId(); + RuleFor(x => x.SyncRunId).ValidId(); RuleForEach(x => x.ExternalEventResults).SetValidator(new EventResultValidator()); RuleForEach(x => x.DatawalletModifications).SetValidator(new PushDatawalletModificationItemValidator()); } - public class EventResultValidator : AbstractValidator + public class EventResultValidator : AbstractValidator { public EventResultValidator() { - RuleFor(i => i.ExternalEventId).ValidId(); + RuleFor(i => i.ExternalEventId).ValidId(); RuleFor(i => i.ErrorCode).MaximumLength(100); } } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Endpoint.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Endpoint.cs index f938af926d..cd84f6aeff 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Endpoint.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Endpoint.cs @@ -22,7 +22,7 @@ public static RouteGroupBuilder MapGetSyncRunByIdEndpoint(this RouteGroupBuilder private static async Task Handle([FromRoute] string id, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new GetSyncRunByIdQuery { SyncRunId = id }, cancellationToken); + var response = await mediator.Send(new Query { SyncRunId = id }, cancellationToken); return EnvelopeHttpResults.Ok(response); } } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Handler.cs index d0c66f66cd..013be57db8 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Handler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Handler.cs @@ -7,7 +7,7 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.GetSyncRunById; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IdentityAddress _activeIdentity; private readonly ISynchronizationDbContext _dbContext; @@ -19,7 +19,7 @@ public Handler(ISynchronizationDbContext dbContext, IUserContext userContext) userContext.GetDeviceId(); } - public async Task Handle(GetSyncRunByIdQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var syncRun = await _dbContext.GetSyncRunAsNoTracking(SyncRunId.Parse(request.SyncRunId), _activeIdentity, CancellationToken.None); return new SyncRunDTO(syncRun); diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/GetSyncRunByIdQuery.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Query.cs similarity index 63% rename from Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/GetSyncRunByIdQuery.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Query.cs index f41a8eba46..8fe7fe93ec 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/GetSyncRunByIdQuery.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Query.cs @@ -3,7 +3,8 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.GetSyncRunById; -public class GetSyncRunByIdQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetSyncRunByIdQuery")] +public class Query : IRequest { public required string SyncRunId { get; init; } } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Validator.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Validator.cs index 915b5aabbe..d41ff26786 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Validator.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.GetSyncRunById; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.SyncRunId).ValidId(); + RuleFor(x => x.SyncRunId).ValidId(); } } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Endpoint.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Endpoint.cs index 23d91d01ba..5f0a6bd6db 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Endpoint.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Endpoint.cs @@ -17,7 +17,7 @@ internal static class Endpoint public static RouteGroupBuilder MapListExternalEventsOfSyncRunEndpoint(this RouteGroupBuilder group) { group.MapGet("{id}/ExternalEvents", Handle) - .Produces>(StatusCodes.Status200OK) + .Produces>(StatusCodes.Status200OK) .Produces(StatusCodes.Status400BadRequest) .Produces(StatusCodes.Status404NotFound); return group; @@ -30,7 +30,7 @@ private static async Task Handle([FromRoute] string id, [FromQuery(Name if (paginationFilter.PageSize > options.Value.Pagination.MaxPageSize) throw new ApplicationException(GenericApplicationErrors.Validation.InvalidPageSize(options.Value.Pagination.MaxPageSize)); - var response = await mediator.Send(new ListExternalEventsOfSyncRunQuery { SyncRunId = id, PaginationFilter = paginationFilter }, cancellationToken); + var response = await mediator.Send(new Query { SyncRunId = id, PaginationFilter = paginationFilter }, cancellationToken); return EnvelopeHttpResults.Paged(response); } } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Handler.cs index 264e7dae0b..b8aa086feb 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Handler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Handler.cs @@ -8,7 +8,7 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.ListExternalEventsOfSyncRun; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly DeviceId _activeDevice; private readonly IdentityAddress _activeIdentity; @@ -21,7 +21,7 @@ public Handler(ISynchronizationDbContext dbContext, IUserContext userContext) _activeDevice = userContext.GetDeviceId(); } - public async Task Handle(ListExternalEventsOfSyncRunQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var syncRun = await _dbContext.GetSyncRunAsNoTracking(SyncRunId.Parse(request.SyncRunId), _activeIdentity, cancellationToken); @@ -33,6 +33,6 @@ public async Task Handle(ListExternalEvents var dbPaginationResult = await _dbContext.GetExternalEventsOfSyncRun(request.PaginationFilter, _activeIdentity, syncRun.Id, cancellationToken); - return new ListExternalEventsOfSyncRunResponse(dbPaginationResult.ItemsOnPage.Select(e => new ExternalEventDTO(e)), request.PaginationFilter, dbPaginationResult.TotalNumberOfItems); + return new Response(dbPaginationResult.ItemsOnPage.Select(e => new ExternalEventDTO(e)), request.PaginationFilter, dbPaginationResult.TotalNumberOfItems); } } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/ListExternalEventsOfSyncRunResponse.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/ListExternalEventsOfSyncRunResponse.cs deleted file mode 100644 index 8f113146b0..0000000000 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/ListExternalEventsOfSyncRunResponse.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; - -namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.ListExternalEventsOfSyncRun; - -public class ListExternalEventsOfSyncRunResponse : PagedResponse -{ - public ListExternalEventsOfSyncRunResponse(IEnumerable events, PaginationFilter previousPaginationFilter, int totalRecords) : base(events, previousPaginationFilter, totalRecords) - { - } -} diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/ListExternalEventsOfSyncRunQuery.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Query.cs similarity index 67% rename from Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/ListExternalEventsOfSyncRunQuery.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Query.cs index 6300d1c86f..85333538d2 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/ListExternalEventsOfSyncRunQuery.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Query.cs @@ -3,7 +3,8 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.ListExternalEventsOfSyncRun; -public class ListExternalEventsOfSyncRunQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListExternalEventsOfSyncRunQuery")] +public class Query : IRequest { public required string SyncRunId { get; init; } public required PaginationFilter PaginationFilter { get; init; } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Response.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Response.cs new file mode 100644 index 0000000000..d8d2dcf7c9 --- /dev/null +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Response.cs @@ -0,0 +1,12 @@ +using Backbone.BuildingBlocks.Application.Pagination; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; + +namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.ListExternalEventsOfSyncRun; + +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListExternalEventsOfSyncRunResponse")] +public class Response : PagedResponse +{ + public Response(IEnumerable events, PaginationFilter previousPaginationFilter, int totalRecords) : base(events, previousPaginationFilter, totalRecords) + { + } +} diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Validator.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Validator.cs index ad28356cb7..96ada1f54a 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Validator.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.ListExternalEventsOfSyncRun; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.SyncRunId).ValidId(); + RuleFor(x => x.SyncRunId).ValidId(); } } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/RefreshExpirationTimeOfSyncRunCommand.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Command.cs similarity index 53% rename from Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/RefreshExpirationTimeOfSyncRunCommand.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Command.cs index efb858c26a..753e7aa3b4 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/RefreshExpirationTimeOfSyncRunCommand.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.RefreshExpirationTimeOfSyncRun; -public class RefreshExpirationTimeOfSyncRunCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RefreshExpirationTimeOfSyncRunCommand")] +public class Command : IRequest { public required string SyncRunId { get; init; } } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Endpoint.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Endpoint.cs index c263106c69..5dafa99bdc 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Endpoint.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Endpoint.cs @@ -13,7 +13,7 @@ internal static class Endpoint public static RouteGroupBuilder MapRefreshExpirationTimeOfSyncRunEndpoint(this RouteGroupBuilder group) { group.MapPut("{id}/RefreshExpirationTime", Handle) - .Produces>(StatusCodes.Status200OK) + .Produces>(StatusCodes.Status200OK) .Produces(StatusCodes.Status400BadRequest) .Produces(StatusCodes.Status404NotFound); return group; @@ -21,7 +21,7 @@ public static RouteGroupBuilder MapRefreshExpirationTimeOfSyncRunEndpoint(this R private static async Task Handle([FromRoute] string id, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new RefreshExpirationTimeOfSyncRunCommand { SyncRunId = id }, cancellationToken); + var response = await mediator.Send(new Command { SyncRunId = id }, cancellationToken); return EnvelopeHttpResults.Ok(response); } } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Handler.cs index e2a42d8862..ef55151afb 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Handler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Handler.cs @@ -7,7 +7,7 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.RefreshExpirationTimeOfSyncRun; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly DeviceId _activeDevice; private readonly IdentityAddress _activeIdentity; @@ -20,7 +20,7 @@ public Handler(ISynchronizationDbContext dbContext, IUserContext userContext) _activeDevice = userContext.GetDeviceId(); } - public async Task Handle(RefreshExpirationTimeOfSyncRunCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var syncRun = await _dbContext.GetSyncRun(SyncRunId.Parse(request.SyncRunId), _activeIdentity, cancellationToken); @@ -30,7 +30,7 @@ public async Task Handle(RefreshExpirati await SaveSyncRun(syncRun, cancellationToken); - return new RefreshExpirationTimeOfSyncRunResponse { ExpiresAt = syncRun.ExpiresAt }; + return new Response { ExpiresAt = syncRun.ExpiresAt }; } private void CheckPrerequisites(SyncRun syncRun) diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/RefreshExpirationTimeOfSyncRunResponse.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Response.cs similarity index 53% rename from Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/RefreshExpirationTimeOfSyncRunResponse.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Response.cs index 3476c116e0..954456e5b5 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/RefreshExpirationTimeOfSyncRunResponse.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Response.cs @@ -1,6 +1,7 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.RefreshExpirationTimeOfSyncRun; -public class RefreshExpirationTimeOfSyncRunResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RefreshExpirationTimeOfSyncRunResponse")] +public class Response { public DateTime ExpiresAt { get; set; } } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Validator.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Validator.cs index 3fd6126f46..6a3521a205 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Validator.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.RefreshExpirationTimeOfSyncRun; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.SyncRunId).ValidId(); + RuleFor(x => x.SyncRunId).ValidId(); } } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/StartSyncRunCommand.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Command.cs similarity index 72% rename from Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/StartSyncRunCommand.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Command.cs index 098aae6917..18fdbdd0b4 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/StartSyncRunCommand.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Command.cs @@ -3,7 +3,8 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.StartSyncRun; -public class StartSyncRunCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("StartSyncRunCommand")] +public class Command : IRequest { public required SyncRunDTO.SyncRunType Type { get; init; } public ushort? Duration { get; init; } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Endpoint.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Endpoint.cs index c0cef0fb9a..78002335ee 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Endpoint.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Endpoint.cs @@ -18,8 +18,8 @@ public static RouteGroupBuilder MapStartSyncRunEndpoint(this RouteGroupBuilder g { group.MapPost("", Handle) .Accepts(isOptional: true, "application/json", "application/*+json") - .Produces>(StatusCodes.Status200OK) - .Produces>(StatusCodes.Status201Created) + .Produces>(StatusCodes.Status200OK) + .Produces>(StatusCodes.Status201Created) .Produces(StatusCodes.Status400BadRequest); return group; } @@ -34,7 +34,7 @@ private static async Task Handle([FromBody] StartSyncRunRequestBody? re if (!await identityStatusProvider.IsActive(userContext.GetAddress(), cancellationToken)) throw new ApplicationException(ApplicationErrors.SyncRuns.CannotStartSyncRunWhileIdentityIsToBeDeleted()); - var response = await mediator.Send(new StartSyncRunCommand + var response = await mediator.Send(new Command { Type = requestBody.Type ?? SyncRunDTO.SyncRunType.ExternalEventSync, Duration = requestBody.Duration, SupportedDatawalletVersion = supportedDatawalletVersion ?? 0 diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Handler.cs index 3671bd032a..9eeb29f122 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Handler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Handler.cs @@ -12,7 +12,7 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.StartSyncRun; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private const int MAX_NUMBER_OF_SYNC_ERRORS_PER_EVENT = 3; private const int DEFAULT_DURATION = 10; @@ -24,7 +24,7 @@ public class Handler : IRequestHandler Handle(StartSyncRunCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { _request = request; _supportedDatawalletVersion = new DatawalletVersion(_request.SupportedDatawalletVersion); @@ -49,7 +49,7 @@ public async Task Handle(StartSyncRunCommand request, Canc }; } - private async Task StartExternalEventSync() + private async Task StartExternalEventSync() { EnsureDatawalletExists(); EnsureSufficientSupportedDatawalletVersion(); @@ -65,7 +65,7 @@ private async Task StartExternalEventSync() return CreateResponse(StartSyncRunStatus.Created, newSyncRun); } - private async Task StartDatawalletVersionUpgrade() + private async Task StartDatawalletVersionUpgrade() { EnsureSufficientSupportedDatawalletVersion(); await EnsureNoActiveSyncRunExists(); @@ -153,8 +153,8 @@ private long DetermineNextSyncRunIndex() return _previousSyncRun == null ? 0 : _previousSyncRun.Index + 1; } - private static StartSyncRunResponse CreateResponse(StartSyncRunStatus status, SyncRun? newSyncRun = null) + private static Response CreateResponse(StartSyncRunStatus status, SyncRun? newSyncRun = null) { - return new StartSyncRunResponse(status, newSyncRun); + return new Response(status, newSyncRun); } } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/StartSyncRunResponse.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Response.cs similarity index 75% rename from Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/StartSyncRunResponse.cs rename to Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Response.cs index 91d04aeb3e..1c005d64f6 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/StartSyncRunResponse.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Response.cs @@ -4,9 +4,10 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.StartSyncRun; -public class StartSyncRunResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("StartSyncRunResponse")] +public class Response { - public StartSyncRunResponse(StartSyncRunStatus status, SyncRun? newSyncRun = null) + public Response(StartSyncRunStatus status, SyncRun? newSyncRun = null) { Status = status; SyncRun = newSyncRun != null ? new SyncRunDTO(newSyncRun) : null; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Validator.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Validator.cs index aa7799d022..f2dbede2bd 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Validator.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Validator.cs @@ -3,7 +3,7 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.StartSyncRun; -internal class Validator : AbstractValidator +internal class Validator : AbstractValidator { public Validator() { diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/Commands/PushDatawalletModifications/HandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/Commands/PushDatawalletModifications/HandlerTests.cs index 5b0cb90010..7481979691 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/Commands/PushDatawalletModifications/HandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/Commands/PushDatawalletModifications/HandlerTests.cs @@ -1,3 +1,4 @@ +using PushDatawalletModificationsSlice = Backbone.Modules.Synchronization.Module.Features.Datawallets.PushDatawalletModifications; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; @@ -45,8 +46,8 @@ public async Task Parallel_push_leads_to_an_error_for_one_call() PushDatawalletModificationItem[] newModifications = [new() { Collection = "testCollection", DatawalletVersion = 1, ObjectIdentifier = "testIdentifier", Type = DatawalletModificationDTO.DatawalletModificationType.Create, EncryptedPayload = [0, 1, 2], PayloadCategory = null }]; // Act - var taskWithImmediateSave = handlerWithImmediateSave.Handle(new PushDatawalletModificationsCommand { Modifications = newModifications, SupportedDatawalletVersion = 1 }, CancellationToken.None); - var taskWithDelayedSave = handlerWithDelayedSave.Handle(new PushDatawalletModificationsCommand { Modifications = newModifications, SupportedDatawalletVersion = 1 }, CancellationToken.None); + var taskWithImmediateSave = handlerWithImmediateSave.Handle(new PushDatawalletModificationsSlice.Command { Modifications = newModifications, SupportedDatawalletVersion = 1 }, CancellationToken.None); + var taskWithDelayedSave = handlerWithDelayedSave.Handle(new PushDatawalletModificationsSlice.Command { Modifications = newModifications, SupportedDatawalletVersion = 1 }, CancellationToken.None); var handleWithImmediateSave = () => taskWithImmediateSave; var handleWithDelayedSave = () => taskWithDelayedSave; diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/Commands/PushDatawalletModifications/PushDatawalletModificationsCommandValidatorTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/Commands/PushDatawalletModifications/PushDatawalletModificationsCommandValidatorTests.cs index b69c9aa91b..d717bba585 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/Commands/PushDatawalletModifications/PushDatawalletModificationsCommandValidatorTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/Commands/PushDatawalletModifications/PushDatawalletModificationsCommandValidatorTests.cs @@ -1,3 +1,4 @@ +using PushDatawalletModificationsSlice = Backbone.Modules.Synchronization.Module.Features.Datawallets.PushDatawalletModifications; using Backbone.Modules.Synchronization.Module.Features.Datawallets.PushDatawalletModifications; using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; using FluentValidation.TestHelper; @@ -13,7 +14,7 @@ public void Happy_path() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new PushDatawalletModificationsCommand + var validationResult = validator.TestValidate(new PushDatawalletModificationsSlice.Command { Modifications = [ @@ -36,7 +37,7 @@ public void Fails_when_not_passing_a_SupportedDatawalletVersion() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new PushDatawalletModificationsCommand + var validationResult = validator.TestValidate(new PushDatawalletModificationsSlice.Command { Modifications = [ diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/Queries/GetDatawalletModifications/HandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/Queries/GetDatawalletModifications/HandlerTests.cs index 3d20c45d19..09c1f85dd7 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/Queries/GetDatawalletModifications/HandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/Queries/GetDatawalletModifications/HandlerTests.cs @@ -1,3 +1,4 @@ +using ListModifications = Backbone.Modules.Synchronization.Module.Features.Datawallets.ListModifications; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.BuildingBlocks.Application.Pagination; using Backbone.DevelopmentKit.Identity.ValueObjects; @@ -42,7 +43,7 @@ public async Task Combines_multiple_cacheChanged_modifications() _arrangeContext.SaveEntity(datawallet); // Act - var result = await _handler.Handle(new ListModificationsQuery { SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); + var result = await _handler.Handle(new ListModifications.Query { SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); // Assert result.ShouldHaveCount(1); @@ -65,7 +66,7 @@ public async Task Combines_multiple_update_modifications() _arrangeContext.SaveEntity(datawallet); // Act - var result = await _handler.Handle(new ListModificationsQuery { SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); + var result = await _handler.Handle(new ListModifications.Query { SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); // Assert result.ShouldHaveCount(1); @@ -88,7 +89,7 @@ public async Task Does_not_combine_modifications_of_different_types() _arrangeContext.SaveEntity(datawallet); // Act - var result = await _handler.Handle(new ListModificationsQuery { SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); + var result = await _handler.Handle(new ListModifications.Query { SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); // Assert result.ShouldHaveCount(2); @@ -112,7 +113,7 @@ public async Task Does_not_combine_modifications_with_different_ids() _arrangeContext.SaveEntity(datawallet); // Act - var result = await _handler.Handle(new ListModificationsQuery { SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); + var result = await _handler.Handle(new ListModifications.Query { SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); // Assert result.ShouldHaveCount(2); @@ -136,7 +137,7 @@ public async Task Does_not_combine_modifications_with_different_payload_categori _arrangeContext.SaveEntity(datawallet); // Act - var result = await _handler.Handle(new ListModificationsQuery { SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); + var result = await _handler.Handle(new ListModifications.Query { SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); // Assert result.ShouldHaveCount(2); @@ -153,7 +154,7 @@ public async Task Does_not_return_modifications_of_another_identity() _arrangeContext.SaveEntity(datawallet); // Act - var result = await _handler.Handle(new ListModificationsQuery { SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); + var result = await _handler.Handle(new ListModifications.Query { SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); // Assert result.ShouldHaveCount(0); @@ -238,7 +239,7 @@ public async Task Handles_complex_case_correctly() _arrangeContext.SaveEntity(datawalletOfActiveIdentity); // Act - var result = await _handler.Handle(new ListModificationsQuery { SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); + var result = await _handler.Handle(new ListModifications.Query { SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); // Assert result.ShouldHaveCount(9); @@ -273,7 +274,7 @@ public async Task Only_returns_modifications_after_given_local_index() _arrangeContext.SaveEntity(datawallet); // Act - var result = await _handler.Handle(new ListModificationsQuery { LocalIndex = 0, SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); + var result = await _handler.Handle(new ListModifications.Query { LocalIndex = 0, SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); // Assert result.ShouldHaveCount(1); @@ -302,9 +303,9 @@ public async Task Paginates_returned_results() // Act var firstPage = - await _handler.Handle(new ListModificationsQuery { PaginationFilter = new PaginationFilter(1, pageSize), SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); + await _handler.Handle(new ListModifications.Query { PaginationFilter = new PaginationFilter(1, pageSize), SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); var secondPage = - await _handler.Handle(new ListModificationsQuery { PaginationFilter = new PaginationFilter(2, pageSize), SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); + await _handler.Handle(new ListModifications.Query { PaginationFilter = new PaginationFilter(2, pageSize), SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); // Assert firstPage.ShouldHaveCount(2); @@ -336,7 +337,7 @@ public async Task Returns_all_modifications_when_passing_no_local_index() _arrangeContext.SaveEntity(datawallet); // Act - var result = await _handler.Handle(new ListModificationsQuery { SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); + var result = await _handler.Handle(new ListModifications.Query { SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); // Assert result.ShouldHaveCount(2); diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/IdentityDeletionProcessStartedDomainEventHandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/IdentityDeletionProcessStartedDomainEventHandlerTests.cs index 34834653d4..c4d06419b2 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/IdentityDeletionProcessStartedDomainEventHandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/IdentityDeletionProcessStartedDomainEventHandlerTests.cs @@ -1,5 +1,5 @@ +using IdentityDeletionProcessStarted = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.IdentityDeletionProcessStarted; using Backbone.Modules.Devices.Contracts.DomainEvents; -using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.IdentityDeletionProcessStarted; using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using FakeItEasy; @@ -18,7 +18,7 @@ public async Task Creates_an_external_event_if_initiator_is_someone_else() var fakeDbContext = A.Fake(); - var handler = new IdentityDeletionProcessStartedDomainEventHandler(fakeDbContext, A.Fake>()); + var handler = new IdentityDeletionProcessStarted.Handler(fakeDbContext, A.Fake>()); // Act await handler.Handle(identityDeletionProcessStartedDomainEvent); @@ -37,7 +37,7 @@ public async Task Does_nothing_if_initiator_is_deletion_process_owner() var fakeDbContext = A.Fake(); - var handler = new IdentityDeletionProcessStartedDomainEventHandler(fakeDbContext, A.Fake>()); + var handler = new IdentityDeletionProcessStarted.Handler(fakeDbContext, A.Fake>()); // Act await handler.Handle(identityDeletionProcessStartedDomainEvent); diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/IdentityDeletionProcessStatusChangedDomainEventHandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/IdentityDeletionProcessStatusChangedDomainEventHandlerTests.cs index 8104be5baf..2937169a26 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/IdentityDeletionProcessStatusChangedDomainEventHandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/IdentityDeletionProcessStatusChangedDomainEventHandlerTests.cs @@ -1,5 +1,5 @@ -using Backbone.Modules.Devices.Contracts.DomainEvents; -using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.IdentityDeletionProcessStatusChanged; +using IdentityDeletionProcessStatusChanged = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.IdentityDeletionProcessStatusChanged; +using Backbone.Modules.Devices.Contracts.DomainEvents; using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using FakeItEasy; @@ -19,8 +19,8 @@ public async Task Creates_an_external_event_if_initiator_is_someone_else() var mockDbContext = A.Fake(); - var handler = new IdentityDeletionProcessStatusChangedDomainEventHandler(mockDbContext, - A.Fake>()); + var handler = new IdentityDeletionProcessStatusChanged.Handler(mockDbContext, + A.Fake>()); // Act await handler.Handle(identityDeletionProcessStatusChangedDomainEvent); @@ -39,8 +39,8 @@ public async Task Does_nothing_if_initiator_is_deletion_process_owner() var mockDbContext = A.Fake(); - var handler = new IdentityDeletionProcessStatusChangedDomainEventHandler(mockDbContext, - A.Fake>()); + var handler = new IdentityDeletionProcessStatusChanged.Handler(mockDbContext, + A.Fake>()); // Act await handler.Handle(identityDeletionProcessStatusChangedDomainEvent); diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/MessageCreatedDomainEventHandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/MessageCreatedDomainEventHandlerTests.cs index 097b2eb966..f8af7e0687 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/MessageCreatedDomainEventHandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/MessageCreatedDomainEventHandlerTests.cs @@ -1,5 +1,5 @@ -using Backbone.Modules.Messages.Contracts.DomainEvents; -using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.MessageCreated; +using MessageCreated = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.MessageCreated; +using Backbone.Modules.Messages.Contracts.DomainEvents; using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Relationships; using Backbone.Modules.Synchronization.Domain.Entities.Sync; @@ -112,9 +112,9 @@ private IRelationshipsRepository RelationshipsRepositoryReturning(List>(); - return new MessageCreatedDomainEventHandler(dbContext, relationshipsRepository, logger); + var logger = A.Dummy>(); + return new MessageCreated.Handler(dbContext, relationshipsRepository, logger); } } diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/PeerDeletedDomainEventHandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/PeerDeletedDomainEventHandlerTests.cs index 4d84b29d73..b198085550 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/PeerDeletedDomainEventHandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/PeerDeletedDomainEventHandlerTests.cs @@ -1,5 +1,5 @@ -using Backbone.Modules.Relationships.Contracts.DomainEvents; -using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerDeleted; +using PeerDeleted = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerDeleted; +using Backbone.Modules.Relationships.Contracts.DomainEvents; using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using FakeItEasy; @@ -26,8 +26,8 @@ public async Task Creates_an_external_event() A.CallTo(() => mockDbContext.CreateExternalEvent(A._)).MustHaveHappenedOnceExactly(); } - private static PeerDeletedDomainEventHandler CreateHandler(ISynchronizationDbContext mockDbContext) + private static PeerDeleted.Handler CreateHandler(ISynchronizationDbContext mockDbContext) { - return new PeerDeletedDomainEventHandler(mockDbContext, A.Fake>()); + return new PeerDeleted.Handler(mockDbContext, A.Fake>()); } } diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/PeerDeletionCancelledDomainEventHandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/PeerDeletionCancelledDomainEventHandlerTests.cs index 272e21a5a2..24509bf75f 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/PeerDeletionCancelledDomainEventHandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/PeerDeletionCancelledDomainEventHandlerTests.cs @@ -1,5 +1,5 @@ -using Backbone.Modules.Relationships.Contracts.DomainEvents; -using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerDeletionCancelled; +using PeerDeletionCancelled = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerDeletionCancelled; +using Backbone.Modules.Relationships.Contracts.DomainEvents; using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using FakeItEasy; @@ -19,8 +19,8 @@ public async Task Creates_an_external_event() var mockDbContext = A.Fake(); - var handler = new PeerDeletionCancelledDomainEventHandler(mockDbContext, - A.Fake>()); + var handler = new PeerDeletionCancelled.Handler(mockDbContext, + A.Fake>()); // Act await handler.Handle(domainEvent); diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/PeerToBeDeletedDomainEventHandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/PeerToBeDeletedDomainEventHandlerTests.cs index 78a1d38bfc..5d590e1861 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/PeerToBeDeletedDomainEventHandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/PeerToBeDeletedDomainEventHandlerTests.cs @@ -1,5 +1,5 @@ -using Backbone.Modules.Relationships.Contracts.DomainEvents; -using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerToBeDeleted; +using PeerToBeDeleted = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerToBeDeleted; +using Backbone.Modules.Relationships.Contracts.DomainEvents; using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using FakeItEasy; @@ -29,8 +29,8 @@ await handler.Handle(new PeerToBeDeletedDomainEvent A.CallTo(() => mockDbContext.CreateExternalEvent(A._)).MustHaveHappenedOnceExactly(); } - private static PeerToBeDeletedDomainEventHandler CreateHandler(ISynchronizationDbContext mockDbContext) + private static PeerToBeDeleted.Handler CreateHandler(ISynchronizationDbContext mockDbContext) { - return new PeerToBeDeletedDomainEventHandler(mockDbContext, A.Fake>()); + return new PeerToBeDeleted.Handler(mockDbContext, A.Fake>()); } } diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/RelationshipReactivationCompletedDomainEventHandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/RelationshipReactivationCompletedDomainEventHandlerTests.cs index db5405cc7f..ec5628a517 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/RelationshipReactivationCompletedDomainEventHandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/RelationshipReactivationCompletedDomainEventHandlerTests.cs @@ -1,5 +1,5 @@ -using Backbone.Modules.Relationships.Contracts.DomainEvents; -using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipReactivationCompleted; +using RelationshipReactivationCompleted = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipReactivationCompleted; +using Backbone.Modules.Relationships.Contracts.DomainEvents; using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Relationships; using Backbone.Modules.Synchronization.Domain.Entities.Sync; @@ -65,10 +65,10 @@ private static RelationshipReactivationCompletedDomainEvent CreateReactivationCo }; } - private static RelationshipReactivationCompletedDomainEventHandler CreateHandler(ISynchronizationDbContext dbContext) + private static RelationshipReactivationCompleted.Handler CreateHandler(ISynchronizationDbContext dbContext) { - var logger = A.Dummy>(); + var logger = A.Dummy>(); - return new RelationshipReactivationCompletedDomainEventHandler(dbContext, logger); + return new RelationshipReactivationCompleted.Handler(dbContext, logger); } } diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/RelationshipStatusChangedDomainEventHandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/RelationshipStatusChangedDomainEventHandlerTests.cs index 135ec5666a..c3e1d993ee 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/RelationshipStatusChangedDomainEventHandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/RelationshipStatusChangedDomainEventHandlerTests.cs @@ -1,5 +1,5 @@ -using Backbone.Modules.Relationships.Contracts.DomainEvents; -using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipStatusChanged; +using RelationshipStatusChanged = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipStatusChanged; +using Backbone.Modules.Relationships.Contracts.DomainEvents; using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Relationships; using Backbone.Modules.Synchronization.Domain.Entities.Sync; @@ -154,8 +154,8 @@ public async Task Calls_DeleteBlockedExternalEventsWithTypeAndContext_when_new_s A.CallTo(() => mockDbContext.DeleteBlockedExternalEventsWithTypeAndContext(ExternalEventType.MessageReceived, relationshipId, A._)).MustHaveHappenedOnceExactly(); } - private static RelationshipStatusChangedDomainEventHandler CreateHandler(ISynchronizationDbContext dbContext) + private static RelationshipStatusChanged.Handler CreateHandler(ISynchronizationDbContext dbContext) { - return new RelationshipStatusChangedDomainEventHandler(dbContext, A.Fake>()); + return new RelationshipStatusChanged.Handler(dbContext, A.Fake>()); } } diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/TokenLockedDomainEventHandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/TokenLockedDomainEventHandlerTests.cs index 6e41bc3fc9..367d83729f 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/TokenLockedDomainEventHandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/TokenLockedDomainEventHandlerTests.cs @@ -1,4 +1,4 @@ -using Backbone.Modules.Synchronization.Module.Features.ExternalEvents.TokenLocked; +using TokenLocked = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.TokenLocked; using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using Backbone.Modules.Tokens.Contracts.DomainEvents; @@ -14,7 +14,7 @@ public async Task Sends_a_push_notification() // Arrange var fakeDbContext = A.Fake(); var identityAddress = CreateRandomIdentityAddress(); - var handler = new TokenLockedDomainEventHandler(fakeDbContext); + var handler = new TokenLocked.Handler(fakeDbContext); var domainEvent = new TokenLockedDomainEvent { TokenId = "TOK00000000000000001", CreatedBy = identityAddress }; // Act diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Identities/IdentityDeleterTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Identities/IdentityDeleterTests.cs index 74524eee64..71e0bb3f6e 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Identities/IdentityDeleterTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Identities/IdentityDeleterTests.cs @@ -1,8 +1,8 @@ -using Backbone.BuildingBlocks.Application.Identities; -using Backbone.Modules.Synchronization.Module.Features.Datawallets.DeleteDatawalletsOfIdentity; +using DeleteDatawalletsOfIdentity = Backbone.Modules.Synchronization.Module.Features.Datawallets.DeleteDatawalletsOfIdentity; +using DeleteExternalEventsOfIdentity = Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteExternalEventsOfIdentity; +using DeleteSyncRunsOfIdentity = Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteSyncRunsOfIdentity; +using Backbone.BuildingBlocks.Application.Identities; using Backbone.Modules.Synchronization.Module.Features.Identities.DeleteIdentity; -using Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteExternalEventsOfIdentity; -using Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteSyncRunsOfIdentity; using FakeItEasy; using MediatR; @@ -23,9 +23,9 @@ public async Task Deleter_calls_correct_command() await deleter.Delete(identityAddress); // Assert - A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); - A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); - A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); + A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); + A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); + A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); } [Fact] diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/FinalizeSyncRun/HandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/FinalizeSyncRun/HandlerTests.cs index a670e76e77..a266eca44b 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/FinalizeSyncRun/HandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/FinalizeSyncRun/HandlerTests.cs @@ -1,3 +1,4 @@ +using FinalizeExternalEventSync = Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeExternalEventSync; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; @@ -33,7 +34,7 @@ public async Task Cannot_be_finalized_by_other_identity() var handler = CreateHandler(_activeIdentity, _activeDevice); // Act - var acting = async () => await handler.Handle(new FinalizeExternalEventSyncSyncRunCommand { SyncRunId = syncRun.Id }, CancellationToken.None); + var acting = async () => await handler.Handle(new FinalizeExternalEventSync.Command { SyncRunId = syncRun.Id }, CancellationToken.None); // Assert await acting.ShouldThrowAsync().ShouldContainMessage("SyncRun"); @@ -55,7 +56,7 @@ public async Task Cannot_finalize_when_no_active_sync_run_exists() // Act var acting = async () => - await handler.Handle(new FinalizeExternalEventSyncSyncRunCommand { SyncRunId = syncRun.Id, DatawalletModifications = [], ExternalEventResults = [] }, CancellationToken.None); + await handler.Handle(new FinalizeExternalEventSync.Command { SyncRunId = syncRun.Id, DatawalletModifications = [], ExternalEventResults = [] }, CancellationToken.None); // Assert await acting.ShouldThrowAsync().ShouldHaveErrorCode("error.platform.validation.syncRun.syncRunAlreadyFinalized"); @@ -76,7 +77,7 @@ public async Task Finalize_sync_run_without_results_succeeds() var handler = CreateHandler(_activeIdentity, _activeDevice); // Act - await handler.Handle(new FinalizeExternalEventSyncSyncRunCommand { SyncRunId = syncRun.Id, ExternalEventResults = [], DatawalletModifications = [] }, CancellationToken.None); + await handler.Handle(new FinalizeExternalEventSync.Command { SyncRunId = syncRun.Id, ExternalEventResults = [], DatawalletModifications = [] }, CancellationToken.None); // Assert // No Exception means success @@ -100,9 +101,9 @@ public async Task Item_results_with_error_code_delete_sync_run_reference() var handler = CreateHandler(_activeIdentity, _activeDevice); // Act - var results = new List { new(item.Id, "some-random-error-code") }; + var results = new List { new(item.Id, "some-random-error-code") }; - await handler.Handle(new FinalizeExternalEventSyncSyncRunCommand { SyncRunId = syncRun.Id, DatawalletModifications = [], ExternalEventResults = results }, CancellationToken.None); + await handler.Handle(new FinalizeExternalEventSync.Command { SyncRunId = syncRun.Id, DatawalletModifications = [], ExternalEventResults = results }, CancellationToken.None); // Assert var externalEvent = _assertionContext.ExternalEvents.First(i => i.Id == item.Id); externalEvent.SyncRunId.ShouldBeNull(); @@ -128,8 +129,8 @@ public async Task Missing_results_lead_to_SyncErrors() var handler = CreateHandler(_activeIdentity, _activeDevice); // Act - var eventResults = new List { new(item1.Id) { ExternalEventId = item1.Id } }; - await handler.Handle(new FinalizeExternalEventSyncSyncRunCommand { SyncRunId = syncRun.Id, ExternalEventResults = eventResults }, CancellationToken.None); + var eventResults = new List { new(item1.Id) { ExternalEventId = item1.Id } }; + await handler.Handle(new FinalizeExternalEventSync.Command { SyncRunId = syncRun.Id, ExternalEventResults = eventResults }, CancellationToken.None); // Assert _assertionContext.SyncErrors.ShouldContain(e => e.ExternalEventId == item2.Id && e.ErrorCode == "notProcessed"); @@ -163,7 +164,7 @@ public async Task Passed_DatawalletModifications_are_saved_to_database() } }; - await handler.Handle(new FinalizeExternalEventSyncSyncRunCommand { SyncRunId = syncRun.Id, DatawalletModifications = datawalletModifications }, CancellationToken.None); + await handler.Handle(new FinalizeExternalEventSync.Command { SyncRunId = syncRun.Id, DatawalletModifications = datawalletModifications }, CancellationToken.None); // Assert _assertionContext.DatawalletModifications.ShouldHaveCount(1); @@ -187,9 +188,9 @@ public async Task Successful_item_results_do_not_delete_sync_run_reference() var handler = CreateHandler(_activeIdentity, _activeDevice); // Act - var results = new List { new(item.Id) }; + var results = new List { new(item.Id) }; - await handler.Handle(new FinalizeExternalEventSyncSyncRunCommand { SyncRunId = syncRun.Id, ExternalEventResults = results }, CancellationToken.None); + await handler.Handle(new FinalizeExternalEventSync.Command { SyncRunId = syncRun.Id, ExternalEventResults = results }, CancellationToken.None); // Assert var externalEvent = _assertionContext.ExternalEvents.First(i => i.Id == item.Id); externalEvent.SyncRunId.ShouldBe(syncRun.Id); @@ -213,8 +214,8 @@ public async Task Sync_errors_for_item_results_with_error_code_are_created() var handler = CreateHandler(_activeIdentity, _activeDevice); // Act - var results = new List { new(item.Id, "some-random-error-code") }; - await handler.Handle(new FinalizeExternalEventSyncSyncRunCommand { SyncRunId = syncRun.Id, ExternalEventResults = results }, CancellationToken.None); + var results = new List { new(item.Id, "some-random-error-code") }; + await handler.Handle(new FinalizeExternalEventSync.Command { SyncRunId = syncRun.Id, ExternalEventResults = results }, CancellationToken.None); // Assert _assertionContext.SyncErrors @@ -236,7 +237,7 @@ public async Task Sync_run_can_only_be_finalized_by_creator_device() var handler = CreateHandler(_activeIdentity, _activeDevice); // Act - Func acting = async () => await handler.Handle(new FinalizeExternalEventSyncSyncRunCommand { SyncRunId = syncRun.Id }, CancellationToken.None); + Func acting = async () => await handler.Handle(new FinalizeExternalEventSync.Command { SyncRunId = syncRun.Id }, CancellationToken.None); // Assert await acting.ShouldThrowAsync().ShouldHaveErrorCode("error.platform.validation.syncRun.cannotFinalizeSyncRunStartedByAnotherDevice"); diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/RefreshExpirationTimeOfSyncRun/HandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/RefreshExpirationTimeOfSyncRun/HandlerTests.cs index 0a0c9a2737..09f239738c 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/RefreshExpirationTimeOfSyncRun/HandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/RefreshExpirationTimeOfSyncRun/HandlerTests.cs @@ -1,3 +1,4 @@ +using RefreshExpirationTimeOfSyncRunSlice = Backbone.Modules.Synchronization.Module.Features.SyncRuns.RefreshExpirationTimeOfSyncRun; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; @@ -24,7 +25,7 @@ public async Task Cannot_refresh_expiration_time_of_sync_run_created_by_other_de // Act - var acting = async () => await handler.Handle(new RefreshExpirationTimeOfSyncRunCommand { SyncRunId = syncRun.Id }, CancellationToken.None); + var acting = async () => await handler.Handle(new RefreshExpirationTimeOfSyncRunSlice.Command { SyncRunId = syncRun.Id }, CancellationToken.None); // Assert @@ -44,7 +45,7 @@ public async Task Cannot_refresh_expiration_time_of_sync_run_created_by_other_id // Act - var acting = async () => await handler.Handle(new RefreshExpirationTimeOfSyncRunCommand { SyncRunId = syncRun.Id }, CancellationToken.None); + var acting = async () => await handler.Handle(new RefreshExpirationTimeOfSyncRunSlice.Command { SyncRunId = syncRun.Id }, CancellationToken.None); // Assert @@ -67,7 +68,7 @@ public async Task Refresh_expiration_time() // Act - var response = await handler.Handle(new RefreshExpirationTimeOfSyncRunCommand { SyncRunId = syncRun.Id }, CancellationToken.None); + var response = await handler.Handle(new RefreshExpirationTimeOfSyncRunSlice.Command { SyncRunId = syncRun.Id }, CancellationToken.None); // Assert @@ -90,7 +91,7 @@ public async Task Refresh_expiration_time_of_expired_sync_run() // Act - var response = await handler.Handle(new RefreshExpirationTimeOfSyncRunCommand { SyncRunId = syncRun.Id }, CancellationToken.None); + var response = await handler.Handle(new RefreshExpirationTimeOfSyncRunSlice.Command { SyncRunId = syncRun.Id }, CancellationToken.None); // Assert diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/StartSyncRun/HandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/StartSyncRun/HandlerTests.cs index 063809cedd..eee3828b7f 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/StartSyncRun/HandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/StartSyncRun/HandlerTests.cs @@ -1,3 +1,4 @@ +using StartSyncRunSlice = Backbone.Modules.Synchronization.Module.Features.SyncRuns.StartSyncRun; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; @@ -54,7 +55,7 @@ public async Task Start_a_sync_run() // Act - var response = await handler.Handle(new StartSyncRunCommand { Type = SyncRunDTO.SyncRunType.ExternalEventSync, SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); + var response = await handler.Handle(new StartSyncRunSlice.Command { Type = SyncRunDTO.SyncRunType.ExternalEventSync, SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); // Assert @@ -76,10 +77,10 @@ public async Task Starting_two_sync_runs_parallelly_leads_to_error_for_one_call( // Act - var taskWithImmediateSave = handlerWithImmediateSave.Handle(new StartSyncRunCommand { Type = SyncRunDTO.SyncRunType.ExternalEventSync, SupportedDatawalletVersion = DATAWALLET_VERSION }, + var taskWithImmediateSave = handlerWithImmediateSave.Handle(new StartSyncRunSlice.Command { Type = SyncRunDTO.SyncRunType.ExternalEventSync, SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); - var taskWithDelayedSave = handlerWithDelayedSave.Handle(new StartSyncRunCommand { Type = SyncRunDTO.SyncRunType.ExternalEventSync, SupportedDatawalletVersion = DATAWALLET_VERSION }, + var taskWithDelayedSave = handlerWithDelayedSave.Handle(new StartSyncRunSlice.Command { Type = SyncRunDTO.SyncRunType.ExternalEventSync, SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); var handleWithDelayedSave = () => taskWithDelayedSave; @@ -107,7 +108,7 @@ public async Task Cannot_start_sync_run_when_another_one_is_running() // Act var acting = async () => - await handler.Handle(new StartSyncRunCommand { Type = SyncRunDTO.SyncRunType.ExternalEventSync, SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); + await handler.Handle(new StartSyncRunSlice.Command { Type = SyncRunDTO.SyncRunType.ExternalEventSync, SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); // Assert @@ -128,7 +129,7 @@ public async Task No_sync_items_with_max_error_count_are_added() // Act - var response = await handler.Handle(new StartSyncRunCommand { Type = SyncRunDTO.SyncRunType.ExternalEventSync, SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); + var response = await handler.Handle(new StartSyncRunSlice.Command { Type = SyncRunDTO.SyncRunType.ExternalEventSync, SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); // Assert @@ -145,7 +146,7 @@ public async Task No_sync_run_is_started_when_no_new_sync_items_exist() // Act - var response = await handler.Handle(new StartSyncRunCommand { Type = SyncRunDTO.SyncRunType.ExternalEventSync, SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); + var response = await handler.Handle(new StartSyncRunSlice.Command { Type = SyncRunDTO.SyncRunType.ExternalEventSync, SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); // Assert @@ -167,7 +168,7 @@ public async Task Only_sync_items_of_active_identity_are_added() // Act - var response = await handler.Handle(new StartSyncRunCommand { Type = SyncRunDTO.SyncRunType.ExternalEventSync, SupportedDatawalletVersion = 1 }, CancellationToken.None); + var response = await handler.Handle(new StartSyncRunSlice.Command { Type = SyncRunDTO.SyncRunType.ExternalEventSync, SupportedDatawalletVersion = 1 }, CancellationToken.None); // Assert @@ -187,7 +188,7 @@ public async Task Only_unsynced_sync_items_are_added() // Act - var response = await handler.Handle(new StartSyncRunCommand { Type = SyncRunDTO.SyncRunType.ExternalEventSync, SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); + var response = await handler.Handle(new StartSyncRunSlice.Command { Type = SyncRunDTO.SyncRunType.ExternalEventSync, SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); // Assert @@ -218,7 +219,7 @@ public async Task Start_a_sync_run_when_already_running_sync_run_is_expired() // Act - var response = await handler.Handle(new StartSyncRunCommand { Type = SyncRunDTO.SyncRunType.ExternalEventSync, SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); + var response = await handler.Handle(new StartSyncRunSlice.Command { Type = SyncRunDTO.SyncRunType.ExternalEventSync, SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); // Assert diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/StartSyncRun/StartSyncRunCommandValidatorTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/StartSyncRun/StartSyncRunCommandValidatorTests.cs index 1dd44c0f69..968bf6b2cb 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/StartSyncRun/StartSyncRunCommandValidatorTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/StartSyncRun/StartSyncRunCommandValidatorTests.cs @@ -1,3 +1,4 @@ +using StartSyncRunSlice = Backbone.Modules.Synchronization.Module.Features.SyncRuns.StartSyncRun; using Backbone.Modules.Synchronization.Module.Features.SyncRuns.StartSyncRun; using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; using FluentValidation.TestHelper; @@ -13,7 +14,7 @@ public void Happy_path() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new StartSyncRunCommand { Type = SyncRunDTO.SyncRunType.DatawalletVersionUpgrade, SupportedDatawalletVersion = 1 }); + var validationResult = validator.TestValidate(new StartSyncRunSlice.Command { Type = SyncRunDTO.SyncRunType.DatawalletVersionUpgrade, SupportedDatawalletVersion = 1 }); // Assert validationResult.ShouldNotHaveAnyValidationErrors(); @@ -26,7 +27,7 @@ public void Fails_when_not_passing_a_SupportedDatawalletVersion() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new StartSyncRunCommand { Type = SyncRunDTO.SyncRunType.DatawalletVersionUpgrade, SupportedDatawalletVersion = 0 }); + var validationResult = validator.TestValidate(new StartSyncRunSlice.Command { Type = SyncRunDTO.SyncRunType.DatawalletVersionUpgrade, SupportedDatawalletVersion = 0 }); // Assert validationResult.ShouldHaveValidationErrorFor(x => x.SupportedDatawalletVersion); diff --git a/Modules/Tags/src/Tags.Module/ApplicationServiceCollectionExtensions.cs b/Modules/Tags/src/Tags.Module/ApplicationServiceCollectionExtensions.cs index 763dd9b5ac..70dfc84631 100644 --- a/Modules/Tags/src/Tags.Module/ApplicationServiceCollectionExtensions.cs +++ b/Modules/Tags/src/Tags.Module/ApplicationServiceCollectionExtensions.cs @@ -1,4 +1,4 @@ -using Backbone.Modules.Tags.Module.Features.Tags.ListTags; +using ListTags = Backbone.Modules.Tags.Module.Features.Tags.ListTags; using Microsoft.Extensions.DependencyInjection; namespace Backbone.Modules.Tags.Module; @@ -8,7 +8,7 @@ internal static class ApplicationServiceCollectionExtensions public static void AddApplication(this IServiceCollection services) { services.AddMediatR(c => c - .RegisterServicesFromAssemblyContaining() + .RegisterServicesFromAssemblyContaining() ); } } diff --git a/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Endpoint.cs b/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Endpoint.cs index 54d5dd4c94..f4a7676183 100644 --- a/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Endpoint.cs +++ b/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Endpoint.cs @@ -13,14 +13,14 @@ public static RouteGroupBuilder MapListTagsEndpoint(this RouteGroupBuilder group { group.MapGet("", Handle) .AllowAnonymous() - .Produces>(StatusCodes.Status200OK); + .Produces>(StatusCodes.Status200OK); return group; } private static async Task Handle(IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new ListTagsQuery(), cancellationToken); + var response = await mediator.Send(new Query(), cancellationToken); return EnvelopeHttpResults.Ok(response).WithHttpCaching(); } } diff --git a/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Handler.cs b/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Handler.cs index 8f5b8a8789..7f35de3aa7 100644 --- a/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Handler.cs +++ b/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Handler.cs @@ -3,7 +3,7 @@ namespace Backbone.Modules.Tags.Module.Features.Tags.ListTags; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly ITagsRepository _tagsRepository; @@ -12,9 +12,9 @@ public Handler(ITagsRepository tagsRepository) _tagsRepository = tagsRepository; } - public Task Handle(ListTagsQuery request, CancellationToken cancellationToken) + public Task Handle(Query request, CancellationToken cancellationToken) { - var response = new ListTagsResponse + var response = new Response { SupportedLanguages = _tagsRepository.ListSupportedLanguages(), TagsForAttributeValueTypes = _tagsRepository.ListAttributes() diff --git a/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Query.cs b/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Query.cs index 2255221a5e..5c9c8bfdf4 100644 --- a/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Query.cs +++ b/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Query.cs @@ -2,4 +2,5 @@ namespace Backbone.Modules.Tags.Module.Features.Tags.ListTags; -public class ListTagsQuery : IRequest; +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListTagsQuery")] +public class Query : IRequest; diff --git a/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Response.cs b/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Response.cs index 0c6ec8d08d..4bcc501edd 100644 --- a/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Response.cs +++ b/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Response.cs @@ -3,7 +3,8 @@ namespace Backbone.Modules.Tags.Module.Features.Tags.ListTags; -public class ListTagsResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListTagsResponse")] +public class Response { public required IEnumerable SupportedLanguages { get; set; } diff --git a/Modules/Tokens/src/Tokens.Module/ApplicationServiceCollectionExtensions.cs b/Modules/Tokens/src/Tokens.Module/ApplicationServiceCollectionExtensions.cs index bbd30d923b..502f8652ed 100644 --- a/Modules/Tokens/src/Tokens.Module/ApplicationServiceCollectionExtensions.cs +++ b/Modules/Tokens/src/Tokens.Module/ApplicationServiceCollectionExtensions.cs @@ -1,3 +1,4 @@ +using CreateToken = Backbone.Modules.Tokens.Module.Features.Tokens.CreateToken; using Backbone.BuildingBlocks.Application.MediatR; using Backbone.Modules.Tokens.Module.Features.Tokens.CreateToken; using FluentValidation; @@ -10,7 +11,7 @@ internal static class ApplicationServiceCollectionExtensions public static void AddApplication(this IServiceCollection services) { services.AddMediatR(c => c - .RegisterServicesFromAssemblyContaining() + .RegisterServicesFromAssemblyContaining() .AddOpenBehavior(typeof(LoggingBehavior<,>)) .AddOpenBehavior(typeof(RequestValidationBehavior<,>)) .AddOpenBehavior(typeof(QuotaEnforcerBehavior<,>)) diff --git a/Modules/Tokens/src/Tokens.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs b/Modules/Tokens/src/Tokens.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs index 62e3f4bd90..6b0722b5d7 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs @@ -1,8 +1,8 @@ -using Backbone.BuildingBlocks.Application.Identities; +using AnonymizeTokenAllocationsOfIdentity = Backbone.Modules.Tokens.Module.Features.Tokens.AnonymizeTokenAllocationsOfIdentity; +using AnonymizeTokensForIdentity = Backbone.Modules.Tokens.Module.Features.Tokens.AnonymizeTokensForIdentity; +using DeleteTokensOfIdentity = Backbone.Modules.Tokens.Module.Features.Tokens.DeleteTokensOfIdentity; +using Backbone.BuildingBlocks.Application.Identities; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Tokens.Module.Features.Tokens.AnonymizeTokenAllocationsOfIdentity; -using Backbone.Modules.Tokens.Module.Features.Tokens.AnonymizeTokensForIdentity; -using Backbone.Modules.Tokens.Module.Features.Tokens.DeleteTokensOfIdentity; using MediatR; namespace Backbone.Modules.Tokens.Module.Features.Identities.DeleteIdentity; @@ -20,9 +20,9 @@ public IdentityDeleter(IMediator mediator, IDeletionProcessLogger deletionProces public async Task Delete(IdentityAddress identityAddress) { - await _mediator.Send(new DeleteTokensOfIdentityCommand { IdentityAddress = identityAddress }); - await _mediator.Send(new AnonymizeTokensForIdentityCommand { IdentityAddress = identityAddress }); - await _mediator.Send(new AnonymizeTokenAllocationsOfIdentityCommand { IdentityAddress = identityAddress }); + await _mediator.Send(new DeleteTokensOfIdentity.Command { IdentityAddress = identityAddress }); + await _mediator.Send(new AnonymizeTokensForIdentity.Command { IdentityAddress = identityAddress }); + await _mediator.Send(new AnonymizeTokenAllocationsOfIdentity.Command { IdentityAddress = identityAddress }); await _deletionProcessLogger.LogDeletion(identityAddress, "Tokens"); } } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokenAllocationsOfIdentity/Command.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokenAllocationsOfIdentity/Command.cs index f89fef3dde..3a105ac53c 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokenAllocationsOfIdentity/Command.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokenAllocationsOfIdentity/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.AnonymizeTokenAllocationsOfIdentity; -public class AnonymizeTokenAllocationsOfIdentityCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("AnonymizeTokenAllocationsOfIdentityCommand")] +public class Command : IRequest { public required string IdentityAddress { get; init; } } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokenAllocationsOfIdentity/Handler.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokenAllocationsOfIdentity/Handler.cs index 26fc91d0ba..7f5bb15007 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokenAllocationsOfIdentity/Handler.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokenAllocationsOfIdentity/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.AnonymizeTokenAllocationsOfIdentity; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly ITokensRepository _tokensRepository; private readonly ApplicationConfiguration _applicationConfiguration; @@ -17,7 +17,7 @@ public Handler(ITokensRepository tokensRepository, IOptions +public class Validator : AbstractValidator { public Validator() { RuleFor(q => q.IdentityAddress) - .ValidId(); + .ValidId(); } } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokensForIdentity/Command.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokensForIdentity/Command.cs index f2102c8e51..92b7a0a6c0 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokensForIdentity/Command.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokensForIdentity/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.AnonymizeTokensForIdentity; -public class AnonymizeTokensForIdentityCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("AnonymizeTokensForIdentityCommand")] +public class Command : IRequest { public required string IdentityAddress { get; init; } } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokensForIdentity/Handler.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokensForIdentity/Handler.cs index 6c0718a35d..2565a68ef8 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokensForIdentity/Handler.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokensForIdentity/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.AnonymizeTokensForIdentity; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly ITokensRepository _tokensRepository; private readonly ApplicationConfiguration _applicationConfiguration; @@ -17,7 +17,7 @@ public Handler(ITokensRepository tokensRepository, IOptions +public class Validator : AbstractValidator { public Validator() { RuleFor(c => c.IdentityAddress) - .ValidId(); + .ValidId(); } } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Command.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Command.cs index 72994e3add..809dcaf846 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Command.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Command.cs @@ -3,8 +3,9 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.CreateToken; +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateTokenCommand")] [ApplyQuotasForMetrics("NumberOfTokens")] -public class CreateTokenCommand : IRequest +public class Command : IRequest { public byte[]? Content { get; init; } public required DateTime ExpiresAt { get; init; } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Endpoint.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Endpoint.cs index b10030c3e4..c106ce73b5 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Endpoint.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Endpoint.cs @@ -14,11 +14,11 @@ public static RouteGroupBuilder MapCreateTokenEndpoint(this RouteGroupBuilder gr { group.MapPost("", Handle) .AllowAnonymous() - .Produces>(StatusCodes.Status201Created); + .Produces>(StatusCodes.Status201Created); return group; } - private static async Task Handle([FromBody] CreateTokenCommand request, HttpContext context, IMediator mediator, CancellationToken cancellationToken) + private static async Task Handle([FromBody] Command request, HttpContext context, IMediator mediator, CancellationToken cancellationToken) { var response = await mediator.Send(request, cancellationToken); return EnvelopeHttpResults.CreatedAtRoute(GetToken.Endpoint.ROUTE_NAME, new { v = context.Request.RouteValues["v"], id = response.Id }, response); diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Handler.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Handler.cs index 4484f6ae3d..da01124b57 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Handler.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.CreateToken; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly ITokensRepository _tokensRepository; private readonly IUserContext _userContext; @@ -17,13 +17,13 @@ public Handler(IUserContext userContext, ITokensRepository tokensRepository) _tokensRepository = tokensRepository; } - public async Task Handle(CreateTokenCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var forIdentity = request.ForIdentity == null ? null : IdentityAddress.Parse(request.ForIdentity); var newToken = new Token(_userContext.GetAddressOrNull(), _userContext.GetDeviceIdOrNull(), request.Content, request.ExpiresAt, forIdentity, request.Password); await _tokensRepository.Add(newToken); - return new CreateTokenResponse(newToken); + return new Response(newToken); } } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Response.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Response.cs index 708be2ee78..7365a09967 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Response.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Response.cs @@ -2,9 +2,10 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.CreateToken; -public class CreateTokenResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateTokenResponse")] +public class Response { - public CreateTokenResponse(Token token) + public Response(Token token) { Id = token.Id; CreatedAt = token.CreatedAt; diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Validator.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Validator.cs index a56a79bdf0..2a887b08b7 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Validator.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Validator.cs @@ -9,12 +9,12 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.CreateToken; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator(IUserContext userContext) { RuleFor(t => t.ForIdentity) - .ValidId() + .ValidId() .When(t => t.ForIdentity != null); RuleFor(c => c.Password).NumberOfBytes(1, Token.MAX_PASSWORD_LENGTH).When(c => c.Password != null); diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Command.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Command.cs index 28a836abb3..50760885c2 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Command.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.DeleteToken; -public class DeleteTokenCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteTokenCommand")] +public class Command : IRequest { public required string Id { get; init; } } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Endpoint.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Endpoint.cs index 26eeba9772..e8abcd85bf 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Endpoint.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Endpoint.cs @@ -21,7 +21,7 @@ public static RouteGroupBuilder MapDeleteTokenEndpoint(this RouteGroupBuilder gr private static async Task Handle([FromRoute] string id, IMediator mediator, CancellationToken cancellationToken) { - await mediator.Send(new DeleteTokenCommand { Id = id }, cancellationToken); + await mediator.Send(new Command { Id = id }, cancellationToken); return Results.NoContent(); } } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Handler.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Handler.cs index ceec4a9bb5..ec84c8db41 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Handler.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.DeleteToken; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly ITokensRepository _tokensRepository; private readonly IUserContext _userContext; @@ -17,7 +17,7 @@ public Handler(IUserContext userContext, ITokensRepository tokensRepository) _tokensRepository = tokensRepository; } - public async Task Handle(DeleteTokenCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var token = await _tokensRepository.GetWithoutContent(TokenId.Parse(request.Id), cancellationToken) ?? throw new NotFoundException(nameof(Token)); diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Validator.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Validator.cs index d8415dba96..61add9c77a 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Validator.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.DeleteToken; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(command => command.Id).ValidId(); + RuleFor(command => command.Id).ValidId(); } } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteTokensOfIdentity/Command.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteTokensOfIdentity/Command.cs index 003d2486ff..4b6d4467ca 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteTokensOfIdentity/Command.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteTokensOfIdentity/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.DeleteTokensOfIdentity; -public class DeleteTokensOfIdentityCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteTokensOfIdentityCommand")] +public class Command : IRequest { public required string IdentityAddress { get; init; } } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteTokensOfIdentity/Handler.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteTokensOfIdentity/Handler.cs index 0ec4212963..25a1726ad1 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteTokensOfIdentity/Handler.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteTokensOfIdentity/Handler.cs @@ -4,7 +4,7 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.DeleteTokensOfIdentity; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly ITokensRepository _tokensRepository; @@ -13,7 +13,7 @@ public Handler(ITokensRepository tokensRepository) _tokensRepository = tokensRepository; } - public async Task Handle(DeleteTokensOfIdentityCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { await _tokensRepository.Delete(Token.WasCreatedBy(request.IdentityAddress), cancellationToken); } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteTokensOfIdentity/Validator.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteTokensOfIdentity/Validator.cs index 340b740a8a..d4119bd8d7 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteTokensOfIdentity/Validator.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteTokensOfIdentity/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.DeleteTokensOfIdentity; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.IdentityAddress).ValidId(); + RuleFor(x => x.IdentityAddress).ValidId(); } } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ExecuteHousekeeping/Command.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ExecuteHousekeeping/Command.cs index 70cda09dbd..0daffc9942 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ExecuteHousekeeping/Command.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ExecuteHousekeeping/Command.cs @@ -2,4 +2,5 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.ExecuteHousekeeping; -public class ExecuteHousekeepingCommand : IRequest; +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ExecuteHousekeepingCommand")] +public class Command : IRequest; diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ExecuteHousekeeping/Handler.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ExecuteHousekeeping/Handler.cs index 79f4bad56c..a14e12df17 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ExecuteHousekeeping/Handler.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ExecuteHousekeeping/Handler.cs @@ -5,7 +5,7 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.ExecuteHousekeeping; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly ITokensRepository _tokensRepository; @@ -14,7 +14,7 @@ public Handler(ITokensRepository tokensRepository) _tokensRepository = tokensRepository; } - public async Task Handle(ExecuteHousekeepingCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { await DeleteTokens(cancellationToken); } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Endpoint.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Endpoint.cs index b4713e549c..b65adf49f2 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Endpoint.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Endpoint.cs @@ -26,7 +26,7 @@ public static RouteGroupBuilder MapGetTokenEndpoint(this RouteGroupBuilder group private static async Task Handle([FromRoute] string id, [FromQuery] Base64QueryValue? password, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new GetTokenQuery { Id = id, Password = password?.Value }, cancellationToken); + var response = await mediator.Send(new Query { Id = id, Password = password?.Value }, cancellationToken); return EnvelopeHttpResults.Ok(response); } } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Handler.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Handler.cs index 2213d3d420..2c30179a6b 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Handler.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Handler.cs @@ -8,7 +8,7 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.GetToken; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly ITokensRepository _tokensRepository; private readonly IUserContext _userContext; @@ -19,7 +19,7 @@ public Handler(ITokensRepository tokensRepository, IUserContext userContext) _userContext = userContext; } - public async Task Handle(GetTokenQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var token = await GetToken(request.Id, request.Password, cancellationToken); return new TokenDTO(token); diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Query.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Query.cs index 2889097d69..ba4d76ea9c 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Query.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Query.cs @@ -3,7 +3,8 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.GetToken; -public class GetTokenQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetTokenQuery")] +public class Query : IRequest { public required string Id { get; init; } public byte[]? Password { get; init; } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Validator.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Validator.cs index 72cf981c56..d7c9335549 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Validator.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Validator.cs @@ -5,11 +5,11 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.GetToken; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.Id).ValidId(); + RuleFor(x => x.Id).ValidId(); RuleFor(x => x.Password).NumberOfBytes(1, Token.MAX_PASSWORD_LENGTH).When(t => t.Password != null); } } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Endpoint.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Endpoint.cs index f5118dbeda..9ff328f3e9 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Endpoint.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Endpoint.cs @@ -30,7 +30,7 @@ private static async Task Handle([FromQuery(Name = "PageNumber")] int? if (paginationFilter.PageSize > options.Value.Pagination.MaxPageSize) throw new ApplicationException(GenericApplicationErrors.Validation.InvalidPageSize(options.Value.Pagination.MaxPageSize)); - var response = await mediator.Send(new ListTokensQuery { PaginationFilter = paginationFilter, Ids = ids?.ToList() ?? [] }, cancellationToken); + var response = await mediator.Send(new Query { PaginationFilter = paginationFilter, Ids = ids?.ToList() ?? [] }, cancellationToken); return EnvelopeHttpResults.Paged(response); } } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Handler.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Handler.cs index 10622d68c7..eb823c3cfa 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Handler.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Handler.cs @@ -6,7 +6,7 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.ListTokens; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly IdentityAddress _activeIdentity; private readonly ITokensRepository _tokensRepository; @@ -17,10 +17,10 @@ public Handler(ITokensRepository tokensRepository, IUserContext userContext) _activeIdentity = userContext.GetAddress(); } - public async Task Handle(ListTokensQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var dbPaginationResult = await _tokensRepository.ListTokensAllocatedOrCreatedByWithContent(request.Ids, _activeIdentity, request.PaginationFilter, cancellationToken, track: false); - return new ListTokensResponse(dbPaginationResult, request.PaginationFilter); + return new Response(dbPaginationResult, request.PaginationFilter); } } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Query.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Query.cs index e698400f8f..14dec41113 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Query.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Query.cs @@ -4,7 +4,8 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.ListTokens; -public class ListTokensQuery : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListTokensQuery")] +public class Query : IRequest { public required PaginationFilter PaginationFilter { get; init; } public List Ids { get; set; } = []; diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Validator.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Validator.cs index 6348f6a2d0..dcd8e4d5f5 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Validator.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Validator.cs @@ -8,7 +8,7 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.ListTokens; // ReSharper disable once UnusedMember.Global -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { @@ -20,7 +20,7 @@ public Validator() RuleForEach(q => q.Ids) .Cascade(CascadeMode.Stop) - .ValidId(); + .ValidId(); } } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokensByIdentity/Handler.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokensByIdentity/Handler.cs index 4b0718ee7f..a429c576e7 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokensByIdentity/Handler.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokensByIdentity/Handler.cs @@ -5,12 +5,12 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.ListTokensByIdentity; -public class Handler(ITokensRepository tokensRepository) : IRequestHandler +public class Handler(ITokensRepository tokensRepository) : IRequestHandler { - public async Task Handle(ListTokensByIdentityQuery request, CancellationToken cancellationToken) + public async Task Handle(Query request, CancellationToken cancellationToken) { var dbPaginationResult = await tokensRepository.ListWithoutContent(request.PaginationFilter, Token.WasCreatedBy(request.CreatedBy), cancellationToken); - var pagedResult = new ListTokensResponse(dbPaginationResult, request.PaginationFilter); + var pagedResult = new Response(dbPaginationResult, request.PaginationFilter); return pagedResult; } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokensByIdentity/Query.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokensByIdentity/Query.cs index 29ce8e9aa4..6b1eb86a2d 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokensByIdentity/Query.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokensByIdentity/Query.cs @@ -4,4 +4,5 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.ListTokensByIdentity; -public record ListTokensByIdentityQuery(string CreatedBy, PaginationFilter PaginationFilter) : IRequest; +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListTokensByIdentityQuery")] +public record Query(string CreatedBy, PaginationFilter PaginationFilter) : IRequest; diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokensByIdentity/Validator.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokensByIdentity/Validator.cs index b5f5344835..1b46faff78 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokensByIdentity/Validator.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokensByIdentity/Validator.cs @@ -5,7 +5,7 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.ListTokensByIdentity; // ReSharper disable once UnusedMember.Global -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ResetAccessFailedCountOfToken/Command.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ResetAccessFailedCountOfToken/Command.cs index 56af908575..48e05b90f7 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ResetAccessFailedCountOfToken/Command.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ResetAccessFailedCountOfToken/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.ResetAccessFailedCountOfToken; -public class ResetAccessFailedCountOfTokenCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ResetAccessFailedCountOfTokenCommand")] +public class Command : IRequest { public required string TokenId { get; init; } } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ResetAccessFailedCountOfToken/Handler.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ResetAccessFailedCountOfToken/Handler.cs index e3b47a4622..2421a496a4 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ResetAccessFailedCountOfToken/Handler.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ResetAccessFailedCountOfToken/Handler.cs @@ -5,7 +5,7 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.ResetAccessFailedCountOfToken; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly ITokensRepository _tokensRepository; @@ -14,7 +14,7 @@ public Handler(ITokensRepository tokensRepository) _tokensRepository = tokensRepository; } - public async Task Handle(ResetAccessFailedCountOfTokenCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var token = await _tokensRepository.GetWithoutContent(TokenId.Parse(request.TokenId), cancellationToken) ?? throw new NotFoundException(nameof(Token)); token.ResetAccessFailedCount(); diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ResetAccessFailedCountOfToken/Validator.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ResetAccessFailedCountOfToken/Validator.cs index 360bca1422..94011950ca 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ResetAccessFailedCountOfToken/Validator.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ResetAccessFailedCountOfToken/Validator.cs @@ -4,10 +4,10 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.ResetAccessFailedCountOfToken; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.TokenId).ValidId(); + RuleFor(x => x.TokenId).ValidId(); } } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/Shared/ListTokensResponse.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/Shared/Response.cs similarity index 70% rename from Modules/Tokens/src/Tokens.Module/Features/Tokens/Shared/ListTokensResponse.cs rename to Modules/Tokens/src/Tokens.Module/Features/Tokens/Shared/Response.cs index 37c99aea0d..012ea076cc 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/Shared/ListTokensResponse.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/Shared/Response.cs @@ -5,5 +5,6 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.Shared; -public class ListTokensResponse(DbPaginationResult dbPaginationResult, PaginationFilter previousPaginationFilter) +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListTokensResponse")] +public class Response(DbPaginationResult dbPaginationResult, PaginationFilter previousPaginationFilter) : PagedResponse(dbPaginationResult.ItemsOnPage.Select(t => new TokenDTO(t)), previousPaginationFilter, dbPaginationResult.TotalNumberOfItems); diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Command.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Command.cs index 91a9d75f34..cf023bc86b 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Command.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Command.cs @@ -2,7 +2,8 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.UpdateTokenContent; -public class UpdateTokenContentCommand : IRequest +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("UpdateTokenContentCommand")] +public class Command : IRequest { public required string TokenId { get; init; } public required byte[] NewContent { get; init; } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Endpoint.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Endpoint.cs index 7e54b7f484..2f18697526 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Endpoint.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Endpoint.cs @@ -13,7 +13,7 @@ internal static class Endpoint public static RouteGroupBuilder MapUpdateTokenContentEndpoint(this RouteGroupBuilder group) { group.MapPost("{id}/UpdateContent", Handle) - .Produces>(StatusCodes.Status200OK) + .Produces>(StatusCodes.Status200OK) .Produces(StatusCodes.Status400BadRequest) .Produces(StatusCodes.Status404NotFound); return group; @@ -21,7 +21,7 @@ public static RouteGroupBuilder MapUpdateTokenContentEndpoint(this RouteGroupBui private static async Task Handle([FromRoute] string id, [FromBody] RequestBody body, IMediator mediator, CancellationToken cancellationToken) { - var response = await mediator.Send(new UpdateTokenContentCommand { TokenId = id, NewContent = body.NewContent, Password = body.Password }, cancellationToken); + var response = await mediator.Send(new Command { TokenId = id, NewContent = body.NewContent, Password = body.Password }, cancellationToken); return EnvelopeHttpResults.Ok(response); } } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Handler.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Handler.cs index e42d36df9f..c01b7baf2a 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Handler.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Handler.cs @@ -7,7 +7,7 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.UpdateTokenContent; -public class Handler : IRequestHandler +public class Handler : IRequestHandler { private readonly ITokensRepository _tokensRepository; private readonly IUserContext _userContext; @@ -18,7 +18,7 @@ public Handler(ITokensRepository tokensRepository, IUserContext userContext) _userContext = userContext; } - public async Task Handle(UpdateTokenContentCommand request, CancellationToken cancellationToken) + public async Task Handle(Command request, CancellationToken cancellationToken) { var token = await _tokensRepository.GetWithContent(TokenId.Parse(request.TokenId), cancellationToken, track: true) ?? throw new NotFoundException(nameof(Token)); @@ -39,7 +39,7 @@ public async Task Handle(UpdateTokenContentCommand r case UpdateTokenContentResult.ContentUpdated: await _tokensRepository.Update(token, cancellationToken); - return new UpdateTokenContentResponse(token); + return new Response(token); case UpdateTokenContentResult.ContentAlreadyExists: throw new ApplicationException(ApplicationErrors.ContentUpdateNotPossibleBecauseContentIsNotNull()); diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Response.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Response.cs index ab2c973318..4b12ffe5e3 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Response.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Response.cs @@ -2,9 +2,10 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.UpdateTokenContent; -public class UpdateTokenContentResponse +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("UpdateTokenContentResponse")] +public class Response { - public UpdateTokenContentResponse(Token token) + public Response(Token token) { Id = token.Id; CreatedBy = token.CreatedBy?.Value; diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Validator.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Validator.cs index 0a6fbb224d..30c23d98d9 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Validator.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Validator.cs @@ -5,11 +5,11 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.UpdateTokenContent; -public class Validator : AbstractValidator +public class Validator : AbstractValidator { public Validator() { - RuleFor(x => x.TokenId).ValidId(); + RuleFor(x => x.TokenId).ValidId(); RuleFor(x => x.NewContent).NumberOfBytes(1, Token.MAX_CONTENT_LENGTH); diff --git a/Modules/Tokens/test/Tokens.Module.Tests/Tests/Identities/IdentityDeleterTests.cs b/Modules/Tokens/test/Tokens.Module.Tests/Tests/Identities/IdentityDeleterTests.cs index f0e550e5b2..e2dc7ef609 100644 --- a/Modules/Tokens/test/Tokens.Module.Tests/Tests/Identities/IdentityDeleterTests.cs +++ b/Modules/Tokens/test/Tokens.Module.Tests/Tests/Identities/IdentityDeleterTests.cs @@ -1,6 +1,6 @@ -using Backbone.BuildingBlocks.Application.Identities; +using DeleteTokensOfIdentity = Backbone.Modules.Tokens.Module.Features.Tokens.DeleteTokensOfIdentity; +using Backbone.BuildingBlocks.Application.Identities; using Backbone.Modules.Tokens.Module.Features.Identities.DeleteIdentity; -using Backbone.Modules.Tokens.Module.Features.Tokens.DeleteTokensOfIdentity; using FakeItEasy; using MediatR; @@ -21,7 +21,7 @@ public async Task Deleter_calls_correct_command() await deleter.Delete(identityAddress); // Assert - A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); + A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); } [Fact] diff --git a/Modules/Tokens/test/Tokens.Module.Tests/Tests/Tokens/CreateToken/ValidatorTests.cs b/Modules/Tokens/test/Tokens.Module.Tests/Tests/Tokens/CreateToken/ValidatorTests.cs index dbcb04fa7c..b6f3e9a2b8 100644 --- a/Modules/Tokens/test/Tokens.Module.Tests/Tests/Tokens/CreateToken/ValidatorTests.cs +++ b/Modules/Tokens/test/Tokens.Module.Tests/Tests/Tokens/CreateToken/ValidatorTests.cs @@ -1,4 +1,5 @@ -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; +using CreateTokenSlice = Backbone.Modules.Tokens.Module.Features.Tokens.CreateToken; +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.Modules.Tokens.Module.Features.Tokens.CreateToken; using Backbone.Modules.Tokens.Domain.Entities; using Backbone.UnitTestTools.FluentValidation; @@ -18,7 +19,7 @@ public void Happy_path_for_authenticated_user_with_optional_parameters() // Act var validationResult = validator.TestValidate( - new CreateTokenCommand + new CreateTokenSlice.Command { Content = [1], ExpiresAt = DateTime.UtcNow.AddDays(1), @@ -38,7 +39,7 @@ public void Happy_path_for_authenticated_user_without_optional_parameters() // Act var validationResult = validator.TestValidate( - new CreateTokenCommand { Content = [0], ExpiresAt = DateTime.UtcNow.AddDays(1) }); + new CreateTokenSlice.Command { Content = [0], ExpiresAt = DateTime.UtcNow.AddDays(1) }); // Assert validationResult.ShouldNotHaveAnyValidationErrors(); @@ -52,7 +53,7 @@ public void Happy_path_for_unauthenticated_user_without_optional_parameters() // Act var validationResult = validator.TestValidate( - new CreateTokenCommand { ExpiresAt = DateTime.UtcNow.AddMinutes(1) }); + new CreateTokenSlice.Command { ExpiresAt = DateTime.UtcNow.AddMinutes(1) }); // Assert validationResult.ShouldNotHaveAnyValidationErrors(); @@ -66,7 +67,7 @@ public void Happy_path_for_unauthenticated_user_with_optional_parameters() // Act var validationResult = validator.TestValidate( - new CreateTokenCommand + new CreateTokenSlice.Command { ExpiresAt = DateTime.UtcNow.AddMinutes(1), ForIdentity = "did:e:prod.enmeshed.eu:dids:70cf4f3e6edf6bca33d35f", @@ -87,7 +88,7 @@ public void Allows_creation_of_empty_content_by_authenticated_user(byte[]? conte // Act var validationResult = validator.TestValidate( - new CreateTokenCommand { Content = content, ExpiresAt = DateTime.UtcNow.AddDays(1), ForIdentity = CreateRandomIdentityAddress() }); + new CreateTokenSlice.Command { Content = content, ExpiresAt = DateTime.UtcNow.AddDays(1), ForIdentity = CreateRandomIdentityAddress() }); // Assert validationResult.ShouldNotHaveAnyValidationErrors(); @@ -101,7 +102,7 @@ public void Fails_for_authenticated_user_when_ExpiresAt_is_in_the_past() // Act var validationResult = validator.TestValidate( - new CreateTokenCommand { Content = [1], ExpiresAt = DateTime.UtcNow.AddDays(-1), ForIdentity = CreateRandomIdentityAddress() }); + new CreateTokenSlice.Command { Content = [1], ExpiresAt = DateTime.UtcNow.AddDays(-1), ForIdentity = CreateRandomIdentityAddress() }); // Assert validationResult.ShouldHaveValidationErrorForItem(nameof(Token.ExpiresAt), "error.platform.validation.invalidPropertyValue", "'Expires At' must be in the future."); @@ -115,7 +116,7 @@ public void Fails_when_ForIdentity_is_invalid() // Act var validationResult = validator.TestValidate( - new CreateTokenCommand { Content = [1], ExpiresAt = DateTime.UtcNow.AddDays(1), ForIdentity = "some-address" }); + new CreateTokenSlice.Command { Content = [1], ExpiresAt = DateTime.UtcNow.AddDays(1), ForIdentity = "some-address" }); // Assert validationResult.ShouldHaveValidationErrorForId(nameof(Token.ForIdentity)); @@ -131,10 +132,10 @@ public void Fails_when_Password_is_too_long() new Random().NextBytes(password); // Act - var validationResult = validator.TestValidate(new CreateTokenCommand { Content = [1], ExpiresAt = DateTime.UtcNow.AddDays(1), Password = password }); + var validationResult = validator.TestValidate(new CreateTokenSlice.Command { Content = [1], ExpiresAt = DateTime.UtcNow.AddDays(1), Password = password }); // Assert - validationResult.ShouldHaveValidationErrorForItem(nameof(CreateTokenCommand.Password), "error.platform.validation.invalidPropertyValue", + validationResult.ShouldHaveValidationErrorForItem(nameof(CreateTokenSlice.Command.Password), "error.platform.validation.invalidPropertyValue", "'Password' must be between 1 and 200 bytes long. You entered 250 bytes."); } @@ -147,10 +148,10 @@ public void Fails_for_unauthenticated_user_when_expiry_time_is_too_long() var validator = CreateValidatorForUnauthenticatedUser(); // Act - var validationResult = validator.TestValidate(new CreateTokenCommand { ExpiresAt = DateTime.UtcNow.AddDays(1) }); + var validationResult = validator.TestValidate(new CreateTokenSlice.Command { ExpiresAt = DateTime.UtcNow.AddDays(1) }); // Assert - validationResult.ShouldHaveValidationErrorForItem(nameof(CreateTokenCommand.ExpiresAt), "error.platform.validation.invalidPropertyValue", "'Expires At' must be less than.*"); + validationResult.ShouldHaveValidationErrorForItem(nameof(CreateTokenSlice.Command.ExpiresAt), "error.platform.validation.invalidPropertyValue", "'Expires At' must be less than.*"); } [Fact] @@ -160,10 +161,10 @@ public void Fails_for_unauthenticated_user_when_content_is_not_null() var validator = CreateValidatorForUnauthenticatedUser(); // Act - var validationResult = validator.TestValidate(new CreateTokenCommand { Content = [1], ExpiresAt = DateTime.UtcNow.AddMinutes(1) }); + var validationResult = validator.TestValidate(new CreateTokenSlice.Command { Content = [1], ExpiresAt = DateTime.UtcNow.AddMinutes(1) }); // Assert - validationResult.ShouldHaveValidationErrorForItem(nameof(CreateTokenCommand.Content), "error.platform.validation.invalidPropertyValue", ""); + validationResult.ShouldHaveValidationErrorForItem(nameof(CreateTokenSlice.Command.Content), "error.platform.validation.invalidPropertyValue", ""); } private static Validator CreateValidatorForAuthenticatedUser() diff --git a/Modules/Tokens/test/Tokens.Module.Tests/Tests/Tokens/DeleteTokensOfIdentity/HandlerTests.cs b/Modules/Tokens/test/Tokens.Module.Tests/Tests/Tokens/DeleteTokensOfIdentity/HandlerTests.cs index d374eb8dfd..8d570214e8 100644 --- a/Modules/Tokens/test/Tokens.Module.Tests/Tests/Tokens/DeleteTokensOfIdentity/HandlerTests.cs +++ b/Modules/Tokens/test/Tokens.Module.Tests/Tests/Tokens/DeleteTokensOfIdentity/HandlerTests.cs @@ -1,4 +1,5 @@ -using System.Linq.Expressions; +using DeleteTokensOfIdentitySlice = Backbone.Modules.Tokens.Module.Features.Tokens.DeleteTokensOfIdentity; +using System.Linq.Expressions; using Backbone.Modules.Tokens.Abstractions; using Backbone.Modules.Tokens.Module.Features.Tokens.DeleteTokensOfIdentity; using Backbone.Modules.Tokens.Domain.Entities; @@ -15,7 +16,7 @@ public async Task Command_calls_delete_on_repository() var mockRelationshipTemplatesRepository = A.Fake(); var handler = new Handler(mockRelationshipTemplatesRepository); - var request = new DeleteTokensOfIdentityCommand { IdentityAddress = CreateRandomIdentityAddress() }; + var request = new DeleteTokensOfIdentitySlice.Command { IdentityAddress = CreateRandomIdentityAddress() }; // Act await handler.Handle(request, CancellationToken.None); From 4075a02916f40f5f2aa883767efae519f5dde068 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20H=C3=BCgel?= Date: Fri, 2 Oct 2026 14:02:32 +0200 Subject: [PATCH 20/25] refactor: make tests match folder and namespace of corresponding source --- .../ActualDeletionWorkerTests.cs | 36 +++++----- .../{ => Controllers}/EventQueueTests.cs | 2 +- Backbone.Tests.ArchUnit/UnitTests.cs | 70 ++++++++++++++++++- .../Mediatr/QuotaEnforcerBehaviorTests.cs | 2 +- .../QuotaCheck/QuotaCheckerImplTests.cs | 4 +- .../MetricStatusesStubRepository.cs | 2 +- ...cs => DomainEventNamingExtensionsTests.cs} | 2 +- .../RabbitMq/EventBusRabbitMqTests.cs | 2 +- .../AzureStorageAccountTests.cs | 2 +- .../GoogleCloudStorageTests.cs | 7 +- .../EllipticCurveSignatureHelperTests.cs | 2 +- .../BouncyCastle}/KeyGeneratorTests.cs | 2 +- .../Symmetric}/AesEncryptionHelperTests.cs | 2 +- .../KeyAgreementHelperTests.cs | 2 +- .../Implementations/SignatureHelperTests.cs | 2 +- .../IdentityAddressTests.cs | 2 +- .../DateTimeExtensionsTests.cs | 2 +- .../Extensions/ExpressionExtensionsTests.cs | 2 +- ...SafeBase64ToByteArrayJsonConverterTests.cs | 2 +- .../{Tests => Entities}/AnnouncementTests.cs | 2 +- .../CreateAnnouncement/ValidatorTests.cs | 2 +- .../HandlerTests.cs | 6 +- .../DeleteIdentity}/IdentityDeleterTests.cs | 6 +- .../ValidatorTests.cs | 2 +- .../GetChallengeById/ValidatorTests.cs | 2 +- .../DeleteIdentity}/IdentityDeleterTests.cs | 6 +- .../Handles}/PnsHandleTests.cs | 2 +- .../PushNotifications/PnsRegistrationTests.cs | 2 +- .../{Tiers => Aggregates/Tier}/TierIdTests.cs | 2 +- .../Tier}/TierNameTests.cs | 2 +- .../{Tiers => Aggregates/Tier}/TierTests.cs | 13 ++-- .../Identities}/AssociateUsernamesTests.cs | 2 +- .../Identities}/CanBeCleanedUpTests.cs | 2 +- .../Identities/CancelDeletionProcessTests.cs | 2 +- .../Identities/ChangeFeatureFlagsTests.cs | 2 +- .../Identities/ChangeTierTests.cs | 2 +- .../Identities}/CommunicationLanguageTests.cs | 2 +- .../DeletionProcessGracePeriodTests.cs} | 2 +- .../Identities/DeletionStartedTests.cs | 2 +- .../Identities}/DeviceTests.cs | 2 +- .../Identities}/IsAssociatedToUserTests.cs | 2 +- .../Identities/IsGracePeriodOverTests.cs | 2 +- .../Identities/StartDeletionProcessTests.cs | 2 +- .../OAuthClientTests.cs | 2 +- .../Apns/ApnsMessageBuilderTests.cs | 2 +- ...lePushNotificationServiceConnectorTests.cs | 2 +- .../Connectors/Apns/JwtGeneratorTests.cs | 2 +- .../Connectors/Fcm/FcmMessageBuilderTests.cs | 2 +- .../Sse/ServerSentEventsConnectorTests.cs | 2 +- .../Connectors/Sse/SseMessageBuilderTests.cs | 2 +- .../PushNotificationTextProviderTests.cs | 2 +- .../PushNotifications/PushServiceTests.cs | 2 +- .../Devices}/DeleteDevice/ValidatorTests.cs | 2 +- .../Devices}/ListDevices/ValidatorTests.cs | 2 +- .../AnnouncementCreated/HandlerTests.cs} | 10 +-- .../HandlerTests.cs | 6 +- .../ExternalEventCreated/HandlerTests.cs} | 12 ++-- .../DomainEvents/TokenLocked/HandlerTests.cs} | 8 +-- .../CancelDeletionProcess/HandlerTests.cs | 2 +- .../CancelDeletionProcess/ValidatorTests.cs | 2 +- .../DeleteIdentity}/IdentityDeleterTests.cs | 10 +-- .../DeleteIdentity/ValidatorTests.cs | 2 +- .../ValidatorTests.cs | 2 +- .../ValidatorTests.cs | 2 +- .../Identities}/GetIdentity/ValidatorTests.cs | 2 +- .../ValidatorTests.cs | 10 +-- .../HandlerTests.cs | 14 ++-- .../ValidatorTests.cs | 10 +-- .../ListIdentities/ValidatorTests.cs | 2 +- .../LogDeletionProcess/ValidatorTests.cs | 2 +- .../HandlerTests.cs | 2 +- .../StartDeletionProcess/HandlerTests.cs | 2 +- .../HandlerTests.cs | 10 +-- .../UpdateIdentity/HandlerTests.cs | 2 +- .../UpdateIdentity/ValidatorTests.cs | 2 +- .../ValidatorTests.cs | 2 +- .../UpdateDeviceRegistration/HandlerTests.cs | 2 +- .../Tiers}/CreateTier/ValidatorTests.cs | 2 +- .../Tiers}/DeleteTier/HandlerTests.cs | 2 +- .../Tiers}/DeleteTier/ValidatorTests.cs | 2 +- .../Files => Entities}/ClaimOwnershipTests.cs | 2 +- .../Files => Entities}/CreationTests.cs | 2 +- .../{Tests/Files => Entities}/DeleteTests.cs | 2 +- .../RegenerateOwnershipToken.cs | 2 +- .../ValidateOwnershipTokenTest.cs | 2 +- .../Repository}/FilesRepositoryTests.cs | 2 +- .../Files}/GetFileContent/ValidatorTests.cs | 2 +- .../Files}/GetFileMetadata/ValidatorTests.cs | 2 +- .../Files}/ListFileMetadata/ValidatorTests.cs | 2 +- .../DeleteFilesOfIdentity/HandlerTests.cs | 2 +- .../DeleteFilesOfIdentity/ValidatorTests.cs | 2 +- .../DeleteIdentity}/IdentityDeleterTests.cs | 6 +- .../AnonymizeParticipantTests.cs | 2 +- .../{Messages => Entities}/CreationTests.cs | 2 +- .../DecomposeForTests.cs | 2 +- .../EnsureSendingMessagesIsAllowedTests.cs | 2 +- .../{Messages => Entities}/ExpressionTests.cs | 2 +- .../Messages/Shared/MessageDTOTests.cs | 2 +- .../Identities/ExhaustionDateTests.cs | 2 +- .../Identities/IdentityTests.cs | 2 +- .../Identities}/IndividualQuotaTests.cs | 2 +- .../Identities/QuotaIdTests.cs | 2 +- .../Identities/QuotaPeriodTests.cs | 2 +- .../Identities}/TierQuotaTests.cs | 2 +- .../Tiers/TierQuotaDefinitionIdTests.cs | 2 +- .../{Tests => Aggregates}/Tiers/TierTests.cs | 2 +- .../Repository}/MessagesRepositoryTests.cs | 2 +- .../RelationshipsRepositoryTests.cs | 2 +- .../Repository}/TiersRepositoryTests.cs | 2 +- .../IdentityCreated/HandlerTests.cs} | 12 ++-- .../DomainEvents/TierCreated/HandlerTests.cs} | 12 ++-- .../DomainEvents/TierDeleted/HandlerTests.cs} | 4 +- .../HandlerTests.cs} | 12 ++-- .../CreateQuotaForIdentity/HandlerTests.cs | 2 +- .../DeleteIdentity}/HandlerTests.cs | 6 +- .../DeleteIdentity}/IdentityDeleterTests.cs | 6 +- ...edFileStorageSpaceMetricCalculatorTests.cs | 2 +- ...nshipTemplateAnonymizeForIdentityTests.cs} | 0 ...eCollectedUsingPasswordExpressionTests.cs} | 0 ...cs => RelationshipTemplateCollectTests.cs} | 0 ....cs => RelationshipTemplateCreateTests.cs} | 0 ....cs => RelationshipTemplateDeleteTests.cs} | 0 ...=> RelationshipAcceptReactivationTests.cs} | 0 ...eptTests.cs => RelationshipAcceptTests.cs} | 0 ...ts.cs => RelationshipCanEstablishTests.cs} | 0 ...lationshipCountAsActiveExpressionTests.cs} | 0 ...ateTests.cs => RelationshipCreateTests.cs} | 0 ...hipDecomposeDueToIdentityDeletionTests.cs} | 0 ...Tests.cs => RelationshipDecomposeTests.cs} | 0 ...erTests.cs => RelationshipGetPeerTests.cs} | 0 ...ationshipHasParticipantExpressionTests.cs} | 0 ...=> RelationshipRejectReactivationTests.cs} | 0 ...ectTests.cs => RelationshipRejectTests.cs} | 0 ...> RelationshipRequestReactivationTests.cs} | 0 ...=> RelationshipRevokeReactivationTests.cs} | 0 ...okeTests.cs => RelationshipRevokeTests.cs} | 0 ...Tests.cs => RelationshipTerminateTests.cs} | 0 ...onshipTemplateQueryableExtensionsTests.cs} | 0 .../IdentityDeleted/HandlerTests.cs} | 4 +- .../HandlerTests.cs} | 4 +- .../IdentityToBeDeleted/HandlerTests.cs} | 4 +- .../DeleteIdentity/IdentityDeleterTests.cs} | 18 ++--- .../ValidatorTests.cs} | 2 +- .../HandlerTests.cs} | 2 +- .../ValidatorTests.cs} | 2 +- .../HandlerTests.cs} | 2 +- .../ListRelationshipsValidatorTests.cs} | 2 +- .../CanBeCleanedUpTests.cs | 2 +- .../{ => Entities}/DatawalletTests.cs | 2 +- .../Relationships}/RelationshipTests.cs | 2 +- .../{ => Entities/Sync}/ExternalEventTests.cs | 2 +- .../ListModifications}/HandlerTests.cs | 26 +++---- .../HandlerTests.cs | 2 +- ...alletModificationsCommandValidatorTests.cs | 2 +- ...atawalletModificationItemValidatorTests.cs | 2 +- .../HandlerTests.cs} | 10 +-- .../HandlerTests.cs} | 14 ++-- .../MessageCreated/HandlerTests.cs} | 12 ++-- .../PeerDeleted/HandlerTests.cs} | 10 +-- .../PeerDeletionCancelled/HandlerTests.cs} | 10 +-- .../PeerToBeDeleted/HandlerTests.cs} | 10 +-- .../HandlerTests.cs} | 12 ++-- .../HandlerTests.cs} | 10 +-- .../TokenLocked/HandlerTests.cs} | 8 +-- .../DeleteIdentity}/IdentityDeleterTests.cs | 14 ++-- .../HandlerTests.cs | 30 ++++---- .../HandlerTests.cs | 2 +- .../SyncRuns}/StartSyncRun/HandlerTests.cs | 2 +- .../StartSyncRunCommandValidatorTests.cs | 2 +- .../ResetAccessFailedCountTests.cs | 2 +- .../TokenAnonymizeForIdentityTests.cs} | 2 +- .../{Tests/Tokens => Entities}/TokenTests.cs | 2 +- .../TokenTryToAccessTests.TestData.cs} | 2 +- .../TokenTryToAccessTests.cs} | 2 +- .../Tokens => Entities}/UpdateContentTests.cs | 2 +- .../DeleteIdentity}/IdentityDeleterTests.cs | 6 +- .../Tokens/CreateToken/ValidatorTests.cs | 2 +- .../DeleteTokensOfIdentity/HandlerTests.cs | 2 +- 178 files changed, 400 insertions(+), 330 deletions(-) rename Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/{Tests => Workers}/ActualDeletionWorkerTests.cs (69%) rename Applications/SseServer/test/SseServerTests/{ => Controllers}/EventQueueTests.cs (99%) rename {Modules/Quotas/test/Quotas.Module.Tests/Tests => BuildingBlocks/test/BuildingBlocks.Application.Tests}/QuotaCheck/QuotaCheckerImplTests.cs (96%) rename {Modules/Quotas/test/Quotas.Module.Tests => BuildingBlocks/test/BuildingBlocks.Application.Tests}/TestDoubles/MetricStatusesStubRepository.cs (90%) rename BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/EventBus/{RabbitMq/EventExtensionsTests.cs => DomainEventNamingExtensionsTests.cs} (94%) rename BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/{Tests => Persistence/BlobStorage/AzureStorageAccount}/AzureStorageAccountTests.cs (98%) rename BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/{Tests => Persistence/BlobStorage/GoogleCloudStorage}/GoogleCloudStorageTests.cs (91%) rename BuildingBlocks/test/Crypto.Tests/{Tests/Implementations/Deprecated/BouncyCastle => Implementations/Deprecated/BouncyCastle/Asymmetric}/EllipticCurveSignatureHelperTests.cs (98%) rename BuildingBlocks/test/Crypto.Tests/{ => Implementations/Deprecated/BouncyCastle}/KeyGeneratorTests.cs (97%) rename BuildingBlocks/test/Crypto.Tests/{Tests/Implementations/Deprecated/BouncyCastle => Implementations/Deprecated/BouncyCastle/Symmetric}/AesEncryptionHelperTests.cs (98%) rename BuildingBlocks/test/Crypto.Tests/{Tests => }/Implementations/KeyAgreementHelperTests.cs (96%) rename BuildingBlocks/test/Crypto.Tests/{Tests => }/Implementations/SignatureHelperTests.cs (99%) rename BuildingBlocks/test/DevelopmentKit.Identity.Tests/{ => ValueObjects}/IdentityAddressTests.cs (98%) rename BuildingBlocks/test/Tooling.Tests/{Tests => Extensions}/DateTimeExtensionsTests.cs (98%) rename BuildingBlocks/test/Tooling.Tests/{Tests => }/Extensions/ExpressionExtensionsTests.cs (98%) rename BuildingBlocks/test/Tooling.Tests/{Tests => JsonConverters}/UrlSafeBase64ToByteArrayJsonConverterTests.cs (95%) rename Modules/Announcements/test/Announcements.Domain.Tests/{Tests => Entities}/AnnouncementTests.cs (96%) rename Modules/Announcements/test/Announcements.Module.Tests/{Tests/Announcements/Commands => Features/Announcements}/CreateAnnouncement/ValidatorTests.cs (98%) rename Modules/Announcements/test/Announcements.Module.Tests/{Tests/Announcements/Commands/AnonymizeRecipient => Features/Announcements/DeleteAnnouncementRecipients}/HandlerTests.cs (68%) rename Modules/Announcements/test/Announcements.Module.Tests/{Tests/Announcements => Features/Identities/DeleteIdentity}/IdentityDeleterTests.cs (85%) rename Modules/Challenges/test/Challenges.Module.Tests/{Tests/Challenges/Commands => Features/Challenges}/DeleteChallengesOfIdentity/ValidatorTests.cs (91%) rename Modules/Challenges/test/Challenges.Module.Tests/{Tests/Challenges/Queries => Features/Challenges}/GetChallengeById/ValidatorTests.cs (92%) rename Modules/Challenges/test/Challenges.Module.Tests/{Tests/Identities => Features/Identities/DeleteIdentity}/IdentityDeleterTests.cs (79%) rename Modules/Devices/test/Devices.Domain.Tests/{ => Aggregates/PushNotifications/Handles}/PnsHandleTests.cs (91%) rename Modules/Devices/test/Devices.Domain.Tests/{ => Aggregates}/PushNotifications/PnsRegistrationTests.cs (96%) rename Modules/Devices/test/Devices.Domain.Tests/{Tiers => Aggregates/Tier}/TierIdTests.cs (97%) rename Modules/Devices/test/Devices.Domain.Tests/{Tiers => Aggregates/Tier}/TierNameTests.cs (94%) rename Modules/Devices/test/Devices.Domain.Tests/{Tiers => Aggregates/Tier}/TierTests.cs (78%) rename Modules/Devices/test/Devices.Domain.Tests/{Identities/IdentityDeletionProcessAuditLogEntries => Entities/Identities}/AssociateUsernamesTests.cs (89%) rename Modules/Devices/test/Devices.Domain.Tests/{Identities/IdentityDeletionProcessAuditLogEntries => Entities/Identities}/CanBeCleanedUpTests.cs (94%) rename Modules/Devices/test/Devices.Domain.Tests/{ => Entities}/Identities/CancelDeletionProcessTests.cs (98%) rename Modules/Devices/test/Devices.Domain.Tests/{ => Entities}/Identities/ChangeFeatureFlagsTests.cs (97%) rename Modules/Devices/test/Devices.Domain.Tests/{ => Entities}/Identities/ChangeTierTests.cs (97%) rename Modules/Devices/test/Devices.Domain.Tests/{Domain => Entities/Identities}/CommunicationLanguageTests.cs (93%) rename Modules/Devices/test/Devices.Domain.Tests/{Identities/DeletionGracePeriodReminderSentTests.cs => Entities/Identities/DeletionProcessGracePeriodTests.cs} (98%) rename Modules/Devices/test/Devices.Domain.Tests/{ => Entities}/Identities/DeletionStartedTests.cs (97%) rename Modules/Devices/test/Devices.Domain.Tests/{Domain => Entities/Identities}/DeviceTests.cs (98%) rename Modules/Devices/test/Devices.Domain.Tests/{Identities/IdentityDeletionProcessAuditLogEntries => Entities/Identities}/IsAssociatedToUserTests.cs (94%) rename Modules/Devices/test/Devices.Domain.Tests/{ => Entities}/Identities/IsGracePeriodOverTests.cs (92%) rename Modules/Devices/test/Devices.Domain.Tests/{ => Entities}/Identities/StartDeletionProcessTests.cs (98%) rename Modules/Devices/test/Devices.Domain.Tests/{OAuthClients => Entities}/OAuthClientTests.cs (97%) rename Modules/Devices/test/Devices.Infrastructure.Tests/{Tests => }/PushNotifications/Connectors/Apns/ApnsMessageBuilderTests.cs (97%) rename Modules/Devices/test/Devices.Infrastructure.Tests/{Tests => }/PushNotifications/Connectors/Apns/ApplePushNotificationServiceConnectorTests.cs (97%) rename Modules/Devices/test/Devices.Infrastructure.Tests/{Tests => }/PushNotifications/Connectors/Apns/JwtGeneratorTests.cs (97%) rename Modules/Devices/test/Devices.Infrastructure.Tests/{Tests => }/PushNotifications/Connectors/Fcm/FcmMessageBuilderTests.cs (96%) rename Modules/Devices/test/Devices.Infrastructure.Tests/{Tests => }/PushNotifications/Connectors/Sse/ServerSentEventsConnectorTests.cs (96%) rename Modules/Devices/test/Devices.Infrastructure.Tests/{Tests => }/PushNotifications/Connectors/Sse/SseMessageBuilderTests.cs (89%) rename Modules/Devices/test/Devices.Infrastructure.Tests/{Tests => }/PushNotifications/NotificationTexts/PushNotificationTextProviderTests.cs (97%) rename Modules/Devices/test/Devices.Infrastructure.Tests/{Tests => }/PushNotifications/PushServiceTests.cs (97%) rename Modules/Devices/test/Devices.Module.Tests/{Tests/Devices/Commands => Features/Devices}/DeleteDevice/ValidatorTests.cs (92%) rename Modules/Devices/test/Devices.Module.Tests/{Tests/Devices/Queries => Features/Devices}/ListDevices/ValidatorTests.cs (93%) rename Modules/Devices/test/Devices.Module.Tests/{Tests/DomainEvents/Incoming/AnnouncementCreatedDomainEventHandlerTests.cs => Features/DomainEvents/AnnouncementCreated/HandlerTests.cs} (81%) rename Modules/Devices/test/Devices.Module.Tests/{Tests/PushNotifications/DatawalletModified => Features/DomainEvents/DatawalletModificationCreated}/HandlerTests.cs (78%) rename Modules/Devices/test/Devices.Module.Tests/{Tests/DomainEvents/Incoming/ExternalEventCreatedDomainEventHandlerTests.cs => Features/DomainEvents/ExternalEventCreated/HandlerTests.cs} (85%) rename Modules/Devices/test/Devices.Module.Tests/{Tests/DomainEvents/Incoming/TokenLockedDomainEventHandlerTests.cs => Features/DomainEvents/TokenLocked/HandlerTests.cs} (77%) rename Modules/Devices/test/Devices.Module.Tests/{Tests/Identities/Commands => Features/Identities}/CancelDeletionProcess/HandlerTests.cs (97%) rename Modules/Devices/test/Devices.Module.Tests/{Tests/Identities/Commands => Features/Identities}/CancelDeletionProcess/ValidatorTests.cs (92%) rename Modules/Devices/test/Devices.Module.Tests/{Tests/Identities => Features/Identities/DeleteIdentity}/IdentityDeleterTests.cs (69%) rename Modules/Devices/test/Devices.Module.Tests/{Tests/Identities/Commands => Features/Identities}/DeleteIdentity/ValidatorTests.cs (92%) rename Modules/Devices/test/Devices.Module.Tests/{Tests/Identities/Queries => Features/Identities}/GetDeletionProcessAsOwner/ValidatorTests.cs (92%) rename Modules/Devices/test/Devices.Module.Tests/{Tests/Identities/Queries => Features/Identities}/GetDeletionProcessAsSupport/ValidatorTests.cs (94%) rename Modules/Devices/test/Devices.Module.Tests/{Tests/Identities/Queries => Features/Identities}/GetIdentity/ValidatorTests.cs (92%) rename Modules/Devices/test/Devices.Module.Tests/{Tests/Identities/Queries/GetDeletionProcessesAsSupport => Features/Identities/ListDeletionProcessesAsSupport}/ValidatorTests.cs (63%) rename Modules/Devices/test/Devices.Module.Tests/{Tests/Identities/Queries/GetDeletionProcessesAuditLogs => Features/Identities/ListDeletionProcessesAuditLogs}/HandlerTests.cs (87%) rename Modules/Devices/test/Devices.Module.Tests/{Tests/Identities/Queries/GetDeletionProcessesAuditLogs => Features/Identities/ListDeletionProcessesAuditLogs}/ValidatorTests.cs (63%) rename Modules/Devices/test/Devices.Module.Tests/{Tests/Identities/Queries => Features/Identities}/ListIdentities/ValidatorTests.cs (93%) rename Modules/Devices/test/Devices.Module.Tests/{Tests/Identities/Commands => Features/Identities}/LogDeletionProcess/ValidatorTests.cs (92%) rename Modules/Devices/test/Devices.Module.Tests/{Tests/Identities/Commands => Features/Identities}/SendDeletionProcessGracePeriodReminders/HandlerTests.cs (98%) rename Modules/Devices/test/Devices.Module.Tests/{Tests/Identities/Commands => Features/Identities}/StartDeletionProcess/HandlerTests.cs (97%) rename Modules/Devices/test/Devices.Module.Tests/{Tests/Identities/Commands/UpdateDeletionProcesses => Features/Identities/TriggerRipeDeletionProcesses}/HandlerTests.cs (87%) rename Modules/Devices/test/Devices.Module.Tests/{Tests/Identities/Commands => Features/Identities}/UpdateIdentity/HandlerTests.cs (98%) rename Modules/Devices/test/Devices.Module.Tests/{Tests/Identities/Commands => Features/Identities}/UpdateIdentity/ValidatorTests.cs (94%) rename Modules/Devices/test/Devices.Module.Tests/{Tests => Features}/PushNotifications/DeletePnsRegistrationsOfIdentity/ValidatorTests.cs (91%) rename Modules/Devices/test/Devices.Module.Tests/{Tests => Features}/PushNotifications/UpdateDeviceRegistration/HandlerTests.cs (95%) rename Modules/Devices/test/Devices.Module.Tests/{Tests/Tiers/Commands => Features/Tiers}/CreateTier/ValidatorTests.cs (93%) rename Modules/Devices/test/Devices.Module.Tests/{Tests/Tiers/Commands => Features/Tiers}/DeleteTier/HandlerTests.cs (97%) rename Modules/Devices/test/Devices.Module.Tests/{Tests/Tiers/Commands => Features/Tiers}/DeleteTier/ValidatorTests.cs (92%) rename Modules/Files/test/Files.Domain.Tests/{Tests/Files => Entities}/ClaimOwnershipTests.cs (98%) rename Modules/Files/test/Files.Domain.Tests/{Tests/Files => Entities}/CreationTests.cs (91%) rename Modules/Files/test/Files.Domain.Tests/{Tests/Files => Entities}/DeleteTests.cs (93%) rename Modules/Files/test/Files.Domain.Tests/{Tests/Files => Entities}/RegenerateOwnershipToken.cs (95%) rename Modules/Files/test/Files.Domain.Tests/{Tests/Files => Entities}/ValidateOwnershipTokenTest.cs (98%) rename Modules/Files/test/Files.Infrastructure.Tests/{Tests/Repositories => Persistence/Database/Repository}/FilesRepositoryTests.cs (98%) rename Modules/Files/test/Files.Module.Tests/{Tests/Files/Queries => Features/Files}/GetFileContent/ValidatorTests.cs (92%) rename Modules/Files/test/Files.Module.Tests/{Tests/Files/Queries => Features/Files}/GetFileMetadata/ValidatorTests.cs (92%) rename Modules/Files/test/Files.Module.Tests/{Tests/Files/Queries => Features/Files}/ListFileMetadata/ValidatorTests.cs (93%) rename Modules/Files/test/Files.Module.Tests/{Tests/Identities/Commands => Features/Identities}/DeleteFilesOfIdentity/HandlerTests.cs (92%) rename Modules/Files/test/Files.Module.Tests/{Tests/Identities/Commands => Features/Identities}/DeleteFilesOfIdentity/ValidatorTests.cs (92%) rename Modules/Files/test/Files.Module.Tests/{Tests/Identities => Features/Identities/DeleteIdentity}/IdentityDeleterTests.cs (80%) rename Modules/Messages/test/Messages.Domain.Tests/{Messages => Entities}/AnonymizeParticipantTests.cs (98%) rename Modules/Messages/test/Messages.Domain.Tests/{Messages => Entities}/CreationTests.cs (95%) rename Modules/Messages/test/Messages.Domain.Tests/{Messages => Entities}/DecomposeForTests.cs (99%) rename Modules/Messages/test/Messages.Domain.Tests/{Relationships => Entities}/EnsureSendingMessagesIsAllowedTests.cs (97%) rename Modules/Messages/test/Messages.Domain.Tests/{Messages => Entities}/ExpressionTests.cs (98%) rename Modules/Messages/test/Messages.Module.Tests/{Tests => Features}/Messages/Shared/MessageDTOTests.cs (96%) rename Modules/Quotas/test/Quotas.Domain.Tests/{Tests => Aggregates}/Identities/ExhaustionDateTests.cs (98%) rename Modules/Quotas/test/Quotas.Domain.Tests/{Tests => Aggregates}/Identities/IdentityTests.cs (99%) rename Modules/Quotas/test/Quotas.Domain.Tests/{ => Aggregates/Identities}/IndividualQuotaTests.cs (91%) rename Modules/Quotas/test/Quotas.Domain.Tests/{Tests => Aggregates}/Identities/QuotaIdTests.cs (96%) rename Modules/Quotas/test/Quotas.Domain.Tests/{Tests => Aggregates}/Identities/QuotaPeriodTests.cs (96%) rename Modules/Quotas/test/Quotas.Domain.Tests/{ => Aggregates/Identities}/TierQuotaTests.cs (93%) rename Modules/Quotas/test/Quotas.Domain.Tests/{Tests => Aggregates}/Tiers/TierQuotaDefinitionIdTests.cs (96%) rename Modules/Quotas/test/Quotas.Domain.Tests/{Tests => Aggregates}/Tiers/TierTests.cs (99%) rename Modules/Quotas/test/Quotas.Infrastructure.Tests/{Tests/Repositories => Persistence/Repository}/MessagesRepositoryTests.cs (98%) rename Modules/Quotas/test/Quotas.Infrastructure.Tests/{Tests/Repositories => Persistence/Repository}/RelationshipsRepositoryTests.cs (99%) rename Modules/Quotas/test/Quotas.Infrastructure.Tests/{Tests/Repositories => Persistence/Repository}/TiersRepositoryTests.cs (96%) rename Modules/Quotas/test/Quotas.Module.Tests/{Tests/Identities/IdentityCreatedDomainEventHandlerTests.cs => Features/DomainEvents/IdentityCreated/HandlerTests.cs} (81%) rename Modules/Quotas/test/Quotas.Module.Tests/{Tests/Tiers/TierCreatedDomainEventHandlerTests.cs => Features/DomainEvents/TierCreated/HandlerTests.cs} (66%) rename Modules/Quotas/test/Quotas.Module.Tests/{Tests/DomainEvents/TierDeleted/TierDeletedDomainEventHandlerTests.cs => Features/DomainEvents/TierDeleted/HandlerTests.cs} (88%) rename Modules/Quotas/test/Quotas.Module.Tests/{Tests/Identities/TierQuotaDefinitionCreatedDomainEventHandlerTests.cs => Features/DomainEvents/TierQuotaDefinitionCreated/HandlerTests.cs} (85%) rename Modules/Quotas/test/Quotas.Module.Tests/{Tests/Quotas => Features/Identities}/CreateQuotaForIdentity/HandlerTests.cs (96%) rename Modules/Quotas/test/Quotas.Module.Tests/{Tests/Identities/Commands/DeleteIdentityCommandTests => Features/Identities/DeleteIdentity}/HandlerTests.cs (75%) rename Modules/Quotas/test/Quotas.Module.Tests/{Tests/Identities => Features/Identities/DeleteIdentity}/IdentityDeleterTests.cs (77%) rename Modules/Quotas/test/Quotas.Module.Tests/{Metrics => Features/Metrics/Shared}/UsedFileStorageSpaceMetricCalculatorTests.cs (95%) rename Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/RelationshipTemplates/{RelationshipTemplate.AnonymizeForIdentityTests.cs => RelationshipTemplateAnonymizeForIdentityTests.cs} (100%) rename Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/RelationshipTemplates/{RelationshipTemplate.CanBeCollectedUsingPasswordTests.cs => RelationshipTemplateCanBeCollectedUsingPasswordExpressionTests.cs} (100%) rename Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/RelationshipTemplates/{RelationshipTemplate.CollectTests.cs => RelationshipTemplateCollectTests.cs} (100%) rename Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/RelationshipTemplates/{RelationshipTemplate.CreateTests.cs => RelationshipTemplateCreateTests.cs} (100%) rename Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/RelationshipTemplates/{RelationshipTemplate.DeleteTests.cs => RelationshipTemplateDeleteTests.cs} (100%) rename Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/{Relationship.AcceptReactivationTests.cs => RelationshipAcceptReactivationTests.cs} (100%) rename Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/{Relationship.AcceptTests.cs => RelationshipAcceptTests.cs} (100%) rename Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/{Relationship.CanEstablishTests.cs => RelationshipCanEstablishTests.cs} (100%) rename Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/{Relationship.ExpressionTests.cs => RelationshipCountAsActiveExpressionTests.cs} (100%) rename Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/{Relationship.CreateTests.cs => RelationshipCreateTests.cs} (100%) rename Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/{Relationship.DecomposeDueToIdentityDeletionTests.cs => RelationshipDecomposeDueToIdentityDeletionTests.cs} (100%) rename Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/{Relationship.DecomposeTests.cs => RelationshipDecomposeTests.cs} (100%) rename Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/{Relationship.GetPeerTests.cs => RelationshipGetPeerTests.cs} (100%) rename Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/{Relationship.HasParticipantExpressionTests.cs => RelationshipHasParticipantExpressionTests.cs} (100%) rename Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/{Relationship.RejectReactivationTests.cs => RelationshipRejectReactivationTests.cs} (100%) rename Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/{Relationship.RejectTests.cs => RelationshipRejectTests.cs} (100%) rename Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/{Relationship.RequestReactivationTests.cs => RelationshipRequestReactivationTests.cs} (100%) rename Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/{Relationship.RevokeReactivationsTests.cs => RelationshipRevokeReactivationTests.cs} (100%) rename Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/{Relationship.RevokeTests.cs => RelationshipRevokeTests.cs} (100%) rename Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/{Relationship.TerminateTests.cs => RelationshipTerminateTests.cs} (100%) rename Modules/Relationships/test/Relationships.Infrastructure.Tests/Extensions/{RelationshipTemplateQueryableExtensions.Tests.cs => RelationshipTemplateQueryableExtensionsTests.cs} (100%) rename Modules/Relationships/test/Relationships.Module.Tests/{DomainEvents/Incoming/IdentityDeleted/IdentityDeletedDomainEventHandler.Tests.cs => Features/DomainEvents/IdentityDeleted/HandlerTests.cs} (94%) rename Modules/Relationships/test/Relationships.Module.Tests/{DomainEvents/Incoming/IdentityDeletionCancelled/IdentityDeletionCancelledDomainEventHandler.Tests.cs => Features/DomainEvents/IdentityDeletionCancelled/HandlerTests.cs} (94%) rename Modules/Relationships/test/Relationships.Module.Tests/{DomainEvents/Incoming/IdentityToBeDeleted/IdentityToBeDeletedDomainEventHandler.Tests.cs => Features/DomainEvents/IdentityToBeDeleted/HandlerTests.cs} (94%) rename Modules/Relationships/test/Relationships.Module.Tests/{Identities/IdentityDeleter.Tests.cs => Features/Identities/DeleteIdentity/IdentityDeleterTests.cs} (64%) rename Modules/Relationships/test/Relationships.Module.Tests/{RelationshipTemplates/Commands/CreateRelationshipTemplate/Validator.Tests.cs => Features/RelationshipTemplates/CreateRelationshipTemplate/ValidatorTests.cs} (97%) rename Modules/Relationships/test/Relationships.Module.Tests/{RelationshipTemplates/Commands/DeleteRelationshipTemplatesOfIdentity/Handler.Tests.cs => Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/HandlerTests.cs} (90%) rename Modules/Relationships/test/Relationships.Module.Tests/{RelationshipTemplates/Queries/ListRelationshipTemplates/Validator.Tests.cs => Features/RelationshipTemplates/ListRelationshipTemplates/ValidatorTests.cs} (93%) rename Modules/Relationships/test/Relationships.Module.Tests/{Relationships/Commands/DecomposeAndAnonymizeRelationshipsOfIdentity/Handler.Tests.cs => Features/Relationships/DecomposeAndAnonymizeRelationshipsOfIdentity/HandlerTests.cs} (90%) rename Modules/Relationships/test/Relationships.Module.Tests/{Relationships/Queries/ListRelationships/ListRelationshipsValidator.Tests.cs => Features/Relationships/ListRelationships/ListRelationshipsValidatorTests.cs} (95%) rename Modules/Synchronization/test/Synchronization.Domain.Tests/{DatawalletModifications => Entities}/CanBeCleanedUpTests.cs (99%) rename Modules/Synchronization/test/Synchronization.Domain.Tests/{ => Entities}/DatawalletTests.cs (97%) rename Modules/Synchronization/test/Synchronization.Domain.Tests/{ => Entities/Relationships}/RelationshipTests.cs (94%) rename Modules/Synchronization/test/Synchronization.Domain.Tests/{ => Entities/Sync}/ExternalEventTests.cs (92%) rename Modules/Synchronization/test/Synchronization.Module.Tests/{Tests/Datawallet/Queries/GetDatawalletModifications => Features/Datawallets/ListModifications}/HandlerTests.cs (90%) rename Modules/Synchronization/test/Synchronization.Module.Tests/{Tests/Datawallet/Commands => Features/Datawallets}/PushDatawalletModifications/HandlerTests.cs (97%) rename Modules/Synchronization/test/Synchronization.Module.Tests/{Tests/Datawallet/Commands => Features/Datawallets}/PushDatawalletModifications/PushDatawalletModificationsCommandValidatorTests.cs (94%) rename Modules/Synchronization/test/Synchronization.Module.Tests/{Tests/Datawallet/DTOs => Features/Datawallets/Shared}/PushDatawalletModificationItemValidatorTests.cs (97%) rename Modules/Synchronization/test/Synchronization.Module.Tests/{Tests/DomainEvents/IdentityDeletionProcessStartedDomainEventHandlerTests.cs => Features/ExternalEvents/IdentityDeletionProcessStarted/HandlerTests.cs} (73%) rename Modules/Synchronization/test/Synchronization.Module.Tests/{Tests/DomainEvents/IdentityDeletionProcessStatusChangedDomainEventHandlerTests.cs => Features/ExternalEvents/IdentityDeletionProcessStatusChanged/HandlerTests.cs} (71%) rename Modules/Synchronization/test/Synchronization.Module.Tests/{Tests/DomainEvents/MessageCreatedDomainEventHandlerTests.cs => Features/ExternalEvents/MessageCreated/HandlerTests.cs} (89%) rename Modules/Synchronization/test/Synchronization.Module.Tests/{Tests/DomainEvents/PeerDeletedDomainEventHandlerTests.cs => Features/ExternalEvents/PeerDeleted/HandlerTests.cs} (66%) rename Modules/Synchronization/test/Synchronization.Module.Tests/{Tests/DomainEvents/PeerDeletionCancelledDomainEventHandlerTests.cs => Features/ExternalEvents/PeerDeletionCancelled/HandlerTests.cs} (69%) rename Modules/Synchronization/test/Synchronization.Module.Tests/{Tests/DomainEvents/PeerToBeDeletedDomainEventHandlerTests.cs => Features/ExternalEvents/PeerToBeDeleted/HandlerTests.cs} (68%) rename Modules/Synchronization/test/Synchronization.Module.Tests/{Tests/DomainEvents/RelationshipReactivationCompletedDomainEventHandlerTests.cs => Features/ExternalEvents/RelationshipReactivationCompleted/HandlerTests.cs} (83%) rename Modules/Synchronization/test/Synchronization.Module.Tests/{Tests/DomainEvents/RelationshipStatusChangedDomainEventHandlerTests.cs => Features/ExternalEvents/RelationshipStatusChanged/HandlerTests.cs} (91%) rename Modules/Synchronization/test/Synchronization.Module.Tests/{Tests/DomainEvents/TokenLockedDomainEventHandlerTests.cs => Features/ExternalEvents/TokenLocked/HandlerTests.cs} (70%) rename Modules/Synchronization/test/Synchronization.Module.Tests/{Tests/Identities => Features/Identities/DeleteIdentity}/IdentityDeleterTests.cs (65%) rename Modules/Synchronization/test/Synchronization.Module.Tests/{Tests/SyncRuns/Commands/FinalizeSyncRun => Features/SyncRuns/FinalizeExternalEventSync}/HandlerTests.cs (79%) rename Modules/Synchronization/test/Synchronization.Module.Tests/{Tests/SyncRuns/Commands => Features/SyncRuns}/RefreshExpirationTimeOfSyncRun/HandlerTests.cs (97%) rename Modules/Synchronization/test/Synchronization.Module.Tests/{Tests/SyncRuns/Commands => Features/SyncRuns}/StartSyncRun/HandlerTests.cs (99%) rename Modules/Synchronization/test/Synchronization.Module.Tests/{Tests/SyncRuns/Commands => Features/SyncRuns}/StartSyncRun/StartSyncRunCommandValidatorTests.cs (92%) rename Modules/Tokens/test/Tokens.Domain.Tests/{Tests/Tokens => Entities}/ResetAccessFailedCountTests.cs (87%) rename Modules/Tokens/test/Tokens.Domain.Tests/{Tests/Tokens/AnonymizeForIdentityTests.cs => Entities/TokenAnonymizeForIdentityTests.cs} (96%) rename Modules/Tokens/test/Tokens.Domain.Tests/{Tests/Tokens => Entities}/TokenTests.cs (96%) rename Modules/Tokens/test/Tokens.Domain.Tests/{Tests/Tokens/TryToAccessTests.TestData.cs => Entities/TokenTryToAccessTests.TestData.cs} (99%) rename Modules/Tokens/test/Tokens.Domain.Tests/{Tests/Tokens/TryToAccessTests.cs => Entities/TokenTryToAccessTests.cs} (99%) rename Modules/Tokens/test/Tokens.Domain.Tests/{Tests/Tokens => Entities}/UpdateContentTests.cs (98%) rename Modules/Tokens/test/Tokens.Module.Tests/{Tests/Identities => Features/Identities/DeleteIdentity}/IdentityDeleterTests.cs (80%) rename Modules/Tokens/test/Tokens.Module.Tests/{Tests => Features}/Tokens/CreateToken/ValidatorTests.cs (98%) rename Modules/Tokens/test/Tokens.Module.Tests/{Tests => Features}/Tokens/DeleteTokensOfIdentity/HandlerTests.cs (91%) diff --git a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/Tests/ActualDeletionWorkerTests.cs b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/Workers/ActualDeletionWorkerTests.cs similarity index 69% rename from Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/Tests/ActualDeletionWorkerTests.cs rename to Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/Workers/ActualDeletionWorkerTests.cs index 8bd71a04b1..75662085b6 100644 --- a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/Tests/ActualDeletionWorkerTests.cs +++ b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/Workers/ActualDeletionWorkerTests.cs @@ -1,6 +1,6 @@ -using GetIdentity = Backbone.Modules.Devices.Module.Features.Identities.GetIdentity; -using ListRelationshipsOfIdentity = Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationshipsOfIdentity; -using TriggerRipeDeletionProcesses = Backbone.Modules.Devices.Module.Features.Identities.TriggerRipeDeletionProcesses; +using GetIdentitySlice = Backbone.Modules.Devices.Module.Features.Identities.GetIdentity; +using ListRelationshipsOfIdentitySlice = Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationshipsOfIdentity; +using TriggerRipeDeletionProcessesSlice = Backbone.Modules.Devices.Module.Features.Identities.TriggerRipeDeletionProcesses; using Backbone.BuildingBlocks.Application.Identities; using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.BuildingBlocks.Domain.Errors; @@ -15,7 +15,7 @@ using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; -namespace Backbone.Job.IdentityDeletion.Tests.Tests; +namespace Backbone.Job.IdentityDeletion.Tests.Workers; public class ActualDeletionWorkerTests : AbstractTestsBase { @@ -32,7 +32,7 @@ public async Task Proxies_triggering_the_deletion_processes_to_command_handler() await worker.StartProcessing(CancellationToken.None); // Assert - A.CallTo(() => mockMediator.Send(A._, A._)).MustHaveHappenedOnceExactly(); + A.CallTo(() => mockMediator.Send(A._, A._)).MustHaveHappenedOnceExactly(); } [Fact] @@ -47,14 +47,14 @@ public async Task Calls_Deleters_For_Each_Identity() var mockIdentityDeleter = A.Fake(); var worker = CreateWorker(fakeMediator, [mockIdentityDeleter]); - A.CallTo(() => fakeMediator.Send(A._, A._)) - .Returns(new ListRelationshipsOfIdentity.Response([])); + A.CallTo(() => fakeMediator.Send(A._, A._)) + .Returns(new ListRelationshipsOfIdentitySlice.Response([])); - A.CallTo(() => fakeMediator.Send(A.That.Matches(q => q.Address == identity1.Address.Value), A._)) - .Returns(new GetIdentity.Response(identity1)); + A.CallTo(() => fakeMediator.Send(A.That.Matches(q => q.Address == identity1.Address.Value), A._)) + .Returns(new GetIdentitySlice.Response(identity1)); - A.CallTo(() => fakeMediator.Send(A.That.Matches(q => q.Address == identity2.Address.Value), A._)) - .Returns(new GetIdentity.Response(identity2)); + A.CallTo(() => fakeMediator.Send(A.That.Matches(q => q.Address == identity2.Address.Value), A._)) + .Returns(new GetIdentitySlice.Response(identity2)); // Act await worker.StartProcessing(CancellationToken.None); @@ -72,13 +72,13 @@ public async Task Sends_push_notification_to_each_deleted_identity() var identity1 = CreateIdentity(); var identity2 = CreateIdentity(); SetupRipeDeletionProcessesCommand(fakeMediator, identity1.Address, identity2.Address); - A.CallTo(() => fakeMediator.Send(A._, A._)).Returns(new ListRelationshipsOfIdentity.Response([])); + A.CallTo(() => fakeMediator.Send(A._, A._)).Returns(new ListRelationshipsOfIdentitySlice.Response([])); - A.CallTo(() => fakeMediator.Send(A.That.Matches(q => q.Address == identity1.Address.Value), A._)) - .Returns(new GetIdentity.Response(identity1)); + A.CallTo(() => fakeMediator.Send(A.That.Matches(q => q.Address == identity1.Address.Value), A._)) + .Returns(new GetIdentitySlice.Response(identity1)); - A.CallTo(() => fakeMediator.Send(A.That.Matches(q => q.Address == identity2.Address.Value), A._)) - .Returns(new GetIdentity.Response(identity2)); + A.CallTo(() => fakeMediator.Send(A.That.Matches(q => q.Address == identity2.Address.Value), A._)) + .Returns(new GetIdentitySlice.Response(identity2)); var mockPushNotificationSender = A.Fake(); var worker = CreateWorker(fakeMediator, [], mockPushNotificationSender); @@ -99,8 +99,8 @@ public async Task Sends_push_notification_to_each_deleted_identity() private static void SetupRipeDeletionProcessesCommand(IMediator mediator, params IdentityAddress[] identityAddresses) { - var commandResponse = new TriggerRipeDeletionProcesses.Response(identityAddresses.ToDictionary(x => x.Value, _ => UnitResult.Success())); - A.CallTo(() => mediator.Send(A._, A._)).Returns(commandResponse); + var commandResponse = new TriggerRipeDeletionProcessesSlice.Response(identityAddresses.ToDictionary(x => x.Value, _ => UnitResult.Success())); + A.CallTo(() => mediator.Send(A._, A._)).Returns(commandResponse); } private static ActualDeletionWorker CreateWorker(IMediator mediator, diff --git a/Applications/SseServer/test/SseServerTests/EventQueueTests.cs b/Applications/SseServer/test/SseServerTests/Controllers/EventQueueTests.cs similarity index 99% rename from Applications/SseServer/test/SseServerTests/EventQueueTests.cs rename to Applications/SseServer/test/SseServerTests/Controllers/EventQueueTests.cs index 926d631e8f..c08d8e5f65 100644 --- a/Applications/SseServer/test/SseServerTests/EventQueueTests.cs +++ b/Applications/SseServer/test/SseServerTests/Controllers/EventQueueTests.cs @@ -6,7 +6,7 @@ using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; -namespace Backbone.SseServerTests; +namespace Backbone.SseServerTests.Controllers; public class EventQueueTests : AbstractTestsBase { diff --git a/Backbone.Tests.ArchUnit/UnitTests.cs b/Backbone.Tests.ArchUnit/UnitTests.cs index 2c015ec34f..474a140358 100644 --- a/Backbone.Tests.ArchUnit/UnitTests.cs +++ b/Backbone.Tests.ArchUnit/UnitTests.cs @@ -1,11 +1,45 @@ -using ArchUnitNET.xUnitV3; +using System.Runtime.CompilerServices; +using System.Text.RegularExpressions; +using ArchUnitNET.xUnitV3; using Backbone.UnitTestTools.BaseClasses; +using Shouldly; using static ArchUnitNET.Fluent.ArchRuleDefinition; namespace Backbone.Backbone.Tests.ArchUnit; public class UnitTests { + [Fact] + public void UnitTestFoldersAndNamespacesShouldMirrorSourceFolders() + { + foreach (var (testFile, testDirectory, sourceDirectory, rootNamespace) in GetUnitTestFiles()) + { + var relativeFolder = Path.GetRelativePath(testDirectory, Path.GetDirectoryName(testFile)!); + var sourceFolder = Path.Combine(sourceDirectory, relativeFolder); + Directory.Exists(sourceFolder).ShouldBeTrue($"{testFile} must mirror an existing source folder."); + + var expectedNamespace = relativeFolder == "." ? rootNamespace : rootNamespace + "." + relativeFolder.Replace(Path.DirectorySeparatorChar, '.'); + var namespaceMatch = Regex.Match(File.ReadAllText(testFile), @"(?m)^namespace\s+([^;{]+)"); + namespaceMatch.Success.ShouldBeTrue($"{testFile} must declare a namespace."); + namespaceMatch.Groups[1].Value.Trim().ShouldBe(expectedNamespace, testFile); + } + } + + [Fact] + public void DomainEventHandlerTestsShouldBeNamedHandlerTests() + { + foreach (var (testFile, testDirectory, sourceDirectory, _) in GetUnitTestFiles()) + { + var relativeFolder = Path.GetRelativePath(testDirectory, Path.GetDirectoryName(testFile)!); + var handlerFile = Path.Combine(sourceDirectory, relativeFolder, "Handler.cs"); + if (!File.Exists(handlerFile) || !File.ReadAllText(handlerFile).Contains("IDomainEventHandler<")) + continue; + + Path.GetFileName(testFile).ShouldBe("HandlerTests.cs"); + Regex.Match(File.ReadAllText(testFile), @"\bclass\s+(\w+)").Groups[1].Value.ShouldBe("HandlerTests", testFile); + } + } + [Fact] public void UnitTestsShouldExtendAbstractTestsBase() { @@ -14,4 +48,38 @@ public void UnitTestsShouldExtendAbstractTestsBase() .Should().BeAssignableTo(typeof(AbstractTestsBase)) .Check(Backbone.ARCHITECTURE); } + + private static IEnumerable<(string TestFile, string TestDirectory, string SourceDirectory, string RootNamespace)> GetUnitTestFiles([CallerFilePath] string callerFile = "") + { + var repositoryDirectory = Path.GetDirectoryName(Path.GetDirectoryName(callerFile))!; + var projects = Directory.GetFiles(repositoryDirectory, "*.csproj", SearchOption.AllDirectories); + var sourceProjects = projects.Where(p => p.Contains($"{Path.DirectorySeparatorChar}src{Path.DirectorySeparatorChar}")) + .ToDictionary(p => Path.GetFileNameWithoutExtension(p)!, p => p); + + foreach (var project in projects.Where(p => p.Contains($"{Path.DirectorySeparatorChar}test{Path.DirectorySeparatorChar}"))) + { + var name = Path.GetFileNameWithoutExtension(project); + if (!name.EndsWith("Tests")) + continue; + + var sourceName = name.EndsWith(".Tests") ? name[..^6] : name[..^5]; + if (!sourceProjects.TryGetValue(sourceName, out var sourceProject)) + continue; + + var testDirectory = Path.GetDirectoryName(project)!; + var sourceDirectory = Path.GetDirectoryName(sourceProject)!; + var rootNamespace = project.StartsWith(Path.Combine(repositoryDirectory, "Modules") + Path.DirectorySeparatorChar) + ? "Backbone.Modules." + name + : "Backbone." + name; + + foreach (var testFile in Directory.GetFiles(testDirectory, "*.cs", SearchOption.AllDirectories)) + { + var pathParts = Path.GetRelativePath(testDirectory, testFile).Split(Path.DirectorySeparatorChar); + if (pathParts.Contains("bin") || pathParts.Contains("obj") || !Regex.IsMatch(File.ReadAllText(testFile), @"\[(Fact|Theory)\b")) + continue; + + yield return (testFile, testDirectory, sourceDirectory, rootNamespace); + } + } + } } diff --git a/BuildingBlocks/test/BuildingBlocks.Application.Tests/Mediatr/QuotaEnforcerBehaviorTests.cs b/BuildingBlocks/test/BuildingBlocks.Application.Tests/Mediatr/QuotaEnforcerBehaviorTests.cs index 6a5ad9f6fd..a72f7ae740 100644 --- a/BuildingBlocks/test/BuildingBlocks.Application.Tests/Mediatr/QuotaEnforcerBehaviorTests.cs +++ b/BuildingBlocks/test/BuildingBlocks.Application.Tests/Mediatr/QuotaEnforcerBehaviorTests.cs @@ -8,7 +8,7 @@ using Backbone.UnitTestTools.Shouldly.Extensions; using MediatR; -namespace Backbone.BuildingBlocks.Application.Tests.Mediatr; +namespace Backbone.BuildingBlocks.Application.Tests.MediatR; public class QuotaEnforcerBehaviorTests : AbstractTestsBase { diff --git a/Modules/Quotas/test/Quotas.Module.Tests/Tests/QuotaCheck/QuotaCheckerImplTests.cs b/BuildingBlocks/test/BuildingBlocks.Application.Tests/QuotaCheck/QuotaCheckerImplTests.cs similarity index 96% rename from Modules/Quotas/test/Quotas.Module.Tests/Tests/QuotaCheck/QuotaCheckerImplTests.cs rename to BuildingBlocks/test/BuildingBlocks.Application.Tests/QuotaCheck/QuotaCheckerImplTests.cs index 69b6f9839a..cd041bb38b 100644 --- a/Modules/Quotas/test/Quotas.Module.Tests/Tests/QuotaCheck/QuotaCheckerImplTests.cs +++ b/BuildingBlocks/test/BuildingBlocks.Application.Tests/QuotaCheck/QuotaCheckerImplTests.cs @@ -1,12 +1,12 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.BuildingBlocks.Application.QuotaCheck; using Backbone.BuildingBlocks.Domain; -using Backbone.Modules.Quotas.Module.Tests.TestDoubles; +using Backbone.BuildingBlocks.Application.Tests.TestDoubles; using Backbone.Tooling; using Backbone.UnitTestTools.Shouldly.Extensions; using Backbone.UnitTestTools.TestDoubles; -namespace Backbone.Modules.Quotas.Module.Tests.Tests.QuotaCheck; +namespace Backbone.BuildingBlocks.Application.Tests.QuotaCheck; public class QuotaCheckerImplTests : AbstractTestsBase { diff --git a/Modules/Quotas/test/Quotas.Module.Tests/TestDoubles/MetricStatusesStubRepository.cs b/BuildingBlocks/test/BuildingBlocks.Application.Tests/TestDoubles/MetricStatusesStubRepository.cs similarity index 90% rename from Modules/Quotas/test/Quotas.Module.Tests/TestDoubles/MetricStatusesStubRepository.cs rename to BuildingBlocks/test/BuildingBlocks.Application.Tests/TestDoubles/MetricStatusesStubRepository.cs index 769b45da8e..a51fd0b715 100644 --- a/Modules/Quotas/test/Quotas.Module.Tests/TestDoubles/MetricStatusesStubRepository.cs +++ b/BuildingBlocks/test/BuildingBlocks.Application.Tests/TestDoubles/MetricStatusesStubRepository.cs @@ -2,7 +2,7 @@ using Backbone.Common.Infrastructure.Persistence.Repository; using Backbone.DevelopmentKit.Identity.ValueObjects; -namespace Backbone.Modules.Quotas.Module.Tests.TestDoubles; +namespace Backbone.BuildingBlocks.Application.Tests.TestDoubles; internal class MetricStatusesStubRepository : IMetricStatusesRepository { diff --git a/BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/EventBus/RabbitMq/EventExtensionsTests.cs b/BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/EventBus/DomainEventNamingExtensionsTests.cs similarity index 94% rename from BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/EventBus/RabbitMq/EventExtensionsTests.cs rename to BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/EventBus/DomainEventNamingExtensionsTests.cs index 73683b21af..97a43faa23 100644 --- a/BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/EventBus/RabbitMq/EventExtensionsTests.cs +++ b/BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/EventBus/DomainEventNamingExtensionsTests.cs @@ -3,7 +3,7 @@ using Backbone.BuildingBlocks.Infrastructure.EventBus; using Backbone.Modules.TestModule.Application.DomainEvents; -namespace Backbone.BuildingBlocks.Infrastructure.Tests.EventBus.RabbitMq +namespace Backbone.BuildingBlocks.Infrastructure.Tests.EventBus { public class DomainEventNamingExtensionsTests : AbstractTestsBase { diff --git a/BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/EventBus/RabbitMq/EventBusRabbitMqTests.cs b/BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/EventBus/RabbitMq/EventBusRabbitMqTests.cs index 600d305fb5..4aa5a1701c 100644 --- a/BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/EventBus/RabbitMq/EventBusRabbitMqTests.cs +++ b/BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/EventBus/RabbitMq/EventBusRabbitMqTests.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Infrastructure.EventBus.RabbitMQ; using Backbone.Modules.TestModule.Application.DomainEvents; -namespace Backbone.BuildingBlocks.Infrastructure.Tests.EventBus.RabbitMq; +namespace Backbone.BuildingBlocks.Infrastructure.Tests.EventBus.RabbitMQ; public class EventBusRabbitMqTests : AbstractTestsBase { diff --git a/BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/Tests/AzureStorageAccountTests.cs b/BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/Persistence/BlobStorage/AzureStorageAccount/AzureStorageAccountTests.cs similarity index 98% rename from BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/Tests/AzureStorageAccountTests.cs rename to BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/Persistence/BlobStorage/AzureStorageAccount/AzureStorageAccountTests.cs index ca0ccd12c1..d1768cdb3c 100644 --- a/BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/Tests/AzureStorageAccountTests.cs +++ b/BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/Persistence/BlobStorage/AzureStorageAccount/AzureStorageAccountTests.cs @@ -3,7 +3,7 @@ using Microsoft.Extensions.DependencyInjection; using Testcontainers.Azurite; -namespace Backbone.BuildingBlocks.Infrastructure.Tests.Tests; +namespace Backbone.BuildingBlocks.Infrastructure.Tests.Persistence.BlobStorage.AzureStorageAccount; [Collection("AzureBlobStorageTests")] public class AzureStorageAccountTests : AbstractTestsBase, IAsyncLifetime diff --git a/BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/Tests/GoogleCloudStorageTests.cs b/BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/Persistence/BlobStorage/GoogleCloudStorage/GoogleCloudStorageTests.cs similarity index 91% rename from BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/Tests/GoogleCloudStorageTests.cs rename to BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/Persistence/BlobStorage/GoogleCloudStorage/GoogleCloudStorageTests.cs index 0ef21dced9..ab7472d5b7 100644 --- a/BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/Tests/GoogleCloudStorageTests.cs +++ b/BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/Persistence/BlobStorage/GoogleCloudStorage/GoogleCloudStorageTests.cs @@ -1,3 +1,4 @@ +using GoogleCloudBlobStorage = Backbone.BuildingBlocks.Infrastructure.Persistence.BlobStorage.GoogleCloudStorage.GoogleCloudStorage; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.Persistence.BlobStorage; using Backbone.BuildingBlocks.Infrastructure.Persistence.BlobStorage.GoogleCloudStorage; @@ -6,13 +7,13 @@ using Google.Cloud.Storage.V1; using Microsoft.Extensions.Logging; -namespace Backbone.BuildingBlocks.Infrastructure.Tests.Tests; +namespace Backbone.BuildingBlocks.Infrastructure.Tests.Persistence.BlobStorage.GoogleCloudStorage; public class GoogleCloudStorageTests : AbstractTestsBase, IAsyncLifetime { public const string BUCKET_NAME = "test-bucket-nmshd"; private readonly StorageClient _storageClient; - private readonly GoogleCloudStorage _blobStorageUnderTest; + private readonly GoogleCloudBlobStorage _blobStorageUnderTest; public GoogleCloudStorageTests() { @@ -20,7 +21,7 @@ public GoogleCloudStorageTests() _storageClient = StorageClient.Create(GoogleCredential.FromServiceAccountCredential(CredentialFactory.FromJson(authJson))); - _blobStorageUnderTest = new GoogleCloudStorage(_storageClient, A.Fake>()); + _blobStorageUnderTest = new GoogleCloudBlobStorage(_storageClient, A.Fake>()); } public ValueTask InitializeAsync() diff --git a/BuildingBlocks/test/Crypto.Tests/Tests/Implementations/Deprecated/BouncyCastle/EllipticCurveSignatureHelperTests.cs b/BuildingBlocks/test/Crypto.Tests/Implementations/Deprecated/BouncyCastle/Asymmetric/EllipticCurveSignatureHelperTests.cs similarity index 98% rename from BuildingBlocks/test/Crypto.Tests/Tests/Implementations/Deprecated/BouncyCastle/EllipticCurveSignatureHelperTests.cs rename to BuildingBlocks/test/Crypto.Tests/Implementations/Deprecated/BouncyCastle/Asymmetric/EllipticCurveSignatureHelperTests.cs index 9996499765..b4a09e3d34 100644 --- a/BuildingBlocks/test/Crypto.Tests/Tests/Implementations/Deprecated/BouncyCastle/EllipticCurveSignatureHelperTests.cs +++ b/BuildingBlocks/test/Crypto.Tests/Implementations/Deprecated/BouncyCastle/Asymmetric/EllipticCurveSignatureHelperTests.cs @@ -1,6 +1,6 @@ using Backbone.Crypto.Implementations.Deprecated.BouncyCastle.Asymmetric; -namespace Backbone.Crypto.Tests.Tests.Implementations.Deprecated.BouncyCastle; +namespace Backbone.Crypto.Tests.Implementations.Deprecated.BouncyCastle.Asymmetric; public class EllipticCurveSignatureHelperTests : AbstractTestsBase { diff --git a/BuildingBlocks/test/Crypto.Tests/KeyGeneratorTests.cs b/BuildingBlocks/test/Crypto.Tests/Implementations/Deprecated/BouncyCastle/KeyGeneratorTests.cs similarity index 97% rename from BuildingBlocks/test/Crypto.Tests/KeyGeneratorTests.cs rename to BuildingBlocks/test/Crypto.Tests/Implementations/Deprecated/BouncyCastle/KeyGeneratorTests.cs index 403703d493..da43d4cb13 100644 --- a/BuildingBlocks/test/Crypto.Tests/KeyGeneratorTests.cs +++ b/BuildingBlocks/test/Crypto.Tests/Implementations/Deprecated/BouncyCastle/KeyGeneratorTests.cs @@ -1,7 +1,7 @@ using Backbone.Crypto.Implementations.Deprecated.BouncyCastle; using Backbone.Crypto.Implementations.Deprecated.BouncyCastle.Symmetric; -namespace Backbone.Crypto.Tests; +namespace Backbone.Crypto.Tests.Implementations.Deprecated.BouncyCastle; public class KeyGeneratorTests : AbstractTestsBase { diff --git a/BuildingBlocks/test/Crypto.Tests/Tests/Implementations/Deprecated/BouncyCastle/AesEncryptionHelperTests.cs b/BuildingBlocks/test/Crypto.Tests/Implementations/Deprecated/BouncyCastle/Symmetric/AesEncryptionHelperTests.cs similarity index 98% rename from BuildingBlocks/test/Crypto.Tests/Tests/Implementations/Deprecated/BouncyCastle/AesEncryptionHelperTests.cs rename to BuildingBlocks/test/Crypto.Tests/Implementations/Deprecated/BouncyCastle/Symmetric/AesEncryptionHelperTests.cs index c190d9fd7f..66eafd1123 100644 --- a/BuildingBlocks/test/Crypto.Tests/Tests/Implementations/Deprecated/BouncyCastle/AesEncryptionHelperTests.cs +++ b/BuildingBlocks/test/Crypto.Tests/Implementations/Deprecated/BouncyCastle/Symmetric/AesEncryptionHelperTests.cs @@ -1,6 +1,6 @@ using Backbone.Crypto.Implementations.Deprecated.BouncyCastle.Symmetric; -namespace Backbone.Crypto.Tests.Tests.Implementations.Deprecated.BouncyCastle; +namespace Backbone.Crypto.Tests.Implementations.Deprecated.BouncyCastle.Symmetric; public class AesEncryptionHelperTests : AbstractTestsBase { diff --git a/BuildingBlocks/test/Crypto.Tests/Tests/Implementations/KeyAgreementHelperTests.cs b/BuildingBlocks/test/Crypto.Tests/Implementations/KeyAgreementHelperTests.cs similarity index 96% rename from BuildingBlocks/test/Crypto.Tests/Tests/Implementations/KeyAgreementHelperTests.cs rename to BuildingBlocks/test/Crypto.Tests/Implementations/KeyAgreementHelperTests.cs index ffd10b4397..a862f8171f 100644 --- a/BuildingBlocks/test/Crypto.Tests/Tests/Implementations/KeyAgreementHelperTests.cs +++ b/BuildingBlocks/test/Crypto.Tests/Implementations/KeyAgreementHelperTests.cs @@ -1,6 +1,6 @@ using Backbone.Crypto.Implementations; -namespace Backbone.Crypto.Tests.Tests.Implementations; +namespace Backbone.Crypto.Tests.Implementations; public class KeyAgreementHelperTests : AbstractTestsBase { diff --git a/BuildingBlocks/test/Crypto.Tests/Tests/Implementations/SignatureHelperTests.cs b/BuildingBlocks/test/Crypto.Tests/Implementations/SignatureHelperTests.cs similarity index 99% rename from BuildingBlocks/test/Crypto.Tests/Tests/Implementations/SignatureHelperTests.cs rename to BuildingBlocks/test/Crypto.Tests/Implementations/SignatureHelperTests.cs index 869635ca48..47ab106fd0 100644 --- a/BuildingBlocks/test/Crypto.Tests/Tests/Implementations/SignatureHelperTests.cs +++ b/BuildingBlocks/test/Crypto.Tests/Implementations/SignatureHelperTests.cs @@ -1,7 +1,7 @@ using Backbone.Crypto.Implementations; using NSec.Cryptography; -namespace Backbone.Crypto.Tests.Tests.Implementations; +namespace Backbone.Crypto.Tests.Implementations; public class SignatureHelperTests : AbstractTestsBase { diff --git a/BuildingBlocks/test/DevelopmentKit.Identity.Tests/IdentityAddressTests.cs b/BuildingBlocks/test/DevelopmentKit.Identity.Tests/ValueObjects/IdentityAddressTests.cs similarity index 98% rename from BuildingBlocks/test/DevelopmentKit.Identity.Tests/IdentityAddressTests.cs rename to BuildingBlocks/test/DevelopmentKit.Identity.Tests/ValueObjects/IdentityAddressTests.cs index 862aad65bd..4fe8c7b1e5 100644 --- a/BuildingBlocks/test/DevelopmentKit.Identity.Tests/IdentityAddressTests.cs +++ b/BuildingBlocks/test/DevelopmentKit.Identity.Tests/ValueObjects/IdentityAddressTests.cs @@ -1,6 +1,6 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; -namespace Backbone.DevelopmentKit.Identity.Tests; +namespace Backbone.DevelopmentKit.Identity.Tests.ValueObjects; public class IdentityAddressTests : AbstractTestsBase { diff --git a/BuildingBlocks/test/Tooling.Tests/Tests/DateTimeExtensionsTests.cs b/BuildingBlocks/test/Tooling.Tests/Extensions/DateTimeExtensionsTests.cs similarity index 98% rename from BuildingBlocks/test/Tooling.Tests/Tests/DateTimeExtensionsTests.cs rename to BuildingBlocks/test/Tooling.Tests/Extensions/DateTimeExtensionsTests.cs index a0092000eb..f1a4f32023 100644 --- a/BuildingBlocks/test/Tooling.Tests/Tests/DateTimeExtensionsTests.cs +++ b/BuildingBlocks/test/Tooling.Tests/Extensions/DateTimeExtensionsTests.cs @@ -1,7 +1,7 @@ using System.Collections; using Backbone.Tooling.Extensions; -namespace Backbone.Tooling.Tests.Tests; +namespace Backbone.Tooling.Tests.Extensions; public class DateTimeExtensionsTests : AbstractTestsBase { diff --git a/BuildingBlocks/test/Tooling.Tests/Tests/Extensions/ExpressionExtensionsTests.cs b/BuildingBlocks/test/Tooling.Tests/Extensions/ExpressionExtensionsTests.cs similarity index 98% rename from BuildingBlocks/test/Tooling.Tests/Tests/Extensions/ExpressionExtensionsTests.cs rename to BuildingBlocks/test/Tooling.Tests/Extensions/ExpressionExtensionsTests.cs index 439eedf53c..3a0afea9da 100644 --- a/BuildingBlocks/test/Tooling.Tests/Tests/Extensions/ExpressionExtensionsTests.cs +++ b/BuildingBlocks/test/Tooling.Tests/Extensions/ExpressionExtensionsTests.cs @@ -1,7 +1,7 @@ using System.Linq.Expressions; using Backbone.Tooling.Extensions; -namespace Backbone.Tooling.Tests.Tests.Extensions; +namespace Backbone.Tooling.Tests.Extensions; public class ExpressionExtensionsTests : AbstractTestsBase { diff --git a/BuildingBlocks/test/Tooling.Tests/Tests/UrlSafeBase64ToByteArrayJsonConverterTests.cs b/BuildingBlocks/test/Tooling.Tests/JsonConverters/UrlSafeBase64ToByteArrayJsonConverterTests.cs similarity index 95% rename from BuildingBlocks/test/Tooling.Tests/Tests/UrlSafeBase64ToByteArrayJsonConverterTests.cs rename to BuildingBlocks/test/Tooling.Tests/JsonConverters/UrlSafeBase64ToByteArrayJsonConverterTests.cs index 33cc660519..a30891eb77 100644 --- a/BuildingBlocks/test/Tooling.Tests/Tests/UrlSafeBase64ToByteArrayJsonConverterTests.cs +++ b/BuildingBlocks/test/Tooling.Tests/JsonConverters/UrlSafeBase64ToByteArrayJsonConverterTests.cs @@ -2,7 +2,7 @@ using System.Text.Json; using Backbone.Tooling.JsonConverters; -namespace Backbone.Tooling.Tests.Tests; +namespace Backbone.Tooling.Tests.JsonConverters; public class UrlSafeBase64ToByteArrayJsonConverterTests : AbstractTestsBase { diff --git a/Modules/Announcements/test/Announcements.Domain.Tests/Tests/AnnouncementTests.cs b/Modules/Announcements/test/Announcements.Domain.Tests/Entities/AnnouncementTests.cs similarity index 96% rename from Modules/Announcements/test/Announcements.Domain.Tests/Tests/AnnouncementTests.cs rename to Modules/Announcements/test/Announcements.Domain.Tests/Entities/AnnouncementTests.cs index dd70d1aa60..90a88f4b50 100644 --- a/Modules/Announcements/test/Announcements.Domain.Tests/Tests/AnnouncementTests.cs +++ b/Modules/Announcements/test/Announcements.Domain.Tests/Entities/AnnouncementTests.cs @@ -5,7 +5,7 @@ using Backbone.Tooling; using Backbone.UnitTestTools.Shouldly.Extensions; -namespace Backbone.Modules.Announcements.Domain.Tests.Tests; +namespace Backbone.Modules.Announcements.Domain.Tests.Entities; public class AnnouncementTests : AbstractTestsBase { diff --git a/Modules/Announcements/test/Announcements.Module.Tests/Tests/Announcements/Commands/CreateAnnouncement/ValidatorTests.cs b/Modules/Announcements/test/Announcements.Module.Tests/Features/Announcements/CreateAnnouncement/ValidatorTests.cs similarity index 98% rename from Modules/Announcements/test/Announcements.Module.Tests/Tests/Announcements/Commands/CreateAnnouncement/ValidatorTests.cs rename to Modules/Announcements/test/Announcements.Module.Tests/Features/Announcements/CreateAnnouncement/ValidatorTests.cs index cfe5ab406d..037e09308a 100644 --- a/Modules/Announcements/test/Announcements.Module.Tests/Tests/Announcements/Commands/CreateAnnouncement/ValidatorTests.cs +++ b/Modules/Announcements/test/Announcements.Module.Tests/Features/Announcements/CreateAnnouncement/ValidatorTests.cs @@ -3,7 +3,7 @@ using Backbone.Modules.Announcements.Domain.Entities; using FluentValidation.TestHelper; -namespace Backbone.Modules.Announcements.Module.Tests.Tests.Announcements.Commands.CreateAnnouncement; +namespace Backbone.Modules.Announcements.Module.Tests.Features.Announcements.CreateAnnouncement; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Announcements/test/Announcements.Module.Tests/Tests/Announcements/Commands/AnonymizeRecipient/HandlerTests.cs b/Modules/Announcements/test/Announcements.Module.Tests/Features/Announcements/DeleteAnnouncementRecipients/HandlerTests.cs similarity index 68% rename from Modules/Announcements/test/Announcements.Module.Tests/Tests/Announcements/Commands/AnonymizeRecipient/HandlerTests.cs rename to Modules/Announcements/test/Announcements.Module.Tests/Features/Announcements/DeleteAnnouncementRecipients/HandlerTests.cs index d79b23aec2..60b1dc441a 100644 --- a/Modules/Announcements/test/Announcements.Module.Tests/Tests/Announcements/Commands/AnonymizeRecipient/HandlerTests.cs +++ b/Modules/Announcements/test/Announcements.Module.Tests/Features/Announcements/DeleteAnnouncementRecipients/HandlerTests.cs @@ -1,11 +1,11 @@ -using DeleteAnnouncementRecipients = Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementRecipients; +using DeleteAnnouncementRecipientsSlice = Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementRecipients; using System.Linq.Expressions; using Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementRecipients; using Backbone.Modules.Announcements.Abstractions; using Backbone.Modules.Announcements.Domain.Entities; using FakeItEasy; -namespace Backbone.Modules.Announcements.Module.Tests.Tests.Announcements.Commands.AnonymizeRecipient; +namespace Backbone.Modules.Announcements.Module.Tests.Features.Announcements.DeleteAnnouncementRecipients; public class HandlerTests : AbstractTestsBase { @@ -16,7 +16,7 @@ public async Task DeleteRecipientForIdentityCommand_AnonymizesRecipientsSuccessf var mockRepository = A.Fake(); var handler = new Handler(mockRepository); - var command = new DeleteAnnouncementRecipients.Command { IdentityAddress = CreateRandomIdentityAddress().Value }; + var command = new DeleteAnnouncementRecipientsSlice.Command { IdentityAddress = CreateRandomIdentityAddress().Value }; // Act await handler.Handle(command, CancellationToken.None); diff --git a/Modules/Announcements/test/Announcements.Module.Tests/Tests/Announcements/IdentityDeleterTests.cs b/Modules/Announcements/test/Announcements.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs similarity index 85% rename from Modules/Announcements/test/Announcements.Module.Tests/Tests/Announcements/IdentityDeleterTests.cs rename to Modules/Announcements/test/Announcements.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs index f3cca5d7cc..094b45a9c6 100644 --- a/Modules/Announcements/test/Announcements.Module.Tests/Tests/Announcements/IdentityDeleterTests.cs +++ b/Modules/Announcements/test/Announcements.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs @@ -1,10 +1,10 @@ -using DeleteAnnouncementRecipients = Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementRecipients; +using DeleteAnnouncementRecipientsSlice = Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementRecipients; using Backbone.BuildingBlocks.Application.Identities; using Backbone.Modules.Announcements.Module.Features.Identities.DeleteIdentity; using FakeItEasy; using MediatR; -namespace Backbone.Modules.Announcements.Module.Tests.Tests.Announcements; +namespace Backbone.Modules.Announcements.Module.Tests.Features.Identities.DeleteIdentity; public class IdentityDeleterTests : AbstractTestsBase { @@ -21,7 +21,7 @@ public async Task Deleter_calls_correct_command() await deleter.Delete(identityAddress); // Assert - A.CallTo(() => mockMediator.Send(A + A.CallTo(() => mockMediator.Send(A .That .Matches(command => command.IdentityAddress == identityAddress), A._)) .MustHaveHappened(); diff --git a/Modules/Challenges/test/Challenges.Module.Tests/Tests/Challenges/Commands/DeleteChallengesOfIdentity/ValidatorTests.cs b/Modules/Challenges/test/Challenges.Module.Tests/Features/Challenges/DeleteChallengesOfIdentity/ValidatorTests.cs similarity index 91% rename from Modules/Challenges/test/Challenges.Module.Tests/Tests/Challenges/Commands/DeleteChallengesOfIdentity/ValidatorTests.cs rename to Modules/Challenges/test/Challenges.Module.Tests/Features/Challenges/DeleteChallengesOfIdentity/ValidatorTests.cs index 2d99963165..e9982c6c39 100644 --- a/Modules/Challenges/test/Challenges.Module.Tests/Tests/Challenges/Commands/DeleteChallengesOfIdentity/ValidatorTests.cs +++ b/Modules/Challenges/test/Challenges.Module.Tests/Features/Challenges/DeleteChallengesOfIdentity/ValidatorTests.cs @@ -3,7 +3,7 @@ using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Challenges.Module.Tests.Tests.Challenges.Commands.DeleteChallengesOfIdentity; +namespace Backbone.Modules.Challenges.Module.Tests.Features.Challenges.DeleteChallengesOfIdentity; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Challenges/test/Challenges.Module.Tests/Tests/Challenges/Queries/GetChallengeById/ValidatorTests.cs b/Modules/Challenges/test/Challenges.Module.Tests/Features/Challenges/GetChallengeById/ValidatorTests.cs similarity index 92% rename from Modules/Challenges/test/Challenges.Module.Tests/Tests/Challenges/Queries/GetChallengeById/ValidatorTests.cs rename to Modules/Challenges/test/Challenges.Module.Tests/Features/Challenges/GetChallengeById/ValidatorTests.cs index 31d638e688..0154421aad 100644 --- a/Modules/Challenges/test/Challenges.Module.Tests/Tests/Challenges/Queries/GetChallengeById/ValidatorTests.cs +++ b/Modules/Challenges/test/Challenges.Module.Tests/Features/Challenges/GetChallengeById/ValidatorTests.cs @@ -5,7 +5,7 @@ using FluentValidation.TestHelper; using Validator = Backbone.Modules.Challenges.Module.Features.Challenges.GetChallengeById.Validator; -namespace Backbone.Modules.Challenges.Module.Tests.Tests.Challenges.Queries.GetChallengeById; +namespace Backbone.Modules.Challenges.Module.Tests.Features.Challenges.GetChallengeById; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Challenges/test/Challenges.Module.Tests/Tests/Identities/IdentityDeleterTests.cs b/Modules/Challenges/test/Challenges.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs similarity index 79% rename from Modules/Challenges/test/Challenges.Module.Tests/Tests/Identities/IdentityDeleterTests.cs rename to Modules/Challenges/test/Challenges.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs index 8ca20c3d3f..37746ad2d0 100644 --- a/Modules/Challenges/test/Challenges.Module.Tests/Tests/Identities/IdentityDeleterTests.cs +++ b/Modules/Challenges/test/Challenges.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs @@ -1,10 +1,10 @@ -using DeleteChallengesOfIdentity = Backbone.Modules.Challenges.Module.Features.Challenges.DeleteChallengesOfIdentity; +using DeleteChallengesOfIdentitySlice = Backbone.Modules.Challenges.Module.Features.Challenges.DeleteChallengesOfIdentity; using Backbone.BuildingBlocks.Application.Identities; using Backbone.Modules.Challenges.Module.Features.Identities.DeleteIdentity; using FakeItEasy; using MediatR; -namespace Backbone.Modules.Challenges.Module.Tests.Tests.Identities; +namespace Backbone.Modules.Challenges.Module.Tests.Features.Identities.DeleteIdentity; public class IdentityDeleterTests : AbstractTestsBase { @@ -21,7 +21,7 @@ public async Task Deleter_calls_correct_command() await deleter.Delete(identityAddress); // Assert - A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); + A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); } [Fact] diff --git a/Modules/Devices/test/Devices.Domain.Tests/PnsHandleTests.cs b/Modules/Devices/test/Devices.Domain.Tests/Aggregates/PushNotifications/Handles/PnsHandleTests.cs similarity index 91% rename from Modules/Devices/test/Devices.Domain.Tests/PnsHandleTests.cs rename to Modules/Devices/test/Devices.Domain.Tests/Aggregates/PushNotifications/Handles/PnsHandleTests.cs index 1e5d7c0290..4a20a131b0 100644 --- a/Modules/Devices/test/Devices.Domain.Tests/PnsHandleTests.cs +++ b/Modules/Devices/test/Devices.Domain.Tests/Aggregates/PushNotifications/Handles/PnsHandleTests.cs @@ -1,7 +1,7 @@ using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications; using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications.Handles; -namespace Backbone.Modules.Devices.Domain.Tests; +namespace Backbone.Modules.Devices.Domain.Tests.Aggregates.PushNotifications.Handles; public class PnsHandleTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Domain.Tests/PushNotifications/PnsRegistrationTests.cs b/Modules/Devices/test/Devices.Domain.Tests/Aggregates/PushNotifications/PnsRegistrationTests.cs similarity index 96% rename from Modules/Devices/test/Devices.Domain.Tests/PushNotifications/PnsRegistrationTests.cs rename to Modules/Devices/test/Devices.Domain.Tests/Aggregates/PushNotifications/PnsRegistrationTests.cs index 362abb8010..b4963e79e5 100644 --- a/Modules/Devices/test/Devices.Domain.Tests/PushNotifications/PnsRegistrationTests.cs +++ b/Modules/Devices/test/Devices.Domain.Tests/Aggregates/PushNotifications/PnsRegistrationTests.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications.Handles; using Backbone.Tooling; -namespace Backbone.Modules.Devices.Domain.Tests.PushNotifications; +namespace Backbone.Modules.Devices.Domain.Tests.Aggregates.PushNotifications; public class PnsRegistrationTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Domain.Tests/Tiers/TierIdTests.cs b/Modules/Devices/test/Devices.Domain.Tests/Aggregates/Tier/TierIdTests.cs similarity index 97% rename from Modules/Devices/test/Devices.Domain.Tests/Tiers/TierIdTests.cs rename to Modules/Devices/test/Devices.Domain.Tests/Aggregates/Tier/TierIdTests.cs index e50994e3f6..a61848ff4b 100644 --- a/Modules/Devices/test/Devices.Domain.Tests/Tiers/TierIdTests.cs +++ b/Modules/Devices/test/Devices.Domain.Tests/Aggregates/Tier/TierIdTests.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Devices.Domain.Aggregates.Tier; -namespace Backbone.Modules.Devices.Domain.Tests.Tiers; +namespace Backbone.Modules.Devices.Domain.Tests.Aggregates.Tier; public class TierIdTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Domain.Tests/Tiers/TierNameTests.cs b/Modules/Devices/test/Devices.Domain.Tests/Aggregates/Tier/TierNameTests.cs similarity index 94% rename from Modules/Devices/test/Devices.Domain.Tests/Tiers/TierNameTests.cs rename to Modules/Devices/test/Devices.Domain.Tests/Aggregates/Tier/TierNameTests.cs index a1f60afcb2..4944cba9a8 100644 --- a/Modules/Devices/test/Devices.Domain.Tests/Tiers/TierNameTests.cs +++ b/Modules/Devices/test/Devices.Domain.Tests/Aggregates/Tier/TierNameTests.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Devices.Domain.Aggregates.Tier; -namespace Backbone.Modules.Devices.Domain.Tests.Tiers; +namespace Backbone.Modules.Devices.Domain.Tests.Aggregates.Tier; public class TierNameTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Domain.Tests/Tiers/TierTests.cs b/Modules/Devices/test/Devices.Domain.Tests/Aggregates/Tier/TierTests.cs similarity index 78% rename from Modules/Devices/test/Devices.Domain.Tests/Tiers/TierTests.cs rename to Modules/Devices/test/Devices.Domain.Tests/Aggregates/Tier/TierTests.cs index a9eaa2d6e6..8649127cbb 100644 --- a/Modules/Devices/test/Devices.Domain.Tests/Tiers/TierTests.cs +++ b/Modules/Devices/test/Devices.Domain.Tests/Aggregates/Tier/TierTests.cs @@ -1,6 +1,7 @@ +using TierEntity = Backbone.Modules.Devices.Domain.Aggregates.Tier.Tier; using Backbone.Modules.Devices.Domain.Aggregates.Tier; -namespace Backbone.Modules.Devices.Domain.Tests.Tiers; +namespace Backbone.Modules.Devices.Domain.Tests.Aggregates.Tier; public class TierTests : AbstractTestsBase { @@ -8,7 +9,7 @@ public class TierTests : AbstractTestsBase public void Can_create_tier_with_valid_properties() { var tierName = TierName.Create("my-test-tier").Value; - var tier = new Tier(tierName); + var tier = new TierEntity(tierName); tier.Id.ShouldNotBeNull(); tier.Name.ShouldBe(tierName); @@ -20,7 +21,7 @@ public void Can_create_tier_with_valid_properties() public void Basic_Tier_cannot_be_deleted() { // Arrange - var tier = new Tier(TierName.BASIC_DEFAULT_NAME); + var tier = new TierEntity(TierName.BASIC_DEFAULT_NAME); // Act var error = tier.CanBeDeleted(clientsCount: 0, identitiesCount: 0); @@ -34,7 +35,7 @@ public void Basic_Tier_cannot_be_deleted() public void Queued_for_deletion_tier_cannot_be_deleted() { // Act - var error = Tier.QUEUED_FOR_DELETION.CanBeDeleted(clientsCount: 0, identitiesCount: 0); + var error = TierEntity.QUEUED_FOR_DELETION.CanBeDeleted(clientsCount: 0, identitiesCount: 0); // Assert error.ShouldNotBeNull(); @@ -45,7 +46,7 @@ public void Queued_for_deletion_tier_cannot_be_deleted() public void Tier_with_related_identities_cannot_be_deleted() { // Arrange - var tier = new Tier(TierName.Create("tier-name").Value); + var tier = new TierEntity(TierName.Create("tier-name").Value); // Act var error = tier.CanBeDeleted(clientsCount: 0, identitiesCount: 1); @@ -59,7 +60,7 @@ public void Tier_with_related_identities_cannot_be_deleted() public void Tier_with_related_clients_cannot_be_deleted() { // Arrange - var tier = new Tier(TierName.Create("tier-name").Value); + var tier = new TierEntity(TierName.Create("tier-name").Value); // Act var error = tier.CanBeDeleted(clientsCount: 1, identitiesCount: 0); diff --git a/Modules/Devices/test/Devices.Domain.Tests/Identities/IdentityDeletionProcessAuditLogEntries/AssociateUsernamesTests.cs b/Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/AssociateUsernamesTests.cs similarity index 89% rename from Modules/Devices/test/Devices.Domain.Tests/Identities/IdentityDeletionProcessAuditLogEntries/AssociateUsernamesTests.cs rename to Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/AssociateUsernamesTests.cs index 8c503968e7..5048447ec9 100644 --- a/Modules/Devices/test/Devices.Domain.Tests/Identities/IdentityDeletionProcessAuditLogEntries/AssociateUsernamesTests.cs +++ b/Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/AssociateUsernamesTests.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.UnitTestTools.Shouldly.Extensions; -namespace Backbone.Modules.Devices.Domain.Tests.Identities.IdentityDeletionProcessAuditLogEntries; +namespace Backbone.Modules.Devices.Domain.Tests.Entities.Identities; public class AssociateUsernamesTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Domain.Tests/Identities/IdentityDeletionProcessAuditLogEntries/CanBeCleanedUpTests.cs b/Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/CanBeCleanedUpTests.cs similarity index 94% rename from Modules/Devices/test/Devices.Domain.Tests/Identities/IdentityDeletionProcessAuditLogEntries/CanBeCleanedUpTests.cs rename to Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/CanBeCleanedUpTests.cs index 7a30b7fea4..76ae62ec3e 100644 --- a/Modules/Devices/test/Devices.Domain.Tests/Identities/IdentityDeletionProcessAuditLogEntries/CanBeCleanedUpTests.cs +++ b/Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/CanBeCleanedUpTests.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.Tooling; -namespace Backbone.Modules.Devices.Domain.Tests.Identities.IdentityDeletionProcessAuditLogEntries; +namespace Backbone.Modules.Devices.Domain.Tests.Entities.Identities; public class CanBeCleanedUpTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Domain.Tests/Identities/CancelDeletionProcessTests.cs b/Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/CancelDeletionProcessTests.cs similarity index 98% rename from Modules/Devices/test/Devices.Domain.Tests/Identities/CancelDeletionProcessTests.cs rename to Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/CancelDeletionProcessTests.cs index c4a5f77d1f..7636b31019 100644 --- a/Modules/Devices/test/Devices.Domain.Tests/Identities/CancelDeletionProcessTests.cs +++ b/Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/CancelDeletionProcessTests.cs @@ -5,7 +5,7 @@ using Backbone.Tooling; using Backbone.UnitTestTools.Shouldly.Extensions; -namespace Backbone.Modules.Devices.Domain.Tests.Identities; +namespace Backbone.Modules.Devices.Domain.Tests.Entities.Identities; public class CancelDeletionProcessTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Domain.Tests/Identities/ChangeFeatureFlagsTests.cs b/Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/ChangeFeatureFlagsTests.cs similarity index 97% rename from Modules/Devices/test/Devices.Domain.Tests/Identities/ChangeFeatureFlagsTests.cs rename to Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/ChangeFeatureFlagsTests.cs index e03f1489d8..0fb192ff64 100644 --- a/Modules/Devices/test/Devices.Domain.Tests/Identities/ChangeFeatureFlagsTests.cs +++ b/Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/ChangeFeatureFlagsTests.cs @@ -3,7 +3,7 @@ using Backbone.Modules.Devices.Domain.Tests.Shouldly.Extensions; using Backbone.UnitTestTools.Shouldly.Extensions; -namespace Backbone.Modules.Devices.Domain.Tests.Identities; +namespace Backbone.Modules.Devices.Domain.Tests.Entities.Identities; public class ChangeFeatureFlagsTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Domain.Tests/Identities/ChangeTierTests.cs b/Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/ChangeTierTests.cs similarity index 97% rename from Modules/Devices/test/Devices.Domain.Tests/Identities/ChangeTierTests.cs rename to Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/ChangeTierTests.cs index 54aff91cf7..e6c985e36e 100644 --- a/Modules/Devices/test/Devices.Domain.Tests/Identities/ChangeTierTests.cs +++ b/Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/ChangeTierTests.cs @@ -3,7 +3,7 @@ using Backbone.Modules.Devices.Domain.Aggregates.Tier; using Backbone.UnitTestTools.Shouldly.Extensions; -namespace Backbone.Modules.Devices.Domain.Tests.Identities; +namespace Backbone.Modules.Devices.Domain.Tests.Entities.Identities; public class ChangeTierTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Domain.Tests/Domain/CommunicationLanguageTests.cs b/Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/CommunicationLanguageTests.cs similarity index 93% rename from Modules/Devices/test/Devices.Domain.Tests/Domain/CommunicationLanguageTests.cs rename to Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/CommunicationLanguageTests.cs index 7cd20b72ef..608c02cf9d 100644 --- a/Modules/Devices/test/Devices.Domain.Tests/Domain/CommunicationLanguageTests.cs +++ b/Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/CommunicationLanguageTests.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Devices.Domain.Entities.Identities; -namespace Backbone.Modules.Devices.Domain.Tests.Domain; +namespace Backbone.Modules.Devices.Domain.Tests.Entities.Identities; public class CommunicationLanguageTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Domain.Tests/Identities/DeletionGracePeriodReminderSentTests.cs b/Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/DeletionProcessGracePeriodTests.cs similarity index 98% rename from Modules/Devices/test/Devices.Domain.Tests/Identities/DeletionGracePeriodReminderSentTests.cs rename to Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/DeletionProcessGracePeriodTests.cs index 63b5443ff3..01fc06b25c 100644 --- a/Modules/Devices/test/Devices.Domain.Tests/Identities/DeletionGracePeriodReminderSentTests.cs +++ b/Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/DeletionProcessGracePeriodTests.cs @@ -4,7 +4,7 @@ using Backbone.Tooling; using Backbone.UnitTestTools.Shouldly.Extensions; -namespace Backbone.Modules.Devices.Domain.Tests.Identities; +namespace Backbone.Modules.Devices.Domain.Tests.Entities.Identities; public class DeletionProcessGracePeriodTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Domain.Tests/Identities/DeletionStartedTests.cs b/Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/DeletionStartedTests.cs similarity index 97% rename from Modules/Devices/test/Devices.Domain.Tests/Identities/DeletionStartedTests.cs rename to Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/DeletionStartedTests.cs index 8e9ee41a34..268a190dcc 100644 --- a/Modules/Devices/test/Devices.Domain.Tests/Identities/DeletionStartedTests.cs +++ b/Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/DeletionStartedTests.cs @@ -5,7 +5,7 @@ using Backbone.Tooling; using Backbone.UnitTestTools.Shouldly.Extensions; -namespace Backbone.Modules.Devices.Domain.Tests.Identities; +namespace Backbone.Modules.Devices.Domain.Tests.Entities.Identities; public class DeletionStartedTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Domain.Tests/Domain/DeviceTests.cs b/Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/DeviceTests.cs similarity index 98% rename from Modules/Devices/test/Devices.Domain.Tests/Domain/DeviceTests.cs rename to Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/DeviceTests.cs index 6e5a73a38d..66919767b3 100644 --- a/Modules/Devices/test/Devices.Domain.Tests/Domain/DeviceTests.cs +++ b/Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/DeviceTests.cs @@ -4,7 +4,7 @@ using Backbone.Tooling; using Backbone.UnitTestTools.Shouldly.Extensions; -namespace Backbone.Modules.Devices.Domain.Tests.Domain; +namespace Backbone.Modules.Devices.Domain.Tests.Entities.Identities; public class DeviceTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Domain.Tests/Identities/IdentityDeletionProcessAuditLogEntries/IsAssociatedToUserTests.cs b/Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/IsAssociatedToUserTests.cs similarity index 94% rename from Modules/Devices/test/Devices.Domain.Tests/Identities/IdentityDeletionProcessAuditLogEntries/IsAssociatedToUserTests.cs rename to Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/IsAssociatedToUserTests.cs index 3e3d0a6236..26c8bb8327 100644 --- a/Modules/Devices/test/Devices.Domain.Tests/Identities/IdentityDeletionProcessAuditLogEntries/IsAssociatedToUserTests.cs +++ b/Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/IsAssociatedToUserTests.cs @@ -1,7 +1,7 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Devices.Domain.Entities.Identities; -namespace Backbone.Modules.Devices.Domain.Tests.Identities.IdentityDeletionProcessAuditLogEntries; +namespace Backbone.Modules.Devices.Domain.Tests.Entities.Identities; public class IsAssociatedToUserTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Domain.Tests/Identities/IsGracePeriodOverTests.cs b/Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/IsGracePeriodOverTests.cs similarity index 92% rename from Modules/Devices/test/Devices.Domain.Tests/Identities/IsGracePeriodOverTests.cs rename to Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/IsGracePeriodOverTests.cs index 4301c5e954..32d0213019 100644 --- a/Modules/Devices/test/Devices.Domain.Tests/Identities/IsGracePeriodOverTests.cs +++ b/Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/IsGracePeriodOverTests.cs @@ -1,7 +1,7 @@ using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.Tooling; -namespace Backbone.Modules.Devices.Domain.Tests.Identities; +namespace Backbone.Modules.Devices.Domain.Tests.Entities.Identities; public class IsGracePeriodOverTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Domain.Tests/Identities/StartDeletionProcessTests.cs b/Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/StartDeletionProcessTests.cs similarity index 98% rename from Modules/Devices/test/Devices.Domain.Tests/Identities/StartDeletionProcessTests.cs rename to Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/StartDeletionProcessTests.cs index 0bca79ef37..f1773b2454 100644 --- a/Modules/Devices/test/Devices.Domain.Tests/Identities/StartDeletionProcessTests.cs +++ b/Modules/Devices/test/Devices.Domain.Tests/Entities/Identities/StartDeletionProcessTests.cs @@ -7,7 +7,7 @@ using Backbone.Tooling; using Backbone.UnitTestTools.Shouldly.Extensions; -namespace Backbone.Modules.Devices.Domain.Tests.Identities; +namespace Backbone.Modules.Devices.Domain.Tests.Entities.Identities; public class StartDeletionProcessTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Domain.Tests/OAuthClients/OAuthClientTests.cs b/Modules/Devices/test/Devices.Domain.Tests/Entities/OAuthClientTests.cs similarity index 97% rename from Modules/Devices/test/Devices.Domain.Tests/OAuthClients/OAuthClientTests.cs rename to Modules/Devices/test/Devices.Domain.Tests/Entities/OAuthClientTests.cs index fccf6ce29b..e744e81f2c 100644 --- a/Modules/Devices/test/Devices.Domain.Tests/OAuthClients/OAuthClientTests.cs +++ b/Modules/Devices/test/Devices.Domain.Tests/Entities/OAuthClientTests.cs @@ -4,7 +4,7 @@ using Backbone.Tooling; using Backbone.UnitTestTools.Shouldly.Extensions; -namespace Backbone.Modules.Devices.Domain.Tests.OAuthClients; +namespace Backbone.Modules.Devices.Domain.Tests.Entities; public class OAuthClientTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/Connectors/Apns/ApnsMessageBuilderTests.cs b/Modules/Devices/test/Devices.Infrastructure.Tests/PushNotifications/Connectors/Apns/ApnsMessageBuilderTests.cs similarity index 97% rename from Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/Connectors/Apns/ApnsMessageBuilderTests.cs rename to Modules/Devices/test/Devices.Infrastructure.Tests/PushNotifications/Connectors/Apns/ApnsMessageBuilderTests.cs index 5d1c8f0889..85fb4193bc 100644 --- a/Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/Connectors/Apns/ApnsMessageBuilderTests.cs +++ b/Modules/Devices/test/Devices.Infrastructure.Tests/PushNotifications/Connectors/Apns/ApnsMessageBuilderTests.cs @@ -7,7 +7,7 @@ using Backbone.Tooling; using Backbone.UnitTestTools.Shouldly.Extensions; -namespace Backbone.Modules.Devices.Infrastructure.Tests.Tests.PushNotifications.Connectors.Apns; +namespace Backbone.Modules.Devices.Infrastructure.Tests.PushNotifications.Connectors.Apns; public class ApnsMessageBuilderTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/Connectors/Apns/ApplePushNotificationServiceConnectorTests.cs b/Modules/Devices/test/Devices.Infrastructure.Tests/PushNotifications/Connectors/Apns/ApplePushNotificationServiceConnectorTests.cs similarity index 97% rename from Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/Connectors/Apns/ApplePushNotificationServiceConnectorTests.cs rename to Modules/Devices/test/Devices.Infrastructure.Tests/PushNotifications/Connectors/Apns/ApplePushNotificationServiceConnectorTests.cs index 91cba84629..25c79062d2 100644 --- a/Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/Connectors/Apns/ApplePushNotificationServiceConnectorTests.cs +++ b/Modules/Devices/test/Devices.Infrastructure.Tests/PushNotifications/Connectors/Apns/ApplePushNotificationServiceConnectorTests.cs @@ -9,7 +9,7 @@ using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; -namespace Backbone.Modules.Devices.Infrastructure.Tests.Tests.PushNotifications.Connectors.Apns; +namespace Backbone.Modules.Devices.Infrastructure.Tests.PushNotifications.Connectors.Apns; public class ApplePushNotificationServiceConnectorTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/Connectors/Apns/JwtGeneratorTests.cs b/Modules/Devices/test/Devices.Infrastructure.Tests/PushNotifications/Connectors/Apns/JwtGeneratorTests.cs similarity index 97% rename from Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/Connectors/Apns/JwtGeneratorTests.cs rename to Modules/Devices/test/Devices.Infrastructure.Tests/PushNotifications/Connectors/Apns/JwtGeneratorTests.cs index c66a9a2184..30081c2e7b 100644 --- a/Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/Connectors/Apns/JwtGeneratorTests.cs +++ b/Modules/Devices/test/Devices.Infrastructure.Tests/PushNotifications/Connectors/Apns/JwtGeneratorTests.cs @@ -3,7 +3,7 @@ using Backbone.Tooling; using Backbone.UnitTestTools.Shouldly.Extensions; -namespace Backbone.Modules.Devices.Infrastructure.Tests.Tests.PushNotifications.Connectors.Apns; +namespace Backbone.Modules.Devices.Infrastructure.Tests.PushNotifications.Connectors.Apns; [CollectionDefinition(nameof(JwtGeneratorTests), DisableParallelization = true)] [Collection(nameof(JwtGeneratorTests))] diff --git a/Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/Connectors/Fcm/FcmMessageBuilderTests.cs b/Modules/Devices/test/Devices.Infrastructure.Tests/PushNotifications/Connectors/Fcm/FcmMessageBuilderTests.cs similarity index 96% rename from Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/Connectors/Fcm/FcmMessageBuilderTests.cs rename to Modules/Devices/test/Devices.Infrastructure.Tests/PushNotifications/Connectors/Fcm/FcmMessageBuilderTests.cs index 0afabdd27b..497f6e1a4f 100644 --- a/Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/Connectors/Fcm/FcmMessageBuilderTests.cs +++ b/Modules/Devices/test/Devices.Infrastructure.Tests/PushNotifications/Connectors/Fcm/FcmMessageBuilderTests.cs @@ -6,7 +6,7 @@ using Backbone.Tooling; using Backbone.UnitTestTools.Shouldly.Extensions; -namespace Backbone.Modules.Devices.Infrastructure.Tests.Tests.PushNotifications.Connectors.Fcm; +namespace Backbone.Modules.Devices.Infrastructure.Tests.PushNotifications.Connectors.Fcm; public class FcmMessageBuilderTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/Connectors/Sse/ServerSentEventsConnectorTests.cs b/Modules/Devices/test/Devices.Infrastructure.Tests/PushNotifications/Connectors/Sse/ServerSentEventsConnectorTests.cs similarity index 96% rename from Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/Connectors/Sse/ServerSentEventsConnectorTests.cs rename to Modules/Devices/test/Devices.Infrastructure.Tests/PushNotifications/Connectors/Sse/ServerSentEventsConnectorTests.cs index 921a4a9411..73c46a29b1 100644 --- a/Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/Connectors/Sse/ServerSentEventsConnectorTests.cs +++ b/Modules/Devices/test/Devices.Infrastructure.Tests/PushNotifications/Connectors/Sse/ServerSentEventsConnectorTests.cs @@ -4,7 +4,7 @@ using FakeItEasy; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Devices.Infrastructure.Tests.Tests.PushNotifications.Connectors.Sse; +namespace Backbone.Modules.Devices.Infrastructure.Tests.PushNotifications.Connectors.Sse; public class ServerSentEventsConnectorTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/Connectors/Sse/SseMessageBuilderTests.cs b/Modules/Devices/test/Devices.Infrastructure.Tests/PushNotifications/Connectors/Sse/SseMessageBuilderTests.cs similarity index 89% rename from Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/Connectors/Sse/SseMessageBuilderTests.cs rename to Modules/Devices/test/Devices.Infrastructure.Tests/PushNotifications/Connectors/Sse/SseMessageBuilderTests.cs index 4cf409567a..e0b90bee69 100644 --- a/Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/Connectors/Sse/SseMessageBuilderTests.cs +++ b/Modules/Devices/test/Devices.Infrastructure.Tests/PushNotifications/Connectors/Sse/SseMessageBuilderTests.cs @@ -1,7 +1,7 @@ using Backbone.Modules.Devices.Infrastructure.PushNotifications.Connectors.Sse; using Backbone.UnitTestTools.Shouldly.Extensions; -namespace Backbone.Modules.Devices.Infrastructure.Tests.Tests.PushNotifications.Connectors.Sse; +namespace Backbone.Modules.Devices.Infrastructure.Tests.PushNotifications.Connectors.Sse; public class SseMessageBuilderTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/NotificationTexts/PushNotificationTextProviderTests.cs b/Modules/Devices/test/Devices.Infrastructure.Tests/PushNotifications/NotificationTexts/PushNotificationTextProviderTests.cs similarity index 97% rename from Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/NotificationTexts/PushNotificationTextProviderTests.cs rename to Modules/Devices/test/Devices.Infrastructure.Tests/PushNotifications/NotificationTexts/PushNotificationTextProviderTests.cs index 2558dcefbf..cdc2fd0d0d 100644 --- a/Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/NotificationTexts/PushNotificationTextProviderTests.cs +++ b/Modules/Devices/test/Devices.Infrastructure.Tests/PushNotifications/NotificationTexts/PushNotificationTextProviderTests.cs @@ -5,7 +5,7 @@ using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.Modules.Devices.Infrastructure.PushNotifications.NotificationTexts; -namespace Backbone.Modules.Devices.Infrastructure.Tests.Tests.PushNotifications.NotificationTexts; +namespace Backbone.Modules.Devices.Infrastructure.Tests.PushNotifications.NotificationTexts; public class PushNotificationTextProviderTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/PushServiceTests.cs b/Modules/Devices/test/Devices.Infrastructure.Tests/PushNotifications/PushServiceTests.cs similarity index 97% rename from Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/PushServiceTests.cs rename to Modules/Devices/test/Devices.Infrastructure.Tests/PushNotifications/PushServiceTests.cs index 18c87f94d0..b429afeed6 100644 --- a/Modules/Devices/test/Devices.Infrastructure.Tests/Tests/PushNotifications/PushServiceTests.cs +++ b/Modules/Devices/test/Devices.Infrastructure.Tests/PushNotifications/PushServiceTests.cs @@ -7,7 +7,7 @@ using FakeItEasy; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Devices.Infrastructure.Tests.Tests.PushNotifications; +namespace Backbone.Modules.Devices.Infrastructure.Tests.PushNotifications; public class PushServiceTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Devices/Commands/DeleteDevice/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Devices/DeleteDevice/ValidatorTests.cs similarity index 92% rename from Modules/Devices/test/Devices.Module.Tests/Tests/Devices/Commands/DeleteDevice/ValidatorTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Features/Devices/DeleteDevice/ValidatorTests.cs index 3c03d6c037..d1531fc4c9 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Devices/Commands/DeleteDevice/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Devices/DeleteDevice/ValidatorTests.cs @@ -4,7 +4,7 @@ using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Devices.Module.Tests.Tests.Devices.Commands.DeleteDevice; +namespace Backbone.Modules.Devices.Module.Tests.Features.Devices.DeleteDevice; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Devices/Queries/ListDevices/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Devices/ListDevices/ValidatorTests.cs similarity index 93% rename from Modules/Devices/test/Devices.Module.Tests/Tests/Devices/Queries/ListDevices/ValidatorTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Features/Devices/ListDevices/ValidatorTests.cs index 32363d6bf5..799d860260 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Devices/Queries/ListDevices/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Devices/ListDevices/ValidatorTests.cs @@ -5,7 +5,7 @@ using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Devices.Module.Tests.Tests.Devices.Queries.ListDevices; +namespace Backbone.Modules.Devices.Module.Tests.Features.Devices.ListDevices; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/DomainEvents/Incoming/AnnouncementCreatedDomainEventHandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/DomainEvents/AnnouncementCreated/HandlerTests.cs similarity index 81% rename from Modules/Devices/test/Devices.Module.Tests/Tests/DomainEvents/Incoming/AnnouncementCreatedDomainEventHandlerTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Features/DomainEvents/AnnouncementCreated/HandlerTests.cs index f964e65366..88b0311962 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/DomainEvents/Incoming/AnnouncementCreatedDomainEventHandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/DomainEvents/AnnouncementCreated/HandlerTests.cs @@ -1,18 +1,18 @@ -using AnnouncementCreated = Backbone.Modules.Devices.Module.Features.DomainEvents.AnnouncementCreated; +using AnnouncementCreatedSlice = Backbone.Modules.Devices.Module.Features.DomainEvents.AnnouncementCreated; using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.Modules.Announcements.Contracts.DomainEvents; using FakeItEasy; -namespace Backbone.Modules.Devices.Module.Tests.Tests.DomainEvents.Incoming; +namespace Backbone.Modules.Devices.Module.Tests.Features.DomainEvents.AnnouncementCreated; -public class AnnouncementCreatedDomainEventHandlerTests : AbstractTestsBase +public class HandlerTests : AbstractTestsBase { [Fact] public async Task Sends_push_notification_for_announcement() { // Arrange var mockPushSenderService = A.Fake(); - var handler = new AnnouncementCreated.Handler(mockPushSenderService); + var handler = new AnnouncementCreatedSlice.Handler(mockPushSenderService); // Act await handler.Handle(new AnnouncementCreatedDomainEvent @@ -31,7 +31,7 @@ public async Task Does_not_send_a_push_notification_for_silent_announcement() { // Arrange var mockPushSenderService = A.Fake(); - var handler = new AnnouncementCreated.Handler(mockPushSenderService); + var handler = new AnnouncementCreatedSlice.Handler(mockPushSenderService); // Act await handler.Handle(new AnnouncementCreatedDomainEvent diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/PushNotifications/DatawalletModified/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/DomainEvents/DatawalletModificationCreated/HandlerTests.cs similarity index 78% rename from Modules/Devices/test/Devices.Module.Tests/Tests/PushNotifications/DatawalletModified/HandlerTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Features/DomainEvents/DatawalletModificationCreated/HandlerTests.cs index 16504dd4f4..88a5f29484 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/PushNotifications/DatawalletModified/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/DomainEvents/DatawalletModificationCreated/HandlerTests.cs @@ -1,10 +1,10 @@ -using DatawalletModificationCreated = Backbone.Modules.Devices.Module.Features.DomainEvents.DatawalletModificationCreated; +using DatawalletModificationCreatedSlice = Backbone.Modules.Devices.Module.Features.DomainEvents.DatawalletModificationCreated; using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.Datawallet; using Backbone.Modules.Synchronization.Contracts.DomainEvents; using FakeItEasy; -namespace Backbone.Modules.Devices.Module.Tests.Tests.PushNotifications.DatawalletModified; +namespace Backbone.Modules.Devices.Module.Tests.Features.DomainEvents.DatawalletModificationCreated; public class HandlerTests : AbstractTestsBase { @@ -15,7 +15,7 @@ public async Task Creating_a_Datawallet_modification_sends_a_filtered_notificati var modifiedByDevice = CreateRandomDeviceId(); var identity = CreateRandomIdentityAddress(); var mockSender = A.Fake(); - var handler = new DatawalletModificationCreated.Handler(mockSender); + var handler = new DatawalletModificationCreatedSlice.Handler(mockSender); var domainEvent = new DatawalletModifiedDomainEvent { Identity = identity, ModifiedByDevice = modifiedByDevice }; // Act diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/DomainEvents/Incoming/ExternalEventCreatedDomainEventHandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/DomainEvents/ExternalEventCreated/HandlerTests.cs similarity index 85% rename from Modules/Devices/test/Devices.Module.Tests/Tests/DomainEvents/Incoming/ExternalEventCreatedDomainEventHandlerTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Features/DomainEvents/ExternalEventCreated/HandlerTests.cs index 7a25afad7e..839422476b 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/DomainEvents/Incoming/ExternalEventCreatedDomainEventHandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/DomainEvents/ExternalEventCreated/HandlerTests.cs @@ -1,13 +1,13 @@ -using ExternalEventCreated = Backbone.Modules.Devices.Module.Features.DomainEvents.ExternalEventCreated; +using ExternalEventCreatedSlice = Backbone.Modules.Devices.Module.Features.DomainEvents.ExternalEventCreated; using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.ExternalEvents; using Backbone.Modules.Synchronization.Contracts.DomainEvents; using FakeItEasy; -namespace Backbone.Modules.Devices.Module.Tests.Tests.DomainEvents.Incoming; +namespace Backbone.Modules.Devices.Module.Tests.Features.DomainEvents.ExternalEventCreated; -public class ExternalEventCreatedDomainEventHandlerTests : AbstractTestsBase +public class HandlerTests : AbstractTestsBase { [Fact] public async Task Sends_a_push_notification_to_the_owner_of_the_external_event() @@ -17,7 +17,7 @@ public async Task Sends_a_push_notification_to_the_owner_of_the_external_event() var fakeIdentitiesRepository = A.Fake(); var identity = TestDataGenerator.CreateIdentity(); - var handler = new ExternalEventCreated.Handler(mockPushSender, fakeIdentitiesRepository); + var handler = new ExternalEventCreatedSlice.Handler(mockPushSender, fakeIdentitiesRepository); var externalEventOwner = CreateRandomIdentityAddress(); @@ -42,7 +42,7 @@ public async Task Does_not_send_push_notification_if_owner_is_in_status_to_be_de var fakeIdentitiesRepository = A.Fake(); var identity = TestDataGenerator.CreateIdentity(); - var handler = new ExternalEventCreated.Handler(mockPushSender, fakeIdentitiesRepository); + var handler = new ExternalEventCreatedSlice.Handler(mockPushSender, fakeIdentitiesRepository); var externalEventOwner = CreateRandomIdentityAddress(); @@ -69,7 +69,7 @@ public async Task Does_not_send_a_push_notification_when_delivery_of_the_externa var fakeIdentitiesRepository = A.Fake(); var identity = TestDataGenerator.CreateIdentity(); - var handler = new ExternalEventCreated.Handler(mockPushSender, fakeIdentitiesRepository); + var handler = new ExternalEventCreatedSlice.Handler(mockPushSender, fakeIdentitiesRepository); var externalEventOwner = CreateRandomIdentityAddress(); diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/DomainEvents/Incoming/TokenLockedDomainEventHandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/DomainEvents/TokenLocked/HandlerTests.cs similarity index 77% rename from Modules/Devices/test/Devices.Module.Tests/Tests/DomainEvents/Incoming/TokenLockedDomainEventHandlerTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Features/DomainEvents/TokenLocked/HandlerTests.cs index 0c1d23f3dd..70b6dc1a82 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/DomainEvents/Incoming/TokenLockedDomainEventHandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/DomainEvents/TokenLocked/HandlerTests.cs @@ -1,4 +1,4 @@ -using TokenLocked = Backbone.Modules.Devices.Module.Features.DomainEvents.TokenLocked; +using TokenLockedSlice = Backbone.Modules.Devices.Module.Features.DomainEvents.TokenLocked; using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Devices.Abstractions; @@ -6,9 +6,9 @@ using Backbone.Modules.Tokens.Contracts.DomainEvents; using FakeItEasy; -namespace Backbone.Modules.Devices.Module.Tests.Tests.DomainEvents.Incoming; +namespace Backbone.Modules.Devices.Module.Tests.Features.DomainEvents.TokenLocked; -public class TokenLockedDomainEventHandlerTests : AbstractTestsBase +public class HandlerTests : AbstractTestsBase { [Fact] public async Task Sends_a_push_notification() @@ -20,7 +20,7 @@ public async Task Sends_a_push_notification() A.CallTo(() => fakeRepository.Get(A._, A._, A._)).Returns(identity); - var handler = new TokenLocked.Handler(mockPushSender, fakeRepository); + var handler = new TokenLockedSlice.Handler(mockPushSender, fakeRepository); var domainEvent = new TokenLockedDomainEvent { TokenId = "TOK00000000000000001", CreatedBy = identity.Address }; // Act diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/CancelDeletionProcess/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/CancelDeletionProcess/HandlerTests.cs similarity index 97% rename from Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/CancelDeletionProcess/HandlerTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Features/Identities/CancelDeletionProcess/HandlerTests.cs index 68859dfcd1..54fb61ab95 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/CancelDeletionProcess/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/CancelDeletionProcess/HandlerTests.cs @@ -8,7 +8,7 @@ using Backbone.Modules.Devices.Domain.Entities.Identities; using FakeItEasy; -namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities.Commands.CancelDeletionProcess; +namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.CancelDeletionProcess; public class HandlerTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/CancelDeletionProcess/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/CancelDeletionProcess/ValidatorTests.cs similarity index 92% rename from Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/CancelDeletionProcess/ValidatorTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Features/Identities/CancelDeletionProcess/ValidatorTests.cs index 6ea27e88f3..f4d5271b4d 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/CancelDeletionProcess/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/CancelDeletionProcess/ValidatorTests.cs @@ -4,7 +4,7 @@ using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities.Commands.CancelDeletionProcess; +namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.CancelDeletionProcess; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/IdentityDeleterTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs similarity index 69% rename from Modules/Devices/test/Devices.Module.Tests/Tests/Identities/IdentityDeleterTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs index 297df7cf2e..894874a80f 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/IdentityDeleterTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs @@ -1,11 +1,11 @@ -using DeleteIdentity = Backbone.Modules.Devices.Module.Features.Identities.DeleteIdentity; -using DeletePnsRegistrationsOfIdentity = Backbone.Modules.Devices.Module.Features.PushNotifications.DeletePnsRegistrationsOfIdentity; +using DeleteIdentitySlice = Backbone.Modules.Devices.Module.Features.Identities.DeleteIdentity; +using DeletePnsRegistrationsOfIdentitySlice = Backbone.Modules.Devices.Module.Features.PushNotifications.DeletePnsRegistrationsOfIdentity; using Backbone.BuildingBlocks.Application.Identities; using Backbone.Modules.Devices.Module.Features.Identities.DeleteIdentity; using FakeItEasy; using MediatR; -namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities; +namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.DeleteIdentity; public class IdentityDeleterTests : AbstractTestsBase { @@ -22,8 +22,8 @@ public async Task Deleter_calls_correct_command() await deleter.Delete(identityAddress); // Assert - A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); - A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); + A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); + A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); } [Fact] diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/DeleteIdentity/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/DeleteIdentity/ValidatorTests.cs similarity index 92% rename from Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/DeleteIdentity/ValidatorTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Features/Identities/DeleteIdentity/ValidatorTests.cs index d1d8dc0a7c..9d58871b8a 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/DeleteIdentity/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/DeleteIdentity/ValidatorTests.cs @@ -3,7 +3,7 @@ using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities.Commands.DeleteIdentity; +namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.DeleteIdentity; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessAsOwner/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/GetDeletionProcessAsOwner/ValidatorTests.cs similarity index 92% rename from Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessAsOwner/ValidatorTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Features/Identities/GetDeletionProcessAsOwner/ValidatorTests.cs index b3bec64ee2..7bfd80147f 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessAsOwner/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/GetDeletionProcessAsOwner/ValidatorTests.cs @@ -4,7 +4,7 @@ using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities.Queries.GetDeletionProcessAsOwner; +namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.GetDeletionProcessAsOwner; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessAsSupport/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/GetDeletionProcessAsSupport/ValidatorTests.cs similarity index 94% rename from Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessAsSupport/ValidatorTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Features/Identities/GetDeletionProcessAsSupport/ValidatorTests.cs index 85871a09cd..0ee550cd30 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessAsSupport/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/GetDeletionProcessAsSupport/ValidatorTests.cs @@ -4,7 +4,7 @@ using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities.Queries.GetDeletionProcessAsSupport; +namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.GetDeletionProcessAsSupport; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetIdentity/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/GetIdentity/ValidatorTests.cs similarity index 92% rename from Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetIdentity/ValidatorTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Features/Identities/GetIdentity/ValidatorTests.cs index dd1d05b680..bf5f400267 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetIdentity/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/GetIdentity/ValidatorTests.cs @@ -3,7 +3,7 @@ using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities.Queries.GetIdentity; +namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.GetIdentity; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessesAsSupport/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/ListDeletionProcessesAsSupport/ValidatorTests.cs similarity index 63% rename from Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessesAsSupport/ValidatorTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Features/Identities/ListDeletionProcessesAsSupport/ValidatorTests.cs index 2a218fb408..50d4075ff2 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessesAsSupport/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/ListDeletionProcessesAsSupport/ValidatorTests.cs @@ -1,9 +1,9 @@ -using ListDeletionProcessesAsSupport = Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsSupport; +using ListDeletionProcessesAsSupportSlice = Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsSupport; using Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsSupport; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities.Queries.GetDeletionProcessesAsSupport; +namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.ListDeletionProcessesAsSupport; public class ValidatorTests : AbstractTestsBase { @@ -14,7 +14,7 @@ public void Happy_path() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new ListDeletionProcessesAsSupport.Query { IdentityAddress = CreateRandomIdentityAddress() }); + var validationResult = validator.TestValidate(new ListDeletionProcessesAsSupportSlice.Query { IdentityAddress = CreateRandomIdentityAddress() }); // Assert validationResult.ShouldNotHaveAnyValidationErrors(); @@ -27,9 +27,9 @@ public void Fails_when_identity_address_is_invalid() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new ListDeletionProcessesAsSupport.Query { IdentityAddress = "some-invalid-address" }); + var validationResult = validator.TestValidate(new ListDeletionProcessesAsSupportSlice.Query { IdentityAddress = "some-invalid-address" }); // Assert - validationResult.ShouldHaveValidationErrorForId(nameof(ListDeletionProcessesAsSupport.Query.IdentityAddress)); + validationResult.ShouldHaveValidationErrorForId(nameof(ListDeletionProcessesAsSupportSlice.Query.IdentityAddress)); } } diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessesAuditLogs/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/ListDeletionProcessesAuditLogs/HandlerTests.cs similarity index 87% rename from Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessesAuditLogs/HandlerTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Features/Identities/ListDeletionProcessesAuditLogs/HandlerTests.cs index 1085a6a8a7..cd59993dc3 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessesAuditLogs/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/ListDeletionProcessesAuditLogs/HandlerTests.cs @@ -1,4 +1,4 @@ -using ListDeletionProcessesAuditLogs = Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; +using ListDeletionProcessesAuditLogsSlice = Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; using Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.Modules.Devices.Infrastructure.Persistence.Database; @@ -11,7 +11,7 @@ using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; -namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities.Queries.GetDeletionProcessesAuditLogs; +namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.ListDeletionProcessesAuditLogs; public class HandlerTests : AbstractTestsBase { @@ -36,7 +36,7 @@ public async Task Gets_successfully() var handler = CreateHandler(_actDbContext); // Act - var result = await handler.Handle(new ListDeletionProcessesAuditLogs.Query { IdentityAddress = identity.Address }, CancellationToken.None); + var result = await handler.Handle(new ListDeletionProcessesAuditLogsSlice.Query { IdentityAddress = identity.Address }, CancellationToken.None); // Assert result.ShouldHaveCount(identity.DeletionProcesses.SelectMany(d => d.AuditLog).Count()); @@ -54,7 +54,7 @@ public async Task Returns_empty_list_for_non_existent_address() var handler = CreateHandler(_actDbContext); // Act - var result = await handler.Handle(new ListDeletionProcessesAuditLogs.Query { IdentityAddress = "non-existent-identity-address" }, CancellationToken.None); + var result = await handler.Handle(new ListDeletionProcessesAuditLogsSlice.Query { IdentityAddress = "non-existent-identity-address" }, CancellationToken.None); // Assert result.ShouldHaveCount(0); @@ -74,7 +74,7 @@ public async Task Gets_for_multiple_deletion_processes() var handler = CreateHandler(_actDbContext); // Act - var result = await handler.Handle(new ListDeletionProcessesAuditLogs.Query { IdentityAddress = identity.Address }, CancellationToken.None); + var result = await handler.Handle(new ListDeletionProcessesAuditLogsSlice.Query { IdentityAddress = identity.Address }, CancellationToken.None); // Assert result.ShouldHaveCount(identity.DeletionProcesses.SelectMany(d => d.AuditLog).Count()); @@ -93,7 +93,7 @@ public async Task Gets_for_deletion_process_in_status_deleting() var handler = CreateHandler(_actDbContext); // Act - var result = await handler.Handle(new ListDeletionProcessesAuditLogs.Query { IdentityAddress = identity.Address }, CancellationToken.None); + var result = await handler.Handle(new ListDeletionProcessesAuditLogsSlice.Query { IdentityAddress = identity.Address }, CancellationToken.None); // Assert result.ShouldHaveCount(identity.DeletionProcesses.SelectMany(d => d.AuditLog).Count()); @@ -112,7 +112,7 @@ public async Task Gets_for_deleted_identity() var handler = CreateHandler(_actDbContext); // Act - var result = await handler.Handle(new ListDeletionProcessesAuditLogs.Query { IdentityAddress = identity.Address }, CancellationToken.None); + var result = await handler.Handle(new ListDeletionProcessesAuditLogsSlice.Query { IdentityAddress = identity.Address }, CancellationToken.None); // Assert result.ShouldHaveCount(identity.DeletionProcesses.SelectMany(d => d.AuditLog).Count()); diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessesAuditLogs/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/ListDeletionProcessesAuditLogs/ValidatorTests.cs similarity index 63% rename from Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessesAuditLogs/ValidatorTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Features/Identities/ListDeletionProcessesAuditLogs/ValidatorTests.cs index f4161b5c17..b39b766fb2 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/GetDeletionProcessesAuditLogs/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/ListDeletionProcessesAuditLogs/ValidatorTests.cs @@ -1,9 +1,9 @@ -using ListDeletionProcessesAuditLogs = Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; +using ListDeletionProcessesAuditLogsSlice = Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; using Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities.Queries.GetDeletionProcessesAuditLogs; +namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.ListDeletionProcessesAuditLogs; public class ValidatorTests : AbstractTestsBase { @@ -14,7 +14,7 @@ public void Happy_path() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new ListDeletionProcessesAuditLogs.Query { IdentityAddress = CreateRandomIdentityAddress() }); + var validationResult = validator.TestValidate(new ListDeletionProcessesAuditLogsSlice.Query { IdentityAddress = CreateRandomIdentityAddress() }); // Assert validationResult.ShouldNotHaveAnyValidationErrors(); @@ -27,9 +27,9 @@ public void Fails_when_identity_address_is_invalid() var validator = new Validator(); // Act - var validationResult = validator.TestValidate(new ListDeletionProcessesAuditLogs.Query { IdentityAddress = "some-invalid-address" }); + var validationResult = validator.TestValidate(new ListDeletionProcessesAuditLogsSlice.Query { IdentityAddress = "some-invalid-address" }); // Assert - validationResult.ShouldHaveValidationErrorForId(nameof(ListDeletionProcessesAuditLogs.Query.IdentityAddress)); + validationResult.ShouldHaveValidationErrorForId(nameof(ListDeletionProcessesAuditLogsSlice.Query.IdentityAddress)); } } diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/ListIdentities/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/ListIdentities/ValidatorTests.cs similarity index 93% rename from Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/ListIdentities/ValidatorTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Features/Identities/ListIdentities/ValidatorTests.cs index bea41f22bb..12bf796a11 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Queries/ListIdentities/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/ListIdentities/ValidatorTests.cs @@ -4,7 +4,7 @@ using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities.Queries.ListIdentities; +namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.ListIdentities; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/LogDeletionProcess/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/LogDeletionProcess/ValidatorTests.cs similarity index 92% rename from Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/LogDeletionProcess/ValidatorTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Features/Identities/LogDeletionProcess/ValidatorTests.cs index 0520820606..ec3d1ad870 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/LogDeletionProcess/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/LogDeletionProcess/ValidatorTests.cs @@ -3,7 +3,7 @@ using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities.Commands.LogDeletionProcess; +namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.LogDeletionProcess; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/SendDeletionProcessGracePeriodReminders/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/SendDeletionProcessGracePeriodReminders/HandlerTests.cs similarity index 98% rename from Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/SendDeletionProcessGracePeriodReminders/HandlerTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Features/Identities/SendDeletionProcessGracePeriodReminders/HandlerTests.cs index 8c3e25a378..fd574b1aea 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/SendDeletionProcessGracePeriodReminders/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/SendDeletionProcessGracePeriodReminders/HandlerTests.cs @@ -8,7 +8,7 @@ using FakeItEasy; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities.Commands.SendDeletionProcessGracePeriodReminders; +namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.SendDeletionProcessGracePeriodReminders; public class HandlerTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/StartDeletionProcess/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/StartDeletionProcess/HandlerTests.cs similarity index 97% rename from Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/StartDeletionProcess/HandlerTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Features/Identities/StartDeletionProcess/HandlerTests.cs index 1593bb68e4..dedbacfa78 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/StartDeletionProcess/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/StartDeletionProcess/HandlerTests.cs @@ -9,7 +9,7 @@ using Backbone.Modules.Devices.Domain.Entities.Identities; using FakeItEasy; -namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities.Commands.StartDeletionProcess; +namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.StartDeletionProcess; public class HandlerTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/UpdateDeletionProcesses/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/TriggerRipeDeletionProcesses/HandlerTests.cs similarity index 87% rename from Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/UpdateDeletionProcesses/HandlerTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Features/Identities/TriggerRipeDeletionProcesses/HandlerTests.cs index 54744571ea..d50aaf6d58 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/UpdateDeletionProcesses/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/TriggerRipeDeletionProcesses/HandlerTests.cs @@ -1,4 +1,4 @@ -using TriggerRipeDeletionProcesses = Backbone.Modules.Devices.Module.Features.Identities.TriggerRipeDeletionProcesses; +using TriggerRipeDeletionProcessesSlice = Backbone.Modules.Devices.Module.Features.Identities.TriggerRipeDeletionProcesses; using System.Linq.Expressions; using Backbone.Modules.Devices.Module.Features.Identities.TriggerRipeDeletionProcesses; using Backbone.Modules.Devices.Abstractions; @@ -7,7 +7,7 @@ using Backbone.UnitTestTools.Shouldly.Extensions; using FakeItEasy; -namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities.Commands.UpdateDeletionProcesses; +namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.TriggerRipeDeletionProcesses; public class HandlerTests : AbstractTestsBase { @@ -20,7 +20,7 @@ public async Task Empty_response_if_no_identities_are_past_DeletionGracePeriodEn var handler = CreateHandler(mockIdentitiesRepository); // Act - var response = await handler.Handle(new TriggerRipeDeletionProcesses.Command(), CancellationToken.None); + var response = await handler.Handle(new TriggerRipeDeletionProcessesSlice.Command(), CancellationToken.None); // Assert response.Results.ShouldBeEmpty(); @@ -38,7 +38,7 @@ public async Task Response_contains_expected_identities() var handler = CreateHandler(identitiesRepository); // Act - var response = await handler.Handle(new TriggerRipeDeletionProcesses.Command(), CancellationToken.None); + var response = await handler.Handle(new TriggerRipeDeletionProcessesSlice.Command(), CancellationToken.None); // Assert response.Results.ShouldHaveCount(1); @@ -59,7 +59,7 @@ public async Task Deletion_process_started_successfully() var handler = CreateHandler(identitiesRepository); // Act - var response = await handler.Handle(new TriggerRipeDeletionProcesses.Command(), CancellationToken.None); + var response = await handler.Handle(new TriggerRipeDeletionProcessesSlice.Command(), CancellationToken.None); // Assert response.Results.ShouldHaveCount(1); diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/UpdateIdentity/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/UpdateIdentity/HandlerTests.cs similarity index 98% rename from Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/UpdateIdentity/HandlerTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Features/Identities/UpdateIdentity/HandlerTests.cs index 08ac7e8ac6..4548ffc394 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/UpdateIdentity/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/UpdateIdentity/HandlerTests.cs @@ -8,7 +8,7 @@ using Backbone.Modules.Devices.Domain.Entities.Identities; using FakeItEasy; -namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities.Commands.UpdateIdentity; +namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.UpdateIdentity; public class HandlerTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/UpdateIdentity/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/UpdateIdentity/ValidatorTests.cs similarity index 94% rename from Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/UpdateIdentity/ValidatorTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Features/Identities/UpdateIdentity/ValidatorTests.cs index 337fb50e5a..8a987c6e34 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Identities/Commands/UpdateIdentity/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/UpdateIdentity/ValidatorTests.cs @@ -4,7 +4,7 @@ using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Devices.Module.Tests.Tests.Identities.Commands.UpdateIdentity; +namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.UpdateIdentity; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/PushNotifications/DeletePnsRegistrationsOfIdentity/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/PushNotifications/DeletePnsRegistrationsOfIdentity/ValidatorTests.cs similarity index 91% rename from Modules/Devices/test/Devices.Module.Tests/Tests/PushNotifications/DeletePnsRegistrationsOfIdentity/ValidatorTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Features/PushNotifications/DeletePnsRegistrationsOfIdentity/ValidatorTests.cs index fe1d420805..7081055d47 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/PushNotifications/DeletePnsRegistrationsOfIdentity/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/PushNotifications/DeletePnsRegistrationsOfIdentity/ValidatorTests.cs @@ -3,7 +3,7 @@ using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Devices.Module.Tests.Tests.PushNotifications.DeletePnsRegistrationsOfIdentity; +namespace Backbone.Modules.Devices.Module.Tests.Features.PushNotifications.DeletePnsRegistrationsOfIdentity; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/PushNotifications/UpdateDeviceRegistration/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/PushNotifications/UpdateDeviceRegistration/HandlerTests.cs similarity index 95% rename from Modules/Devices/test/Devices.Module.Tests/Tests/PushNotifications/UpdateDeviceRegistration/HandlerTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Features/PushNotifications/UpdateDeviceRegistration/HandlerTests.cs index 71e7553ee8..faf01d9c91 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/PushNotifications/UpdateDeviceRegistration/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/PushNotifications/UpdateDeviceRegistration/HandlerTests.cs @@ -8,7 +8,7 @@ using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications.Handles; using FakeItEasy; -namespace Backbone.Modules.Devices.Module.Tests.Tests.PushNotifications.UpdateDeviceRegistration; +namespace Backbone.Modules.Devices.Module.Tests.Features.PushNotifications.UpdateDeviceRegistration; public class HandlerTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Tiers/Commands/CreateTier/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Tiers/CreateTier/ValidatorTests.cs similarity index 93% rename from Modules/Devices/test/Devices.Module.Tests/Tests/Tiers/Commands/CreateTier/ValidatorTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Features/Tiers/CreateTier/ValidatorTests.cs index 84fe8ebe2b..490be41bbd 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Tiers/Commands/CreateTier/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Tiers/CreateTier/ValidatorTests.cs @@ -5,7 +5,7 @@ using FluentValidation.TestHelper; using Validator = Backbone.Modules.Devices.Module.Features.Tiers.CreateTier.Validator; -namespace Backbone.Modules.Devices.Module.Tests.Tests.Tiers.Commands.CreateTier; +namespace Backbone.Modules.Devices.Module.Tests.Features.Tiers.CreateTier; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Tiers/Commands/DeleteTier/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Tiers/DeleteTier/HandlerTests.cs similarity index 97% rename from Modules/Devices/test/Devices.Module.Tests/Tests/Tiers/Commands/DeleteTier/HandlerTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Features/Tiers/DeleteTier/HandlerTests.cs index ab03824432..7c6def40a6 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Tiers/Commands/DeleteTier/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Tiers/DeleteTier/HandlerTests.cs @@ -7,7 +7,7 @@ using Backbone.Modules.Devices.Domain.Aggregates.Tier; using FakeItEasy; -namespace Backbone.Modules.Devices.Module.Tests.Tests.Tiers.Commands.DeleteTier; +namespace Backbone.Modules.Devices.Module.Tests.Features.Tiers.DeleteTier; public class HandlerTests : AbstractTestsBase { diff --git a/Modules/Devices/test/Devices.Module.Tests/Tests/Tiers/Commands/DeleteTier/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Tiers/DeleteTier/ValidatorTests.cs similarity index 92% rename from Modules/Devices/test/Devices.Module.Tests/Tests/Tiers/Commands/DeleteTier/ValidatorTests.cs rename to Modules/Devices/test/Devices.Module.Tests/Features/Tiers/DeleteTier/ValidatorTests.cs index ec62b52849..c8eaca4d10 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Tests/Tiers/Commands/DeleteTier/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Tiers/DeleteTier/ValidatorTests.cs @@ -4,7 +4,7 @@ using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Devices.Module.Tests.Tests.Tiers.Commands.DeleteTier; +namespace Backbone.Modules.Devices.Module.Tests.Features.Tiers.DeleteTier; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Files/test/Files.Domain.Tests/Tests/Files/ClaimOwnershipTests.cs b/Modules/Files/test/Files.Domain.Tests/Entities/ClaimOwnershipTests.cs similarity index 98% rename from Modules/Files/test/Files.Domain.Tests/Tests/Files/ClaimOwnershipTests.cs rename to Modules/Files/test/Files.Domain.Tests/Entities/ClaimOwnershipTests.cs index d4454443e3..aa6e3251be 100644 --- a/Modules/Files/test/Files.Domain.Tests/Tests/Files/ClaimOwnershipTests.cs +++ b/Modules/Files/test/Files.Domain.Tests/Entities/ClaimOwnershipTests.cs @@ -4,7 +4,7 @@ using Backbone.UnitTestTools.Shouldly.Extensions; using File = Backbone.Modules.Files.Domain.Entities.File; -namespace Backbone.Modules.Files.Domain.Tests.Tests.Files; +namespace Backbone.Modules.Files.Domain.Tests.Entities; public class ClaimOwnershipTests : AbstractTestsBase { diff --git a/Modules/Files/test/Files.Domain.Tests/Tests/Files/CreationTests.cs b/Modules/Files/test/Files.Domain.Tests/Entities/CreationTests.cs similarity index 91% rename from Modules/Files/test/Files.Domain.Tests/Tests/Files/CreationTests.cs rename to Modules/Files/test/Files.Domain.Tests/Entities/CreationTests.cs index dcb561f67d..da1a341b0e 100644 --- a/Modules/Files/test/Files.Domain.Tests/Tests/Files/CreationTests.cs +++ b/Modules/Files/test/Files.Domain.Tests/Entities/CreationTests.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Files.Domain.Tests.Helpers; -namespace Backbone.Modules.Files.Domain.Tests.Tests.Files; +namespace Backbone.Modules.Files.Domain.Tests.Entities; public class CreationTests : AbstractTestsBase { diff --git a/Modules/Files/test/Files.Domain.Tests/Tests/Files/DeleteTests.cs b/Modules/Files/test/Files.Domain.Tests/Entities/DeleteTests.cs similarity index 93% rename from Modules/Files/test/Files.Domain.Tests/Tests/Files/DeleteTests.cs rename to Modules/Files/test/Files.Domain.Tests/Entities/DeleteTests.cs index 8084423748..b6fca05db3 100644 --- a/Modules/Files/test/Files.Domain.Tests/Tests/Files/DeleteTests.cs +++ b/Modules/Files/test/Files.Domain.Tests/Entities/DeleteTests.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Domain.Exceptions; using Backbone.Modules.Files.Domain.Tests.Helpers; -namespace Backbone.Modules.Files.Domain.Tests.Tests.Files; +namespace Backbone.Modules.Files.Domain.Tests.Entities; public class DeleteTests : AbstractTestsBase { diff --git a/Modules/Files/test/Files.Domain.Tests/Tests/Files/RegenerateOwnershipToken.cs b/Modules/Files/test/Files.Domain.Tests/Entities/RegenerateOwnershipToken.cs similarity index 95% rename from Modules/Files/test/Files.Domain.Tests/Tests/Files/RegenerateOwnershipToken.cs rename to Modules/Files/test/Files.Domain.Tests/Entities/RegenerateOwnershipToken.cs index 9c590c1643..69ad127ab9 100644 --- a/Modules/Files/test/Files.Domain.Tests/Tests/Files/RegenerateOwnershipToken.cs +++ b/Modules/Files/test/Files.Domain.Tests/Entities/RegenerateOwnershipToken.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Files.Domain.Entities; using Backbone.Modules.Files.Domain.Tests.Helpers; -namespace Backbone.Modules.Files.Domain.Tests.Tests.Files; +namespace Backbone.Modules.Files.Domain.Tests.Entities; public class RegenerateOwnershipToken { diff --git a/Modules/Files/test/Files.Domain.Tests/Tests/Files/ValidateOwnershipTokenTest.cs b/Modules/Files/test/Files.Domain.Tests/Entities/ValidateOwnershipTokenTest.cs similarity index 98% rename from Modules/Files/test/Files.Domain.Tests/Tests/Files/ValidateOwnershipTokenTest.cs rename to Modules/Files/test/Files.Domain.Tests/Entities/ValidateOwnershipTokenTest.cs index 4d7d9d2803..b2fa05f840 100644 --- a/Modules/Files/test/Files.Domain.Tests/Tests/Files/ValidateOwnershipTokenTest.cs +++ b/Modules/Files/test/Files.Domain.Tests/Entities/ValidateOwnershipTokenTest.cs @@ -3,7 +3,7 @@ using Backbone.Modules.Files.Domain.Tests.Helpers; using Backbone.UnitTestTools.Shouldly.Extensions; -namespace Backbone.Modules.Files.Domain.Tests.Tests.Files; +namespace Backbone.Modules.Files.Domain.Tests.Entities; public class ValidateOwnershipTokenTest { diff --git a/Modules/Files/test/Files.Infrastructure.Tests/Tests/Repositories/FilesRepositoryTests.cs b/Modules/Files/test/Files.Infrastructure.Tests/Persistence/Database/Repository/FilesRepositoryTests.cs similarity index 98% rename from Modules/Files/test/Files.Infrastructure.Tests/Tests/Repositories/FilesRepositoryTests.cs rename to Modules/Files/test/Files.Infrastructure.Tests/Persistence/Database/Repository/FilesRepositoryTests.cs index dc0d8d3ca1..160e15da67 100644 --- a/Modules/Files/test/Files.Infrastructure.Tests/Tests/Repositories/FilesRepositoryTests.cs +++ b/Modules/Files/test/Files.Infrastructure.Tests/Persistence/Database/Repository/FilesRepositoryTests.cs @@ -12,7 +12,7 @@ using Microsoft.Extensions.Options; using File = Backbone.Modules.Files.Domain.Entities.File; -namespace Backbone.Modules.Files.Infrastructure.Tests.Tests.Repositories; +namespace Backbone.Modules.Files.Infrastructure.Tests.Persistence.Database.Repository; public class FilesRepositoryTests : AbstractTestsBase { diff --git a/Modules/Files/test/Files.Module.Tests/Tests/Files/Queries/GetFileContent/ValidatorTests.cs b/Modules/Files/test/Files.Module.Tests/Features/Files/GetFileContent/ValidatorTests.cs similarity index 92% rename from Modules/Files/test/Files.Module.Tests/Tests/Files/Queries/GetFileContent/ValidatorTests.cs rename to Modules/Files/test/Files.Module.Tests/Features/Files/GetFileContent/ValidatorTests.cs index cce6d206fd..37f46628e6 100644 --- a/Modules/Files/test/Files.Module.Tests/Tests/Files/Queries/GetFileContent/ValidatorTests.cs +++ b/Modules/Files/test/Files.Module.Tests/Features/Files/GetFileContent/ValidatorTests.cs @@ -4,7 +4,7 @@ using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Files.Module.Tests.Tests.Files.Queries.GetFileContent; +namespace Backbone.Modules.Files.Module.Tests.Features.Files.GetFileContent; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Files/test/Files.Module.Tests/Tests/Files/Queries/GetFileMetadata/ValidatorTests.cs b/Modules/Files/test/Files.Module.Tests/Features/Files/GetFileMetadata/ValidatorTests.cs similarity index 92% rename from Modules/Files/test/Files.Module.Tests/Tests/Files/Queries/GetFileMetadata/ValidatorTests.cs rename to Modules/Files/test/Files.Module.Tests/Features/Files/GetFileMetadata/ValidatorTests.cs index 3a9d83c3f1..211a79e7cb 100644 --- a/Modules/Files/test/Files.Module.Tests/Tests/Files/Queries/GetFileMetadata/ValidatorTests.cs +++ b/Modules/Files/test/Files.Module.Tests/Features/Files/GetFileMetadata/ValidatorTests.cs @@ -4,7 +4,7 @@ using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Files.Module.Tests.Tests.Files.Queries.GetFileMetadata; +namespace Backbone.Modules.Files.Module.Tests.Features.Files.GetFileMetadata; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Files/test/Files.Module.Tests/Tests/Files/Queries/ListFileMetadata/ValidatorTests.cs b/Modules/Files/test/Files.Module.Tests/Features/Files/ListFileMetadata/ValidatorTests.cs similarity index 93% rename from Modules/Files/test/Files.Module.Tests/Tests/Files/Queries/ListFileMetadata/ValidatorTests.cs rename to Modules/Files/test/Files.Module.Tests/Features/Files/ListFileMetadata/ValidatorTests.cs index fc37a2d938..e987ec1fdf 100644 --- a/Modules/Files/test/Files.Module.Tests/Tests/Files/Queries/ListFileMetadata/ValidatorTests.cs +++ b/Modules/Files/test/Files.Module.Tests/Features/Files/ListFileMetadata/ValidatorTests.cs @@ -5,7 +5,7 @@ using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Files.Module.Tests.Tests.Files.Queries.ListFileMetadata; +namespace Backbone.Modules.Files.Module.Tests.Features.Files.ListFileMetadata; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Files/test/Files.Module.Tests/Tests/Identities/Commands/DeleteFilesOfIdentity/HandlerTests.cs b/Modules/Files/test/Files.Module.Tests/Features/Identities/DeleteFilesOfIdentity/HandlerTests.cs similarity index 92% rename from Modules/Files/test/Files.Module.Tests/Tests/Identities/Commands/DeleteFilesOfIdentity/HandlerTests.cs rename to Modules/Files/test/Files.Module.Tests/Features/Identities/DeleteFilesOfIdentity/HandlerTests.cs index 96ceaa2eef..2aa56d4040 100644 --- a/Modules/Files/test/Files.Module.Tests/Tests/Identities/Commands/DeleteFilesOfIdentity/HandlerTests.cs +++ b/Modules/Files/test/Files.Module.Tests/Features/Identities/DeleteFilesOfIdentity/HandlerTests.cs @@ -5,7 +5,7 @@ using FakeItEasy; using File = Backbone.Modules.Files.Domain.Entities.File; -namespace Backbone.Modules.Files.Module.Tests.Tests.Identities.Commands.DeleteFilesOfIdentity; +namespace Backbone.Modules.Files.Module.Tests.Features.Identities.DeleteFilesOfIdentity; public class HandlerTests : AbstractTestsBase { diff --git a/Modules/Files/test/Files.Module.Tests/Tests/Identities/Commands/DeleteFilesOfIdentity/ValidatorTests.cs b/Modules/Files/test/Files.Module.Tests/Features/Identities/DeleteFilesOfIdentity/ValidatorTests.cs similarity index 92% rename from Modules/Files/test/Files.Module.Tests/Tests/Identities/Commands/DeleteFilesOfIdentity/ValidatorTests.cs rename to Modules/Files/test/Files.Module.Tests/Features/Identities/DeleteFilesOfIdentity/ValidatorTests.cs index 9d29205a75..673b709db6 100644 --- a/Modules/Files/test/Files.Module.Tests/Tests/Identities/Commands/DeleteFilesOfIdentity/ValidatorTests.cs +++ b/Modules/Files/test/Files.Module.Tests/Features/Identities/DeleteFilesOfIdentity/ValidatorTests.cs @@ -3,7 +3,7 @@ using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Files.Module.Tests.Tests.Identities.Commands.DeleteFilesOfIdentity; +namespace Backbone.Modules.Files.Module.Tests.Features.Identities.DeleteFilesOfIdentity; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Files/test/Files.Module.Tests/Tests/Identities/IdentityDeleterTests.cs b/Modules/Files/test/Files.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs similarity index 80% rename from Modules/Files/test/Files.Module.Tests/Tests/Identities/IdentityDeleterTests.cs rename to Modules/Files/test/Files.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs index cf1a0deea9..701fd0427f 100644 --- a/Modules/Files/test/Files.Module.Tests/Tests/Identities/IdentityDeleterTests.cs +++ b/Modules/Files/test/Files.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs @@ -1,10 +1,10 @@ -using DeleteFilesOfIdentity = Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; +using DeleteFilesOfIdentitySlice = Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; using Backbone.BuildingBlocks.Application.Identities; using Backbone.Modules.Files.Module.Features.Identities.DeleteIdentity; using FakeItEasy; using MediatR; -namespace Backbone.Modules.Files.Module.Tests.Tests.Identities; +namespace Backbone.Modules.Files.Module.Tests.Features.Identities.DeleteIdentity; public class IdentityDeleterTests : AbstractTestsBase { @@ -21,7 +21,7 @@ public async Task Deleter_calls_correct_command() await deleter.Delete(identityAddress); // Assert - A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); + A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); } [Fact] diff --git a/Modules/Messages/test/Messages.Domain.Tests/Messages/AnonymizeParticipantTests.cs b/Modules/Messages/test/Messages.Domain.Tests/Entities/AnonymizeParticipantTests.cs similarity index 98% rename from Modules/Messages/test/Messages.Domain.Tests/Messages/AnonymizeParticipantTests.cs rename to Modules/Messages/test/Messages.Domain.Tests/Entities/AnonymizeParticipantTests.cs index 2197e3ef7a..6d0381425e 100644 --- a/Modules/Messages/test/Messages.Domain.Tests/Messages/AnonymizeParticipantTests.cs +++ b/Modules/Messages/test/Messages.Domain.Tests/Entities/AnonymizeParticipantTests.cs @@ -4,7 +4,7 @@ using Backbone.Modules.Messages.Domain.Ids; using Backbone.UnitTestTools.Shouldly.Extensions; -namespace Backbone.Modules.Messages.Domain.Tests.Messages; +namespace Backbone.Modules.Messages.Domain.Tests.Entities; public class AnonymizeParticipantTests : AbstractTestsBase { diff --git a/Modules/Messages/test/Messages.Domain.Tests/Messages/CreationTests.cs b/Modules/Messages/test/Messages.Domain.Tests/Entities/CreationTests.cs similarity index 95% rename from Modules/Messages/test/Messages.Domain.Tests/Messages/CreationTests.cs rename to Modules/Messages/test/Messages.Domain.Tests/Entities/CreationTests.cs index aab4fee147..9b42573068 100644 --- a/Modules/Messages/test/Messages.Domain.Tests/Messages/CreationTests.cs +++ b/Modules/Messages/test/Messages.Domain.Tests/Entities/CreationTests.cs @@ -3,7 +3,7 @@ using Backbone.Modules.Messages.Domain.Ids; using Backbone.UnitTestTools.Shouldly.Extensions; -namespace Backbone.Modules.Messages.Domain.Tests.Messages; +namespace Backbone.Modules.Messages.Domain.Tests.Entities; public class CreationTests : AbstractTestsBase { diff --git a/Modules/Messages/test/Messages.Domain.Tests/Messages/DecomposeForTests.cs b/Modules/Messages/test/Messages.Domain.Tests/Entities/DecomposeForTests.cs similarity index 99% rename from Modules/Messages/test/Messages.Domain.Tests/Messages/DecomposeForTests.cs rename to Modules/Messages/test/Messages.Domain.Tests/Entities/DecomposeForTests.cs index 8af38a3270..9894620bfc 100644 --- a/Modules/Messages/test/Messages.Domain.Tests/Messages/DecomposeForTests.cs +++ b/Modules/Messages/test/Messages.Domain.Tests/Entities/DecomposeForTests.cs @@ -6,7 +6,7 @@ using Backbone.UnitTestTools.Extensions; using Backbone.UnitTestTools.Shouldly.Extensions; -namespace Backbone.Modules.Messages.Domain.Tests.Messages; +namespace Backbone.Modules.Messages.Domain.Tests.Entities; public class DecomposeForTests : AbstractTestsBase { diff --git a/Modules/Messages/test/Messages.Domain.Tests/Relationships/EnsureSendingMessagesIsAllowedTests.cs b/Modules/Messages/test/Messages.Domain.Tests/Entities/EnsureSendingMessagesIsAllowedTests.cs similarity index 97% rename from Modules/Messages/test/Messages.Domain.Tests/Relationships/EnsureSendingMessagesIsAllowedTests.cs rename to Modules/Messages/test/Messages.Domain.Tests/Entities/EnsureSendingMessagesIsAllowedTests.cs index 4d1b1d4397..90f2c1839c 100644 --- a/Modules/Messages/test/Messages.Domain.Tests/Relationships/EnsureSendingMessagesIsAllowedTests.cs +++ b/Modules/Messages/test/Messages.Domain.Tests/Entities/EnsureSendingMessagesIsAllowedTests.cs @@ -4,7 +4,7 @@ using Backbone.Modules.Messages.Domain.Ids; using Backbone.UnitTestTools.Shouldly.Extensions; -namespace Backbone.Modules.Messages.Domain.Tests.Relationships; +namespace Backbone.Modules.Messages.Domain.Tests.Entities; public class EnsureSendingMessagesIsAllowedTests : AbstractTestsBase { diff --git a/Modules/Messages/test/Messages.Domain.Tests/Messages/ExpressionTests.cs b/Modules/Messages/test/Messages.Domain.Tests/Entities/ExpressionTests.cs similarity index 98% rename from Modules/Messages/test/Messages.Domain.Tests/Messages/ExpressionTests.cs rename to Modules/Messages/test/Messages.Domain.Tests/Entities/ExpressionTests.cs index 71fdbd4114..88f3bbcff7 100644 --- a/Modules/Messages/test/Messages.Domain.Tests/Messages/ExpressionTests.cs +++ b/Modules/Messages/test/Messages.Domain.Tests/Entities/ExpressionTests.cs @@ -3,7 +3,7 @@ using Backbone.UnitTestTools.Extensions; using static Backbone.Modules.Messages.Domain.Tests.TestHelpers.TestData; -namespace Backbone.Modules.Messages.Domain.Tests.Messages; +namespace Backbone.Modules.Messages.Domain.Tests.Entities; public class ExpressionTests : AbstractTestsBase { diff --git a/Modules/Messages/test/Messages.Module.Tests/Tests/Messages/Shared/MessageDTOTests.cs b/Modules/Messages/test/Messages.Module.Tests/Features/Messages/Shared/MessageDTOTests.cs similarity index 96% rename from Modules/Messages/test/Messages.Module.Tests/Tests/Messages/Shared/MessageDTOTests.cs rename to Modules/Messages/test/Messages.Module.Tests/Features/Messages/Shared/MessageDTOTests.cs index 1e20bc61bf..99d97194bd 100644 --- a/Modules/Messages/test/Messages.Module.Tests/Tests/Messages/Shared/MessageDTOTests.cs +++ b/Modules/Messages/test/Messages.Module.Tests/Features/Messages/Shared/MessageDTOTests.cs @@ -4,7 +4,7 @@ using Backbone.UnitTestTools.Extensions; using Backbone.UnitTestTools.Shouldly.Extensions; -namespace Backbone.Modules.Messages.Module.Tests.Tests.Messages.Shared; +namespace Backbone.Modules.Messages.Module.Tests.Features.Messages.Shared; public class MessageDTOTests : AbstractTestsBase { diff --git a/Modules/Quotas/test/Quotas.Domain.Tests/Tests/Identities/ExhaustionDateTests.cs b/Modules/Quotas/test/Quotas.Domain.Tests/Aggregates/Identities/ExhaustionDateTests.cs similarity index 98% rename from Modules/Quotas/test/Quotas.Domain.Tests/Tests/Identities/ExhaustionDateTests.cs rename to Modules/Quotas/test/Quotas.Domain.Tests/Aggregates/Identities/ExhaustionDateTests.cs index cf5826b1aa..69c0837742 100644 --- a/Modules/Quotas/test/Quotas.Domain.Tests/Tests/Identities/ExhaustionDateTests.cs +++ b/Modules/Quotas/test/Quotas.Domain.Tests/Aggregates/Identities/ExhaustionDateTests.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Quotas.Domain.Aggregates.Identities; -namespace Backbone.Modules.Quotas.Domain.Tests.Tests.Identities; +namespace Backbone.Modules.Quotas.Domain.Tests.Aggregates.Identities; public class ExhaustionDateTests : AbstractTestsBase { diff --git a/Modules/Quotas/test/Quotas.Domain.Tests/Tests/Identities/IdentityTests.cs b/Modules/Quotas/test/Quotas.Domain.Tests/Aggregates/Identities/IdentityTests.cs similarity index 99% rename from Modules/Quotas/test/Quotas.Domain.Tests/Tests/Identities/IdentityTests.cs rename to Modules/Quotas/test/Quotas.Domain.Tests/Aggregates/Identities/IdentityTests.cs index 23548669d3..a46af981b0 100644 --- a/Modules/Quotas/test/Quotas.Domain.Tests/Tests/Identities/IdentityTests.cs +++ b/Modules/Quotas/test/Quotas.Domain.Tests/Aggregates/Identities/IdentityTests.cs @@ -7,7 +7,7 @@ using Backbone.UnitTestTools.Shouldly.Extensions; using MetricKey = Backbone.Modules.Quotas.Domain.Aggregates.Metrics.MetricKey; -namespace Backbone.Modules.Quotas.Domain.Tests.Tests.Identities; +namespace Backbone.Modules.Quotas.Domain.Tests.Aggregates.Identities; public class IdentityTests : AbstractTestsBase { diff --git a/Modules/Quotas/test/Quotas.Domain.Tests/IndividualQuotaTests.cs b/Modules/Quotas/test/Quotas.Domain.Tests/Aggregates/Identities/IndividualQuotaTests.cs similarity index 91% rename from Modules/Quotas/test/Quotas.Domain.Tests/IndividualQuotaTests.cs rename to Modules/Quotas/test/Quotas.Domain.Tests/Aggregates/Identities/IndividualQuotaTests.cs index 30d16e7fc6..03575465a5 100644 --- a/Modules/Quotas/test/Quotas.Domain.Tests/IndividualQuotaTests.cs +++ b/Modules/Quotas/test/Quotas.Domain.Tests/Aggregates/Identities/IndividualQuotaTests.cs @@ -1,7 +1,7 @@ using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.Modules.Quotas.Domain.Aggregates.Metrics; -namespace Backbone.Modules.Quotas.Domain.Tests; +namespace Backbone.Modules.Quotas.Domain.Tests.Aggregates.Identities; public class IndividualQuotaTests : AbstractTestsBase { diff --git a/Modules/Quotas/test/Quotas.Domain.Tests/Tests/Identities/QuotaIdTests.cs b/Modules/Quotas/test/Quotas.Domain.Tests/Aggregates/Identities/QuotaIdTests.cs similarity index 96% rename from Modules/Quotas/test/Quotas.Domain.Tests/Tests/Identities/QuotaIdTests.cs rename to Modules/Quotas/test/Quotas.Domain.Tests/Aggregates/Identities/QuotaIdTests.cs index 849a852b81..18a29f70e1 100644 --- a/Modules/Quotas/test/Quotas.Domain.Tests/Tests/Identities/QuotaIdTests.cs +++ b/Modules/Quotas/test/Quotas.Domain.Tests/Aggregates/Identities/QuotaIdTests.cs @@ -1,7 +1,7 @@ using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.UnitTestTools.Shouldly.Extensions; -namespace Backbone.Modules.Quotas.Domain.Tests.Tests.Identities; +namespace Backbone.Modules.Quotas.Domain.Tests.Aggregates.Identities; public class QuotaIdTests : AbstractTestsBase { diff --git a/Modules/Quotas/test/Quotas.Domain.Tests/Tests/Identities/QuotaPeriodTests.cs b/Modules/Quotas/test/Quotas.Domain.Tests/Aggregates/Identities/QuotaPeriodTests.cs similarity index 96% rename from Modules/Quotas/test/Quotas.Domain.Tests/Tests/Identities/QuotaPeriodTests.cs rename to Modules/Quotas/test/Quotas.Domain.Tests/Aggregates/Identities/QuotaPeriodTests.cs index 664e179dd1..b0d7323599 100644 --- a/Modules/Quotas/test/Quotas.Domain.Tests/Tests/Identities/QuotaPeriodTests.cs +++ b/Modules/Quotas/test/Quotas.Domain.Tests/Aggregates/Identities/QuotaPeriodTests.cs @@ -1,7 +1,7 @@ using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.Tooling; -namespace Backbone.Modules.Quotas.Domain.Tests.Tests.Identities; +namespace Backbone.Modules.Quotas.Domain.Tests.Aggregates.Identities; public class QuotaPeriodTests : AbstractTestsBase { diff --git a/Modules/Quotas/test/Quotas.Domain.Tests/TierQuotaTests.cs b/Modules/Quotas/test/Quotas.Domain.Tests/Aggregates/Identities/TierQuotaTests.cs similarity index 93% rename from Modules/Quotas/test/Quotas.Domain.Tests/TierQuotaTests.cs rename to Modules/Quotas/test/Quotas.Domain.Tests/Aggregates/Identities/TierQuotaTests.cs index 5e55f0b9b6..e74fe92711 100644 --- a/Modules/Quotas/test/Quotas.Domain.Tests/TierQuotaTests.cs +++ b/Modules/Quotas/test/Quotas.Domain.Tests/Aggregates/Identities/TierQuotaTests.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Quotas.Domain.Aggregates.Metrics; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; -namespace Backbone.Modules.Quotas.Domain.Tests; +namespace Backbone.Modules.Quotas.Domain.Tests.Aggregates.Identities; public class TierQuotaTests : AbstractTestsBase { diff --git a/Modules/Quotas/test/Quotas.Domain.Tests/Tests/Tiers/TierQuotaDefinitionIdTests.cs b/Modules/Quotas/test/Quotas.Domain.Tests/Aggregates/Tiers/TierQuotaDefinitionIdTests.cs similarity index 96% rename from Modules/Quotas/test/Quotas.Domain.Tests/Tests/Tiers/TierQuotaDefinitionIdTests.cs rename to Modules/Quotas/test/Quotas.Domain.Tests/Aggregates/Tiers/TierQuotaDefinitionIdTests.cs index 0ba9d02ba4..0d7c508a12 100644 --- a/Modules/Quotas/test/Quotas.Domain.Tests/Tests/Tiers/TierQuotaDefinitionIdTests.cs +++ b/Modules/Quotas/test/Quotas.Domain.Tests/Aggregates/Tiers/TierQuotaDefinitionIdTests.cs @@ -1,7 +1,7 @@ using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; using Backbone.UnitTestTools.Shouldly.Extensions; -namespace Backbone.Modules.Quotas.Domain.Tests.Tests.Tiers; +namespace Backbone.Modules.Quotas.Domain.Tests.Aggregates.Tiers; public class TierQuotaDefinitionIdTests : AbstractTestsBase { diff --git a/Modules/Quotas/test/Quotas.Domain.Tests/Tests/Tiers/TierTests.cs b/Modules/Quotas/test/Quotas.Domain.Tests/Aggregates/Tiers/TierTests.cs similarity index 99% rename from Modules/Quotas/test/Quotas.Domain.Tests/Tests/Tiers/TierTests.cs rename to Modules/Quotas/test/Quotas.Domain.Tests/Aggregates/Tiers/TierTests.cs index 09392070ec..c7920b9e8e 100644 --- a/Modules/Quotas/test/Quotas.Domain.Tests/Tests/Tiers/TierTests.cs +++ b/Modules/Quotas/test/Quotas.Domain.Tests/Aggregates/Tiers/TierTests.cs @@ -5,7 +5,7 @@ using Backbone.UnitTestTools.Extensions; using Backbone.UnitTestTools.Shouldly.Extensions; -namespace Backbone.Modules.Quotas.Domain.Tests.Tests.Tiers; +namespace Backbone.Modules.Quotas.Domain.Tests.Aggregates.Tiers; public class TierTests : AbstractTestsBase { diff --git a/Modules/Quotas/test/Quotas.Infrastructure.Tests/Tests/Repositories/MessagesRepositoryTests.cs b/Modules/Quotas/test/Quotas.Infrastructure.Tests/Persistence/Repository/MessagesRepositoryTests.cs similarity index 98% rename from Modules/Quotas/test/Quotas.Infrastructure.Tests/Tests/Repositories/MessagesRepositoryTests.cs rename to Modules/Quotas/test/Quotas.Infrastructure.Tests/Persistence/Repository/MessagesRepositoryTests.cs index bcc62237be..2251318f66 100644 --- a/Modules/Quotas/test/Quotas.Infrastructure.Tests/Tests/Repositories/MessagesRepositoryTests.cs +++ b/Modules/Quotas/test/Quotas.Infrastructure.Tests/Persistence/Repository/MessagesRepositoryTests.cs @@ -7,7 +7,7 @@ using Backbone.Tooling; using Backbone.UnitTestTools.TestDoubles.Fakes; -namespace Backbone.Modules.Quotas.Infrastructure.Tests.Tests.Repositories; +namespace Backbone.Modules.Quotas.Infrastructure.Tests.Persistence.Repository; public class MessagesRepositoryTests : AbstractTestsBase { diff --git a/Modules/Quotas/test/Quotas.Infrastructure.Tests/Tests/Repositories/RelationshipsRepositoryTests.cs b/Modules/Quotas/test/Quotas.Infrastructure.Tests/Persistence/Repository/RelationshipsRepositoryTests.cs similarity index 99% rename from Modules/Quotas/test/Quotas.Infrastructure.Tests/Tests/Repositories/RelationshipsRepositoryTests.cs rename to Modules/Quotas/test/Quotas.Infrastructure.Tests/Persistence/Repository/RelationshipsRepositoryTests.cs index 94d9276046..aab1a9d163 100644 --- a/Modules/Quotas/test/Quotas.Infrastructure.Tests/Tests/Repositories/RelationshipsRepositoryTests.cs +++ b/Modules/Quotas/test/Quotas.Infrastructure.Tests/Persistence/Repository/RelationshipsRepositoryTests.cs @@ -8,7 +8,7 @@ using Backbone.UnitTestTools.TestDoubles.Fakes; using static Backbone.Modules.Quotas.Infrastructure.Tests.TestHelpers.TestData; -namespace Backbone.Modules.Quotas.Infrastructure.Tests.Tests.Repositories; +namespace Backbone.Modules.Quotas.Infrastructure.Tests.Persistence.Repository; public class RelationshipsRepositoryTests : AbstractTestsBase { diff --git a/Modules/Quotas/test/Quotas.Infrastructure.Tests/Tests/Repositories/TiersRepositoryTests.cs b/Modules/Quotas/test/Quotas.Infrastructure.Tests/Persistence/Repository/TiersRepositoryTests.cs similarity index 96% rename from Modules/Quotas/test/Quotas.Infrastructure.Tests/Tests/Repositories/TiersRepositoryTests.cs rename to Modules/Quotas/test/Quotas.Infrastructure.Tests/Persistence/Repository/TiersRepositoryTests.cs index 2d6d6e04fb..0a9ef6165e 100644 --- a/Modules/Quotas/test/Quotas.Infrastructure.Tests/Tests/Repositories/TiersRepositoryTests.cs +++ b/Modules/Quotas/test/Quotas.Infrastructure.Tests/Persistence/Repository/TiersRepositoryTests.cs @@ -5,7 +5,7 @@ using Backbone.Modules.Quotas.Infrastructure.Persistence.Repository; using Backbone.UnitTestTools.TestDoubles.Fakes; -namespace Backbone.Modules.Quotas.Infrastructure.Tests.Tests.Repositories; +namespace Backbone.Modules.Quotas.Infrastructure.Tests.Persistence.Repository; public class TiersRepositoryTests : AbstractTestsBase { diff --git a/Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/IdentityCreatedDomainEventHandlerTests.cs b/Modules/Quotas/test/Quotas.Module.Tests/Features/DomainEvents/IdentityCreated/HandlerTests.cs similarity index 81% rename from Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/IdentityCreatedDomainEventHandlerTests.cs rename to Modules/Quotas/test/Quotas.Module.Tests/Features/DomainEvents/IdentityCreated/HandlerTests.cs index 3e3a508feb..7cdf65be7c 100644 --- a/Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/IdentityCreatedDomainEventHandlerTests.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/Features/DomainEvents/IdentityCreated/HandlerTests.cs @@ -1,4 +1,4 @@ -using IdentityCreated = Backbone.Modules.Quotas.Module.Features.DomainEvents.IdentityCreated; +using IdentityCreatedSlice = Backbone.Modules.Quotas.Module.Features.DomainEvents.IdentityCreated; using Backbone.Modules.Devices.Contracts.DomainEvents; using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Module.Tests.TestDoubles; @@ -9,9 +9,9 @@ using FakeItEasy; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Quotas.Module.Tests.Tests.Identities; +namespace Backbone.Modules.Quotas.Module.Tests.Features.DomainEvents.IdentityCreated; -public class IdentityCreatedDomainEventHandlerTests : AbstractTestsBase +public class HandlerTests : AbstractTestsBase { [Fact] public async Task Creates_a_copy_of_the_identity_from_the_event() @@ -55,10 +55,10 @@ public async Task Assigns_tier_quotas_to_new_identity() A.CallTo(() => mockIdentitiesRepository.Add(A.That.Matches(i => i.TierQuotas.Count == 2), CancellationToken.None)).MustHaveHappened(); } - private static IdentityCreated.Handler CreateHandler(IIdentitiesRepository identities, FindTiersStubRepository tiers) + private static IdentityCreatedSlice.Handler CreateHandler(IIdentitiesRepository identities, FindTiersStubRepository tiers) { - var logger = A.Fake>(); + var logger = A.Fake>(); var metricCalculatorFactory = A.Fake(); - return new IdentityCreated.Handler(identities, logger, tiers, metricCalculatorFactory); + return new IdentityCreatedSlice.Handler(identities, logger, tiers, metricCalculatorFactory); } } diff --git a/Modules/Quotas/test/Quotas.Module.Tests/Tests/Tiers/TierCreatedDomainEventHandlerTests.cs b/Modules/Quotas/test/Quotas.Module.Tests/Features/DomainEvents/TierCreated/HandlerTests.cs similarity index 66% rename from Modules/Quotas/test/Quotas.Module.Tests/Tests/Tiers/TierCreatedDomainEventHandlerTests.cs rename to Modules/Quotas/test/Quotas.Module.Tests/Features/DomainEvents/TierCreated/HandlerTests.cs index 354219bb7f..31768c05dc 100644 --- a/Modules/Quotas/test/Quotas.Module.Tests/Tests/Tiers/TierCreatedDomainEventHandlerTests.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/Features/DomainEvents/TierCreated/HandlerTests.cs @@ -1,13 +1,13 @@ -using TierCreated = Backbone.Modules.Quotas.Module.Features.DomainEvents.TierCreated; +using TierCreatedSlice = Backbone.Modules.Quotas.Module.Features.DomainEvents.TierCreated; using Backbone.Modules.Devices.Contracts.DomainEvents; using Backbone.Modules.Quotas.Module.Tests.TestDoubles; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; using FakeItEasy; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Quotas.Module.Tests.Tests.Tiers; +namespace Backbone.Modules.Quotas.Module.Tests.Features.DomainEvents.TierCreated; -public class TierCreatedDomainEventHandlerTests : AbstractTestsBase +public class HandlerTests : AbstractTestsBase { [Fact] public async Task Creates_tier_after_consuming_domain_event() @@ -27,9 +27,9 @@ public async Task Creates_tier_after_consuming_domain_event() mockTierRepository.WasCalledWith.Name.ShouldBe(name); } - private static TierCreated.Handler CreateHandler(AddMockTiersRepository tiers) + private static TierCreatedSlice.Handler CreateHandler(AddMockTiersRepository tiers) { - var logger = A.Fake>(); - return new TierCreated.Handler(tiers, logger); + var logger = A.Fake>(); + return new TierCreatedSlice.Handler(tiers, logger); } } diff --git a/Modules/Quotas/test/Quotas.Module.Tests/Tests/DomainEvents/TierDeleted/TierDeletedDomainEventHandlerTests.cs b/Modules/Quotas/test/Quotas.Module.Tests/Features/DomainEvents/TierDeleted/HandlerTests.cs similarity index 88% rename from Modules/Quotas/test/Quotas.Module.Tests/Tests/DomainEvents/TierDeleted/TierDeletedDomainEventHandlerTests.cs rename to Modules/Quotas/test/Quotas.Module.Tests/Features/DomainEvents/TierDeleted/HandlerTests.cs index 41ca3e2eeb..097f97ab5d 100644 --- a/Modules/Quotas/test/Quotas.Module.Tests/Tests/DomainEvents/TierDeleted/TierDeletedDomainEventHandlerTests.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/Features/DomainEvents/TierDeleted/HandlerTests.cs @@ -5,9 +5,9 @@ using FakeItEasy; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Quotas.Module.Tests.Tests.DomainEvents.TierDeleted; +namespace Backbone.Modules.Quotas.Module.Tests.Features.DomainEvents.TierDeleted; -public class TierDeletedDomainEventHandlerTests : AbstractTestsBase +public class HandlerTests : AbstractTestsBase { [Fact] public async Task Deletes_tier_after_consuming_domain_event() diff --git a/Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/TierQuotaDefinitionCreatedDomainEventHandlerTests.cs b/Modules/Quotas/test/Quotas.Module.Tests/Features/DomainEvents/TierQuotaDefinitionCreated/HandlerTests.cs similarity index 85% rename from Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/TierQuotaDefinitionCreatedDomainEventHandlerTests.cs rename to Modules/Quotas/test/Quotas.Module.Tests/Features/DomainEvents/TierQuotaDefinitionCreated/HandlerTests.cs index 98c65c8618..eec904c686 100644 --- a/Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/TierQuotaDefinitionCreatedDomainEventHandlerTests.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/Features/DomainEvents/TierQuotaDefinitionCreated/HandlerTests.cs @@ -1,4 +1,4 @@ -using TierQuotaDefinitionCreated = Backbone.Modules.Quotas.Module.Features.DomainEvents.TierQuotaDefinitionCreated; +using TierQuotaDefinitionCreatedSlice = Backbone.Modules.Quotas.Module.Features.DomainEvents.TierQuotaDefinitionCreated; using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Module.Tests.TestDoubles; using Backbone.Modules.Quotas.Contracts.DomainEvents; @@ -9,9 +9,9 @@ using FakeItEasy; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Quotas.Module.Tests.Tests.Identities; +namespace Backbone.Modules.Quotas.Module.Tests.Features.DomainEvents.TierQuotaDefinitionCreated; -public class TierQuotaDefinitionCreatedDomainEventHandlerTests : AbstractTestsBase +public class HandlerTests : AbstractTestsBase { [Fact] public async Task Creates_tier_quota_after_consuming_domain_event() @@ -68,9 +68,9 @@ public async Task Creates_tier_quota_after_consuming_domain_event() // ).MustHaveHappened(); // } - private static TierQuotaDefinitionCreated.Handler CreateHandler(IIdentitiesRepository identities, ITiersRepository tierQuotaDefinitions) + private static TierQuotaDefinitionCreatedSlice.Handler CreateHandler(IIdentitiesRepository identities, ITiersRepository tierQuotaDefinitions) { - var logger = A.Fake>(); - return new TierQuotaDefinitionCreated.Handler(identities, tierQuotaDefinitions, logger); + var logger = A.Fake>(); + return new TierQuotaDefinitionCreatedSlice.Handler(identities, tierQuotaDefinitions, logger); } } diff --git a/Modules/Quotas/test/Quotas.Module.Tests/Tests/Quotas/CreateQuotaForIdentity/HandlerTests.cs b/Modules/Quotas/test/Quotas.Module.Tests/Features/Identities/CreateQuotaForIdentity/HandlerTests.cs similarity index 96% rename from Modules/Quotas/test/Quotas.Module.Tests/Tests/Quotas/CreateQuotaForIdentity/HandlerTests.cs rename to Modules/Quotas/test/Quotas.Module.Tests/Features/Identities/CreateQuotaForIdentity/HandlerTests.cs index 8a65d83479..5008c8b606 100644 --- a/Modules/Quotas/test/Quotas.Module.Tests/Tests/Quotas/CreateQuotaForIdentity/HandlerTests.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/Features/Identities/CreateQuotaForIdentity/HandlerTests.cs @@ -10,7 +10,7 @@ using Microsoft.Extensions.Logging; using MetricKey = Backbone.Modules.Quotas.Domain.Aggregates.Metrics.MetricKey; -namespace Backbone.Modules.Quotas.Module.Tests.Tests.Quotas.CreateQuotaForIdentity; +namespace Backbone.Modules.Quotas.Module.Tests.Features.Identities.CreateQuotaForIdentity; public class HandlerTests : AbstractTestsBase { diff --git a/Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/Commands/DeleteIdentityCommandTests/HandlerTests.cs b/Modules/Quotas/test/Quotas.Module.Tests/Features/Identities/DeleteIdentity/HandlerTests.cs similarity index 75% rename from Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/Commands/DeleteIdentityCommandTests/HandlerTests.cs rename to Modules/Quotas/test/Quotas.Module.Tests/Features/Identities/DeleteIdentity/HandlerTests.cs index a6fe9be096..9bea8b81af 100644 --- a/Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/Commands/DeleteIdentityCommandTests/HandlerTests.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/Features/Identities/DeleteIdentity/HandlerTests.cs @@ -1,4 +1,4 @@ -using DeleteIdentity = Backbone.Modules.Quotas.Module.Features.Identities.DeleteIdentity; +using DeleteIdentitySlice = Backbone.Modules.Quotas.Module.Features.Identities.DeleteIdentity; using System.Linq.Expressions; using Backbone.Modules.Quotas.Module.Features.Identities.DeleteIdentity; using Backbone.Modules.Quotas.Abstractions; @@ -6,7 +6,7 @@ using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; using FakeItEasy; -namespace Backbone.Modules.Quotas.Module.Tests.Tests.Identities.Commands.DeleteIdentityCommandTests; +namespace Backbone.Modules.Quotas.Module.Tests.Features.Identities.DeleteIdentity; public class HandlerTests : AbstractTestsBase { @@ -17,7 +17,7 @@ public async Task Handler_calls_deletion_method_on_repository() var mockIdentitiesRepository = A.Fake(); var handler = CreateHandler(mockIdentitiesRepository); - await handler.Handle(new DeleteIdentity.Command { IdentityAddress = identity.Address }, CancellationToken.None); + await handler.Handle(new DeleteIdentitySlice.Command { IdentityAddress = identity.Address }, CancellationToken.None); A.CallTo(() => mockIdentitiesRepository.Delete(A>>._, A._)).MustHaveHappenedOnceExactly(); } diff --git a/Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/IdentityDeleterTests.cs b/Modules/Quotas/test/Quotas.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs similarity index 77% rename from Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/IdentityDeleterTests.cs rename to Modules/Quotas/test/Quotas.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs index bead94209f..ae4c105c80 100644 --- a/Modules/Quotas/test/Quotas.Module.Tests/Tests/Identities/IdentityDeleterTests.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs @@ -1,10 +1,10 @@ -using DeleteIdentity = Backbone.Modules.Quotas.Module.Features.Identities.DeleteIdentity; +using DeleteIdentitySlice = Backbone.Modules.Quotas.Module.Features.Identities.DeleteIdentity; using Backbone.BuildingBlocks.Application.Identities; using Backbone.Modules.Quotas.Module.Features.Identities.DeleteIdentity; using FakeItEasy; using MediatR; -namespace Backbone.Modules.Quotas.Module.Tests.Tests.Identities; +namespace Backbone.Modules.Quotas.Module.Tests.Features.Identities.DeleteIdentity; public class IdentityDeleterTests : AbstractTestsBase { @@ -21,7 +21,7 @@ public async Task Deleter_calls_correct_command() await deleter.Delete(identityAddress); // Assert - A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); + A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); } [Fact] diff --git a/Modules/Quotas/test/Quotas.Module.Tests/Metrics/UsedFileStorageSpaceMetricCalculatorTests.cs b/Modules/Quotas/test/Quotas.Module.Tests/Features/Metrics/Shared/UsedFileStorageSpaceMetricCalculatorTests.cs similarity index 95% rename from Modules/Quotas/test/Quotas.Module.Tests/Metrics/UsedFileStorageSpaceMetricCalculatorTests.cs rename to Modules/Quotas/test/Quotas.Module.Tests/Features/Metrics/Shared/UsedFileStorageSpaceMetricCalculatorTests.cs index 2f17e2ef53..95f4a7e9a4 100644 --- a/Modules/Quotas/test/Quotas.Module.Tests/Metrics/UsedFileStorageSpaceMetricCalculatorTests.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/Features/Metrics/Shared/UsedFileStorageSpaceMetricCalculatorTests.cs @@ -1,7 +1,7 @@ using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Module.Features.Metrics.Shared; -namespace Backbone.Modules.Quotas.Module.Tests.Metrics; +namespace Backbone.Modules.Quotas.Module.Tests.Features.Metrics.Shared; public class UsedFileStorageSpaceMetricCalculatorTests : AbstractTestsBase { diff --git a/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/RelationshipTemplates/RelationshipTemplate.AnonymizeForIdentityTests.cs b/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/RelationshipTemplates/RelationshipTemplateAnonymizeForIdentityTests.cs similarity index 100% rename from Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/RelationshipTemplates/RelationshipTemplate.AnonymizeForIdentityTests.cs rename to Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/RelationshipTemplates/RelationshipTemplateAnonymizeForIdentityTests.cs diff --git a/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/RelationshipTemplates/RelationshipTemplate.CanBeCollectedUsingPasswordTests.cs b/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/RelationshipTemplates/RelationshipTemplateCanBeCollectedUsingPasswordExpressionTests.cs similarity index 100% rename from Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/RelationshipTemplates/RelationshipTemplate.CanBeCollectedUsingPasswordTests.cs rename to Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/RelationshipTemplates/RelationshipTemplateCanBeCollectedUsingPasswordExpressionTests.cs diff --git a/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/RelationshipTemplates/RelationshipTemplate.CollectTests.cs b/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/RelationshipTemplates/RelationshipTemplateCollectTests.cs similarity index 100% rename from Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/RelationshipTemplates/RelationshipTemplate.CollectTests.cs rename to Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/RelationshipTemplates/RelationshipTemplateCollectTests.cs diff --git a/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/RelationshipTemplates/RelationshipTemplate.CreateTests.cs b/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/RelationshipTemplates/RelationshipTemplateCreateTests.cs similarity index 100% rename from Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/RelationshipTemplates/RelationshipTemplate.CreateTests.cs rename to Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/RelationshipTemplates/RelationshipTemplateCreateTests.cs diff --git a/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/RelationshipTemplates/RelationshipTemplate.DeleteTests.cs b/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/RelationshipTemplates/RelationshipTemplateDeleteTests.cs similarity index 100% rename from Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/RelationshipTemplates/RelationshipTemplate.DeleteTests.cs rename to Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/RelationshipTemplates/RelationshipTemplateDeleteTests.cs diff --git a/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/Relationship.AcceptReactivationTests.cs b/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/RelationshipAcceptReactivationTests.cs similarity index 100% rename from Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/Relationship.AcceptReactivationTests.cs rename to Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/RelationshipAcceptReactivationTests.cs diff --git a/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/Relationship.AcceptTests.cs b/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/RelationshipAcceptTests.cs similarity index 100% rename from Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/Relationship.AcceptTests.cs rename to Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/RelationshipAcceptTests.cs diff --git a/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/Relationship.CanEstablishTests.cs b/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/RelationshipCanEstablishTests.cs similarity index 100% rename from Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/Relationship.CanEstablishTests.cs rename to Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/RelationshipCanEstablishTests.cs diff --git a/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/Relationship.ExpressionTests.cs b/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/RelationshipCountAsActiveExpressionTests.cs similarity index 100% rename from Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/Relationship.ExpressionTests.cs rename to Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/RelationshipCountAsActiveExpressionTests.cs diff --git a/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/Relationship.CreateTests.cs b/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/RelationshipCreateTests.cs similarity index 100% rename from Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/Relationship.CreateTests.cs rename to Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/RelationshipCreateTests.cs diff --git a/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/Relationship.DecomposeDueToIdentityDeletionTests.cs b/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/RelationshipDecomposeDueToIdentityDeletionTests.cs similarity index 100% rename from Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/Relationship.DecomposeDueToIdentityDeletionTests.cs rename to Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/RelationshipDecomposeDueToIdentityDeletionTests.cs diff --git a/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/Relationship.DecomposeTests.cs b/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/RelationshipDecomposeTests.cs similarity index 100% rename from Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/Relationship.DecomposeTests.cs rename to Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/RelationshipDecomposeTests.cs diff --git a/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/Relationship.GetPeerTests.cs b/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/RelationshipGetPeerTests.cs similarity index 100% rename from Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/Relationship.GetPeerTests.cs rename to Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/RelationshipGetPeerTests.cs diff --git a/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/Relationship.HasParticipantExpressionTests.cs b/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/RelationshipHasParticipantExpressionTests.cs similarity index 100% rename from Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/Relationship.HasParticipantExpressionTests.cs rename to Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/RelationshipHasParticipantExpressionTests.cs diff --git a/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/Relationship.RejectReactivationTests.cs b/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/RelationshipRejectReactivationTests.cs similarity index 100% rename from Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/Relationship.RejectReactivationTests.cs rename to Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/RelationshipRejectReactivationTests.cs diff --git a/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/Relationship.RejectTests.cs b/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/RelationshipRejectTests.cs similarity index 100% rename from Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/Relationship.RejectTests.cs rename to Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/RelationshipRejectTests.cs diff --git a/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/Relationship.RequestReactivationTests.cs b/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/RelationshipRequestReactivationTests.cs similarity index 100% rename from Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/Relationship.RequestReactivationTests.cs rename to Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/RelationshipRequestReactivationTests.cs diff --git a/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/Relationship.RevokeReactivationsTests.cs b/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/RelationshipRevokeReactivationTests.cs similarity index 100% rename from Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/Relationship.RevokeReactivationsTests.cs rename to Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/RelationshipRevokeReactivationTests.cs diff --git a/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/Relationship.RevokeTests.cs b/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/RelationshipRevokeTests.cs similarity index 100% rename from Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/Relationship.RevokeTests.cs rename to Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/RelationshipRevokeTests.cs diff --git a/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/Relationship.TerminateTests.cs b/Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/RelationshipTerminateTests.cs similarity index 100% rename from Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/Relationship.TerminateTests.cs rename to Modules/Relationships/test/Relationships.Domain.Tests/Aggregates/Relationships/RelationshipTerminateTests.cs diff --git a/Modules/Relationships/test/Relationships.Infrastructure.Tests/Extensions/RelationshipTemplateQueryableExtensions.Tests.cs b/Modules/Relationships/test/Relationships.Infrastructure.Tests/Extensions/RelationshipTemplateQueryableExtensionsTests.cs similarity index 100% rename from Modules/Relationships/test/Relationships.Infrastructure.Tests/Extensions/RelationshipTemplateQueryableExtensions.Tests.cs rename to Modules/Relationships/test/Relationships.Infrastructure.Tests/Extensions/RelationshipTemplateQueryableExtensionsTests.cs diff --git a/Modules/Relationships/test/Relationships.Module.Tests/DomainEvents/Incoming/IdentityDeleted/IdentityDeletedDomainEventHandler.Tests.cs b/Modules/Relationships/test/Relationships.Module.Tests/Features/DomainEvents/IdentityDeleted/HandlerTests.cs similarity index 94% rename from Modules/Relationships/test/Relationships.Module.Tests/DomainEvents/Incoming/IdentityDeleted/IdentityDeletedDomainEventHandler.Tests.cs rename to Modules/Relationships/test/Relationships.Module.Tests/Features/DomainEvents/IdentityDeleted/HandlerTests.cs index a7e5bb82a7..9be93a00c8 100644 --- a/Modules/Relationships/test/Relationships.Module.Tests/DomainEvents/Incoming/IdentityDeleted/IdentityDeletedDomainEventHandler.Tests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/Features/DomainEvents/IdentityDeleted/HandlerTests.cs @@ -8,9 +8,9 @@ using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using FakeItEasy; -namespace Backbone.Modules.Relationships.Module.Tests.DomainEvents.Incoming.IdentityDeleted; +namespace Backbone.Modules.Relationships.Module.Tests.Features.DomainEvents.IdentityDeleted; -public class IdentityDeletedDomainEventHandlerTests : AbstractTestsBase +public class HandlerTests : AbstractTestsBase { [Fact] public static async Task Publishes_PeerToBeDeletedDomainEvent() diff --git a/Modules/Relationships/test/Relationships.Module.Tests/DomainEvents/Incoming/IdentityDeletionCancelled/IdentityDeletionCancelledDomainEventHandler.Tests.cs b/Modules/Relationships/test/Relationships.Module.Tests/Features/DomainEvents/IdentityDeletionCancelled/HandlerTests.cs similarity index 94% rename from Modules/Relationships/test/Relationships.Module.Tests/DomainEvents/Incoming/IdentityDeletionCancelled/IdentityDeletionCancelledDomainEventHandler.Tests.cs rename to Modules/Relationships/test/Relationships.Module.Tests/Features/DomainEvents/IdentityDeletionCancelled/HandlerTests.cs index 119aeb23a6..f8c690066e 100644 --- a/Modules/Relationships/test/Relationships.Module.Tests/DomainEvents/Incoming/IdentityDeletionCancelled/IdentityDeletionCancelledDomainEventHandler.Tests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/Features/DomainEvents/IdentityDeletionCancelled/HandlerTests.cs @@ -8,9 +8,9 @@ using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using FakeItEasy; -namespace Backbone.Modules.Relationships.Module.Tests.DomainEvents.Incoming.IdentityDeletionCancelled; +namespace Backbone.Modules.Relationships.Module.Tests.Features.DomainEvents.IdentityDeletionCancelled; -public class IdentityDeletionCancelledDomainEventHandlerTests : AbstractTestsBase +public class HandlerTests : AbstractTestsBase { [Fact] public static async Task Publishes_PeerToBeDeletedDomainEvent() diff --git a/Modules/Relationships/test/Relationships.Module.Tests/DomainEvents/Incoming/IdentityToBeDeleted/IdentityToBeDeletedDomainEventHandler.Tests.cs b/Modules/Relationships/test/Relationships.Module.Tests/Features/DomainEvents/IdentityToBeDeleted/HandlerTests.cs similarity index 94% rename from Modules/Relationships/test/Relationships.Module.Tests/DomainEvents/Incoming/IdentityToBeDeleted/IdentityToBeDeletedDomainEventHandler.Tests.cs rename to Modules/Relationships/test/Relationships.Module.Tests/Features/DomainEvents/IdentityToBeDeleted/HandlerTests.cs index 28ae5a6fe7..8280b16cea 100644 --- a/Modules/Relationships/test/Relationships.Module.Tests/DomainEvents/Incoming/IdentityToBeDeleted/IdentityToBeDeletedDomainEventHandler.Tests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/Features/DomainEvents/IdentityToBeDeleted/HandlerTests.cs @@ -8,9 +8,9 @@ using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using FakeItEasy; -namespace Backbone.Modules.Relationships.Module.Tests.DomainEvents.Incoming.IdentityToBeDeleted; +namespace Backbone.Modules.Relationships.Module.Tests.Features.DomainEvents.IdentityToBeDeleted; -public class IdentityToBeDeletedDomainEventHandlerTests : AbstractTestsBase +public class HandlerTests : AbstractTestsBase { [Fact] public static async Task Publishes_PeerToBeDeletedDomainEvent() diff --git a/Modules/Relationships/test/Relationships.Module.Tests/Identities/IdentityDeleter.Tests.cs b/Modules/Relationships/test/Relationships.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs similarity index 64% rename from Modules/Relationships/test/Relationships.Module.Tests/Identities/IdentityDeleter.Tests.cs rename to Modules/Relationships/test/Relationships.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs index d1ec16432a..33613b52e6 100644 --- a/Modules/Relationships/test/Relationships.Module.Tests/Identities/IdentityDeleter.Tests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs @@ -1,13 +1,13 @@ -using AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity; -using AnonymizeRelationshipTemplatesForIdentity = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplatesForIdentity; -using DecomposeAndAnonymizeRelationshipsOfIdentity = Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeAndAnonymizeRelationshipsOfIdentity; -using DeleteRelationshipTemplatesOfIdentity = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplatesOfIdentity; +using AnonymizeRelationshipTemplateAllocationsAllocatedByIdentitySlice = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity; +using AnonymizeRelationshipTemplatesForIdentitySlice = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplatesForIdentity; +using DecomposeAndAnonymizeRelationshipsOfIdentitySlice = Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeAndAnonymizeRelationshipsOfIdentity; +using DeleteRelationshipTemplatesOfIdentitySlice = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplatesOfIdentity; using Backbone.BuildingBlocks.Application.Identities; using Backbone.Modules.Relationships.Module.Features.Identities.DeleteIdentity; using FakeItEasy; using MediatR; -namespace Backbone.Modules.Relationships.Module.Tests.Identities; +namespace Backbone.Modules.Relationships.Module.Tests.Features.Identities.DeleteIdentity; public class IdentityDeleterTests : AbstractTestsBase { @@ -25,16 +25,16 @@ public async Task Deleter_calls_correct_command() // Assert A.CallTo(() => mockMediator.Send( - A.That.Matches(i => i.IdentityAddress == identityAddress), + A.That.Matches(i => i.IdentityAddress == identityAddress), A._)).MustHaveHappenedOnceExactly(); A.CallTo(() => mockMediator.Send( - A.That.Matches(i => i.IdentityAddress == identityAddress), + A.That.Matches(i => i.IdentityAddress == identityAddress), A._)).MustHaveHappenedOnceExactly(); A.CallTo(() => mockMediator.Send( - A.That.Matches(i => i.IdentityAddress == identityAddress), + A.That.Matches(i => i.IdentityAddress == identityAddress), A._)).MustHaveHappenedOnceExactly(); A.CallTo(() => mockMediator.Send( - A.That.Matches(i => i.IdentityAddress == identityAddress), + A.That.Matches(i => i.IdentityAddress == identityAddress), A._)).MustHaveHappenedOnceExactly(); } diff --git a/Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Commands/CreateRelationshipTemplate/Validator.Tests.cs b/Modules/Relationships/test/Relationships.Module.Tests/Features/RelationshipTemplates/CreateRelationshipTemplate/ValidatorTests.cs similarity index 97% rename from Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Commands/CreateRelationshipTemplate/Validator.Tests.cs rename to Modules/Relationships/test/Relationships.Module.Tests/Features/RelationshipTemplates/CreateRelationshipTemplate/ValidatorTests.cs index b1c5b8e9ad..54d80447fc 100644 --- a/Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Commands/CreateRelationshipTemplate/Validator.Tests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/Features/RelationshipTemplates/CreateRelationshipTemplate/ValidatorTests.cs @@ -3,7 +3,7 @@ using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Relationships.Module.Tests.RelationshipTemplates.Commands.CreateRelationshipTemplate; +namespace Backbone.Modules.Relationships.Module.Tests.Features.RelationshipTemplates.CreateRelationshipTemplate; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Commands/DeleteRelationshipTemplatesOfIdentity/Handler.Tests.cs b/Modules/Relationships/test/Relationships.Module.Tests/Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/HandlerTests.cs similarity index 90% rename from Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Commands/DeleteRelationshipTemplatesOfIdentity/Handler.Tests.cs rename to Modules/Relationships/test/Relationships.Module.Tests/Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/HandlerTests.cs index 67c97f1fb4..5addd69cec 100644 --- a/Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Commands/DeleteRelationshipTemplatesOfIdentity/Handler.Tests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/HandlerTests.cs @@ -5,7 +5,7 @@ using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; using FakeItEasy; -namespace Backbone.Modules.Relationships.Module.Tests.RelationshipTemplates.Commands.DeleteRelationshipTemplatesOfIdentity; +namespace Backbone.Modules.Relationships.Module.Tests.Features.RelationshipTemplates.DeleteRelationshipTemplatesOfIdentity; public class HandlerTests : AbstractTestsBase { diff --git a/Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Queries/ListRelationshipTemplates/Validator.Tests.cs b/Modules/Relationships/test/Relationships.Module.Tests/Features/RelationshipTemplates/ListRelationshipTemplates/ValidatorTests.cs similarity index 93% rename from Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Queries/ListRelationshipTemplates/Validator.Tests.cs rename to Modules/Relationships/test/Relationships.Module.Tests/Features/RelationshipTemplates/ListRelationshipTemplates/ValidatorTests.cs index 81143c238b..cb98c0e8b9 100644 --- a/Modules/Relationships/test/Relationships.Module.Tests/RelationshipTemplates/Queries/ListRelationshipTemplates/Validator.Tests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/Features/RelationshipTemplates/ListRelationshipTemplates/ValidatorTests.cs @@ -5,7 +5,7 @@ using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Relationships.Module.Tests.RelationshipTemplates.Queries.ListRelationshipTemplates; +namespace Backbone.Modules.Relationships.Module.Tests.Features.RelationshipTemplates.ListRelationshipTemplates; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Relationships/test/Relationships.Module.Tests/Relationships/Commands/DecomposeAndAnonymizeRelationshipsOfIdentity/Handler.Tests.cs b/Modules/Relationships/test/Relationships.Module.Tests/Features/Relationships/DecomposeAndAnonymizeRelationshipsOfIdentity/HandlerTests.cs similarity index 90% rename from Modules/Relationships/test/Relationships.Module.Tests/Relationships/Commands/DecomposeAndAnonymizeRelationshipsOfIdentity/Handler.Tests.cs rename to Modules/Relationships/test/Relationships.Module.Tests/Features/Relationships/DecomposeAndAnonymizeRelationshipsOfIdentity/HandlerTests.cs index 65ddfda7d7..59a9e6525b 100644 --- a/Modules/Relationships/test/Relationships.Module.Tests/Relationships/Commands/DecomposeAndAnonymizeRelationshipsOfIdentity/Handler.Tests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/Features/Relationships/DecomposeAndAnonymizeRelationshipsOfIdentity/HandlerTests.cs @@ -5,7 +5,7 @@ using FakeItEasy; using Microsoft.Extensions.Options; -namespace Backbone.Modules.Relationships.Module.Tests.Relationships.Commands.DecomposeAndAnonymizeRelationshipsOfIdentity; +namespace Backbone.Modules.Relationships.Module.Tests.Features.Relationships.DecomposeAndAnonymizeRelationshipsOfIdentity; public class HandlerTests : AbstractTestsBase { diff --git a/Modules/Relationships/test/Relationships.Module.Tests/Relationships/Queries/ListRelationships/ListRelationshipsValidator.Tests.cs b/Modules/Relationships/test/Relationships.Module.Tests/Features/Relationships/ListRelationships/ListRelationshipsValidatorTests.cs similarity index 95% rename from Modules/Relationships/test/Relationships.Module.Tests/Relationships/Queries/ListRelationships/ListRelationshipsValidator.Tests.cs rename to Modules/Relationships/test/Relationships.Module.Tests/Features/Relationships/ListRelationships/ListRelationshipsValidatorTests.cs index 63a4068fff..da87838e8b 100644 --- a/Modules/Relationships/test/Relationships.Module.Tests/Relationships/Queries/ListRelationships/ListRelationshipsValidator.Tests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/Features/Relationships/ListRelationships/ListRelationshipsValidatorTests.cs @@ -5,7 +5,7 @@ using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; -namespace Backbone.Modules.Relationships.Module.Tests.Relationships.Queries.ListRelationships; +namespace Backbone.Modules.Relationships.Module.Tests.Features.Relationships.ListRelationships; public class ListRelationshipsValidatorTests : AbstractTestsBase { diff --git a/Modules/Synchronization/test/Synchronization.Domain.Tests/DatawalletModifications/CanBeCleanedUpTests.cs b/Modules/Synchronization/test/Synchronization.Domain.Tests/Entities/CanBeCleanedUpTests.cs similarity index 99% rename from Modules/Synchronization/test/Synchronization.Domain.Tests/DatawalletModifications/CanBeCleanedUpTests.cs rename to Modules/Synchronization/test/Synchronization.Domain.Tests/Entities/CanBeCleanedUpTests.cs index 675dfb20e7..ffda69e01a 100644 --- a/Modules/Synchronization/test/Synchronization.Domain.Tests/DatawalletModifications/CanBeCleanedUpTests.cs +++ b/Modules/Synchronization/test/Synchronization.Domain.Tests/Entities/CanBeCleanedUpTests.cs @@ -5,7 +5,7 @@ using Xunit.Sdk; using static Backbone.Modules.Synchronization.Domain.Entities.DatawalletModificationType; -namespace Backbone.Modules.Synchronization.Domain.Tests.DatawalletModifications; +namespace Backbone.Modules.Synchronization.Domain.Tests.Entities; public class CanBeCleanedUpTests : AbstractTestsBase { diff --git a/Modules/Synchronization/test/Synchronization.Domain.Tests/DatawalletTests.cs b/Modules/Synchronization/test/Synchronization.Domain.Tests/Entities/DatawalletTests.cs similarity index 97% rename from Modules/Synchronization/test/Synchronization.Domain.Tests/DatawalletTests.cs rename to Modules/Synchronization/test/Synchronization.Domain.Tests/Entities/DatawalletTests.cs index add66be394..fd53f3c251 100644 --- a/Modules/Synchronization/test/Synchronization.Domain.Tests/DatawalletTests.cs +++ b/Modules/Synchronization/test/Synchronization.Domain.Tests/Entities/DatawalletTests.cs @@ -3,7 +3,7 @@ using Backbone.Modules.Synchronization.Domain.Entities; using Backbone.UnitTestTools.Shouldly.Extensions; -namespace Backbone.Modules.Synchronization.Domain.Tests; +namespace Backbone.Modules.Synchronization.Domain.Tests.Entities; public class DatawalletTests : AbstractTestsBase { diff --git a/Modules/Synchronization/test/Synchronization.Domain.Tests/RelationshipTests.cs b/Modules/Synchronization/test/Synchronization.Domain.Tests/Entities/Relationships/RelationshipTests.cs similarity index 94% rename from Modules/Synchronization/test/Synchronization.Domain.Tests/RelationshipTests.cs rename to Modules/Synchronization/test/Synchronization.Domain.Tests/Entities/Relationships/RelationshipTests.cs index a2805185da..acd68bc48a 100644 --- a/Modules/Synchronization/test/Synchronization.Domain.Tests/RelationshipTests.cs +++ b/Modules/Synchronization/test/Synchronization.Domain.Tests/Entities/Relationships/RelationshipTests.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Synchronization.Domain.Entities.Relationships; -namespace Backbone.Modules.Synchronization.Domain.Tests; +namespace Backbone.Modules.Synchronization.Domain.Tests.Entities.Relationships; public class RelationshipTests : AbstractTestsBase { diff --git a/Modules/Synchronization/test/Synchronization.Domain.Tests/ExternalEventTests.cs b/Modules/Synchronization/test/Synchronization.Domain.Tests/Entities/Sync/ExternalEventTests.cs similarity index 92% rename from Modules/Synchronization/test/Synchronization.Domain.Tests/ExternalEventTests.cs rename to Modules/Synchronization/test/Synchronization.Domain.Tests/Entities/Sync/ExternalEventTests.cs index 034027716d..b7ba035bf3 100644 --- a/Modules/Synchronization/test/Synchronization.Domain.Tests/ExternalEventTests.cs +++ b/Modules/Synchronization/test/Synchronization.Domain.Tests/Entities/Sync/ExternalEventTests.cs @@ -2,7 +2,7 @@ using Backbone.Modules.Synchronization.Domain.Entities.Sync; using Backbone.UnitTestTools.Shouldly.Extensions; -namespace Backbone.Modules.Synchronization.Domain.Tests; +namespace Backbone.Modules.Synchronization.Domain.Tests.Entities.Sync; public class ExternalEventTests : AbstractTestsBase { diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/Queries/GetDatawalletModifications/HandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/Datawallets/ListModifications/HandlerTests.cs similarity index 90% rename from Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/Queries/GetDatawalletModifications/HandlerTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Features/Datawallets/ListModifications/HandlerTests.cs index 09c1f85dd7..0d7f501659 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/Queries/GetDatawalletModifications/HandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/Datawallets/ListModifications/HandlerTests.cs @@ -1,4 +1,4 @@ -using ListModifications = Backbone.Modules.Synchronization.Module.Features.Datawallets.ListModifications; +using ListModificationsSlice = Backbone.Modules.Synchronization.Module.Features.Datawallets.ListModifications; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.BuildingBlocks.Application.Pagination; using Backbone.DevelopmentKit.Identity.ValueObjects; @@ -9,7 +9,7 @@ using Backbone.UnitTestTools.TestDoubles.Fakes; using FakeItEasy; -namespace Backbone.Modules.Synchronization.Module.Tests.Tests.Datawallet.Queries.GetDatawalletModifications; +namespace Backbone.Modules.Synchronization.Module.Tests.Features.Datawallets.ListModifications; public class HandlerTests : AbstractTestsBase { @@ -43,7 +43,7 @@ public async Task Combines_multiple_cacheChanged_modifications() _arrangeContext.SaveEntity(datawallet); // Act - var result = await _handler.Handle(new ListModifications.Query { SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); + var result = await _handler.Handle(new ListModificationsSlice.Query { SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); // Assert result.ShouldHaveCount(1); @@ -66,7 +66,7 @@ public async Task Combines_multiple_update_modifications() _arrangeContext.SaveEntity(datawallet); // Act - var result = await _handler.Handle(new ListModifications.Query { SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); + var result = await _handler.Handle(new ListModificationsSlice.Query { SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); // Assert result.ShouldHaveCount(1); @@ -89,7 +89,7 @@ public async Task Does_not_combine_modifications_of_different_types() _arrangeContext.SaveEntity(datawallet); // Act - var result = await _handler.Handle(new ListModifications.Query { SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); + var result = await _handler.Handle(new ListModificationsSlice.Query { SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); // Assert result.ShouldHaveCount(2); @@ -113,7 +113,7 @@ public async Task Does_not_combine_modifications_with_different_ids() _arrangeContext.SaveEntity(datawallet); // Act - var result = await _handler.Handle(new ListModifications.Query { SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); + var result = await _handler.Handle(new ListModificationsSlice.Query { SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); // Assert result.ShouldHaveCount(2); @@ -137,7 +137,7 @@ public async Task Does_not_combine_modifications_with_different_payload_categori _arrangeContext.SaveEntity(datawallet); // Act - var result = await _handler.Handle(new ListModifications.Query { SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); + var result = await _handler.Handle(new ListModificationsSlice.Query { SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); // Assert result.ShouldHaveCount(2); @@ -154,7 +154,7 @@ public async Task Does_not_return_modifications_of_another_identity() _arrangeContext.SaveEntity(datawallet); // Act - var result = await _handler.Handle(new ListModifications.Query { SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); + var result = await _handler.Handle(new ListModificationsSlice.Query { SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); // Assert result.ShouldHaveCount(0); @@ -239,7 +239,7 @@ public async Task Handles_complex_case_correctly() _arrangeContext.SaveEntity(datawalletOfActiveIdentity); // Act - var result = await _handler.Handle(new ListModifications.Query { SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); + var result = await _handler.Handle(new ListModificationsSlice.Query { SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); // Assert result.ShouldHaveCount(9); @@ -274,7 +274,7 @@ public async Task Only_returns_modifications_after_given_local_index() _arrangeContext.SaveEntity(datawallet); // Act - var result = await _handler.Handle(new ListModifications.Query { LocalIndex = 0, SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); + var result = await _handler.Handle(new ListModificationsSlice.Query { LocalIndex = 0, SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); // Assert result.ShouldHaveCount(1); @@ -303,9 +303,9 @@ public async Task Paginates_returned_results() // Act var firstPage = - await _handler.Handle(new ListModifications.Query { PaginationFilter = new PaginationFilter(1, pageSize), SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); + await _handler.Handle(new ListModificationsSlice.Query { PaginationFilter = new PaginationFilter(1, pageSize), SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); var secondPage = - await _handler.Handle(new ListModifications.Query { PaginationFilter = new PaginationFilter(2, pageSize), SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); + await _handler.Handle(new ListModificationsSlice.Query { PaginationFilter = new PaginationFilter(2, pageSize), SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); // Assert firstPage.ShouldHaveCount(2); @@ -337,7 +337,7 @@ public async Task Returns_all_modifications_when_passing_no_local_index() _arrangeContext.SaveEntity(datawallet); // Act - var result = await _handler.Handle(new ListModifications.Query { SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); + var result = await _handler.Handle(new ListModificationsSlice.Query { SupportedDatawalletVersion = DATAWALLET_VERSION }, CancellationToken.None); // Assert result.ShouldHaveCount(2); diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/Commands/PushDatawalletModifications/HandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/Datawallets/PushDatawalletModifications/HandlerTests.cs similarity index 97% rename from Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/Commands/PushDatawalletModifications/HandlerTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Features/Datawallets/PushDatawalletModifications/HandlerTests.cs index 7481979691..db4575b125 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/Commands/PushDatawalletModifications/HandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/Datawallets/PushDatawalletModifications/HandlerTests.cs @@ -11,7 +11,7 @@ using Microsoft.Data.Sqlite; using Microsoft.EntityFrameworkCore; -namespace Backbone.Modules.Synchronization.Module.Tests.Tests.Datawallet.Commands.PushDatawalletModifications; +namespace Backbone.Modules.Synchronization.Module.Tests.Features.Datawallets.PushDatawalletModifications; public class HandlerTests : AbstractTestsBase { diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/Commands/PushDatawalletModifications/PushDatawalletModificationsCommandValidatorTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/Datawallets/PushDatawalletModifications/PushDatawalletModificationsCommandValidatorTests.cs similarity index 94% rename from Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/Commands/PushDatawalletModifications/PushDatawalletModificationsCommandValidatorTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Features/Datawallets/PushDatawalletModifications/PushDatawalletModificationsCommandValidatorTests.cs index d717bba585..a1c931098d 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/Commands/PushDatawalletModifications/PushDatawalletModificationsCommandValidatorTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/Datawallets/PushDatawalletModifications/PushDatawalletModificationsCommandValidatorTests.cs @@ -3,7 +3,7 @@ using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; using FluentValidation.TestHelper; -namespace Backbone.Modules.Synchronization.Module.Tests.Tests.Datawallet.Commands.PushDatawalletModifications; +namespace Backbone.Modules.Synchronization.Module.Tests.Features.Datawallets.PushDatawalletModifications; public class PushDatawalletModificationsCommandValidatorTests : AbstractTestsBase { diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/DTOs/PushDatawalletModificationItemValidatorTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/Datawallets/Shared/PushDatawalletModificationItemValidatorTests.cs similarity index 97% rename from Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/DTOs/PushDatawalletModificationItemValidatorTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Features/Datawallets/Shared/PushDatawalletModificationItemValidatorTests.cs index a138fa645f..9b638d5afa 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Datawallet/DTOs/PushDatawalletModificationItemValidatorTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/Datawallets/Shared/PushDatawalletModificationItemValidatorTests.cs @@ -1,7 +1,7 @@ using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; using FluentValidation.TestHelper; -namespace Backbone.Modules.Synchronization.Module.Tests.Tests.Datawallet.DTOs; +namespace Backbone.Modules.Synchronization.Module.Tests.Features.Datawallets.Shared; public class PushDatawalletModificationItemValidatorTests : AbstractTestsBase { diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/IdentityDeletionProcessStartedDomainEventHandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/IdentityDeletionProcessStarted/HandlerTests.cs similarity index 73% rename from Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/IdentityDeletionProcessStartedDomainEventHandlerTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/IdentityDeletionProcessStarted/HandlerTests.cs index c4d06419b2..cede66d991 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/IdentityDeletionProcessStartedDomainEventHandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/IdentityDeletionProcessStarted/HandlerTests.cs @@ -1,13 +1,13 @@ -using IdentityDeletionProcessStarted = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.IdentityDeletionProcessStarted; +using IdentityDeletionProcessStartedSlice = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.IdentityDeletionProcessStarted; using Backbone.Modules.Devices.Contracts.DomainEvents; using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using FakeItEasy; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Synchronization.Module.Tests.Tests.DomainEvents; +namespace Backbone.Modules.Synchronization.Module.Tests.Features.ExternalEvents.IdentityDeletionProcessStarted; -public class IdentityDeletionProcessStartedDomainEventHandlerTests : AbstractTestsBase +public class HandlerTests : AbstractTestsBase { [Fact] public async Task Creates_an_external_event_if_initiator_is_someone_else() @@ -18,7 +18,7 @@ public async Task Creates_an_external_event_if_initiator_is_someone_else() var fakeDbContext = A.Fake(); - var handler = new IdentityDeletionProcessStarted.Handler(fakeDbContext, A.Fake>()); + var handler = new IdentityDeletionProcessStartedSlice.Handler(fakeDbContext, A.Fake>()); // Act await handler.Handle(identityDeletionProcessStartedDomainEvent); @@ -37,7 +37,7 @@ public async Task Does_nothing_if_initiator_is_deletion_process_owner() var fakeDbContext = A.Fake(); - var handler = new IdentityDeletionProcessStarted.Handler(fakeDbContext, A.Fake>()); + var handler = new IdentityDeletionProcessStartedSlice.Handler(fakeDbContext, A.Fake>()); // Act await handler.Handle(identityDeletionProcessStartedDomainEvent); diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/IdentityDeletionProcessStatusChangedDomainEventHandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/IdentityDeletionProcessStatusChanged/HandlerTests.cs similarity index 71% rename from Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/IdentityDeletionProcessStatusChangedDomainEventHandlerTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/IdentityDeletionProcessStatusChanged/HandlerTests.cs index 2937169a26..e0f5626c55 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/IdentityDeletionProcessStatusChangedDomainEventHandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/IdentityDeletionProcessStatusChanged/HandlerTests.cs @@ -1,13 +1,13 @@ -using IdentityDeletionProcessStatusChanged = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.IdentityDeletionProcessStatusChanged; +using IdentityDeletionProcessStatusChangedSlice = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.IdentityDeletionProcessStatusChanged; using Backbone.Modules.Devices.Contracts.DomainEvents; using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using FakeItEasy; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Synchronization.Module.Tests.Tests.DomainEvents; +namespace Backbone.Modules.Synchronization.Module.Tests.Features.ExternalEvents.IdentityDeletionProcessStatusChanged; -public class IdentityDeletionProcessStatusChangedDomainEventHandlerTests : AbstractTestsBase +public class HandlerTests : AbstractTestsBase { [Fact] public async Task Creates_an_external_event_if_initiator_is_someone_else() @@ -19,8 +19,8 @@ public async Task Creates_an_external_event_if_initiator_is_someone_else() var mockDbContext = A.Fake(); - var handler = new IdentityDeletionProcessStatusChanged.Handler(mockDbContext, - A.Fake>()); + var handler = new IdentityDeletionProcessStatusChangedSlice.Handler(mockDbContext, + A.Fake>()); // Act await handler.Handle(identityDeletionProcessStatusChangedDomainEvent); @@ -39,8 +39,8 @@ public async Task Does_nothing_if_initiator_is_deletion_process_owner() var mockDbContext = A.Fake(); - var handler = new IdentityDeletionProcessStatusChanged.Handler(mockDbContext, - A.Fake>()); + var handler = new IdentityDeletionProcessStatusChangedSlice.Handler(mockDbContext, + A.Fake>()); // Act await handler.Handle(identityDeletionProcessStatusChangedDomainEvent); diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/MessageCreatedDomainEventHandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/MessageCreated/HandlerTests.cs similarity index 89% rename from Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/MessageCreatedDomainEventHandlerTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/MessageCreated/HandlerTests.cs index f8af7e0687..268329922e 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/MessageCreatedDomainEventHandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/MessageCreated/HandlerTests.cs @@ -1,4 +1,4 @@ -using MessageCreated = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.MessageCreated; +using MessageCreatedSlice = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.MessageCreated; using Backbone.Modules.Messages.Contracts.DomainEvents; using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Relationships; @@ -7,9 +7,9 @@ using FakeItEasy; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Synchronization.Module.Tests.Tests.DomainEvents; +namespace Backbone.Modules.Synchronization.Module.Tests.Features.ExternalEvents.MessageCreated; -public class MessageCreatedDomainEventHandlerTests : AbstractTestsBase +public class HandlerTests : AbstractTestsBase { [Fact] public async Task Creates_an_external_event_for_each_recipient() @@ -112,9 +112,9 @@ private IRelationshipsRepository RelationshipsRepositoryReturning(List>(); - return new MessageCreated.Handler(dbContext, relationshipsRepository, logger); + var logger = A.Dummy>(); + return new MessageCreatedSlice.Handler(dbContext, relationshipsRepository, logger); } } diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/PeerDeletedDomainEventHandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/PeerDeleted/HandlerTests.cs similarity index 66% rename from Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/PeerDeletedDomainEventHandlerTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/PeerDeleted/HandlerTests.cs index b198085550..64c13e720d 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/PeerDeletedDomainEventHandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/PeerDeleted/HandlerTests.cs @@ -1,13 +1,13 @@ -using PeerDeleted = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerDeleted; +using PeerDeletedSlice = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerDeleted; using Backbone.Modules.Relationships.Contracts.DomainEvents; using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using FakeItEasy; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Synchronization.Module.Tests.Tests.DomainEvents; +namespace Backbone.Modules.Synchronization.Module.Tests.Features.ExternalEvents.PeerDeleted; -public class PeerDeletedDomainEventHandlerTests : AbstractTestsBase +public class HandlerTests : AbstractTestsBase { [Fact] public async Task Creates_an_external_event() @@ -26,8 +26,8 @@ public async Task Creates_an_external_event() A.CallTo(() => mockDbContext.CreateExternalEvent(A._)).MustHaveHappenedOnceExactly(); } - private static PeerDeleted.Handler CreateHandler(ISynchronizationDbContext mockDbContext) + private static PeerDeletedSlice.Handler CreateHandler(ISynchronizationDbContext mockDbContext) { - return new PeerDeleted.Handler(mockDbContext, A.Fake>()); + return new PeerDeletedSlice.Handler(mockDbContext, A.Fake>()); } } diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/PeerDeletionCancelledDomainEventHandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/PeerDeletionCancelled/HandlerTests.cs similarity index 69% rename from Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/PeerDeletionCancelledDomainEventHandlerTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/PeerDeletionCancelled/HandlerTests.cs index 24509bf75f..15c2281877 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/PeerDeletionCancelledDomainEventHandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/PeerDeletionCancelled/HandlerTests.cs @@ -1,13 +1,13 @@ -using PeerDeletionCancelled = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerDeletionCancelled; +using PeerDeletionCancelledSlice = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerDeletionCancelled; using Backbone.Modules.Relationships.Contracts.DomainEvents; using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using FakeItEasy; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Synchronization.Module.Tests.Tests.DomainEvents; +namespace Backbone.Modules.Synchronization.Module.Tests.Features.ExternalEvents.PeerDeletionCancelled; -public class PeerDeletionCancelledDomainEventHandlerTests : AbstractTestsBase +public class HandlerTests : AbstractTestsBase { [Fact] public async Task Creates_an_external_event() @@ -19,8 +19,8 @@ public async Task Creates_an_external_event() var mockDbContext = A.Fake(); - var handler = new PeerDeletionCancelled.Handler(mockDbContext, - A.Fake>()); + var handler = new PeerDeletionCancelledSlice.Handler(mockDbContext, + A.Fake>()); // Act await handler.Handle(domainEvent); diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/PeerToBeDeletedDomainEventHandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/PeerToBeDeleted/HandlerTests.cs similarity index 68% rename from Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/PeerToBeDeletedDomainEventHandlerTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/PeerToBeDeleted/HandlerTests.cs index 5d590e1861..7509dd611a 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/PeerToBeDeletedDomainEventHandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/PeerToBeDeleted/HandlerTests.cs @@ -1,13 +1,13 @@ -using PeerToBeDeleted = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerToBeDeleted; +using PeerToBeDeletedSlice = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerToBeDeleted; using Backbone.Modules.Relationships.Contracts.DomainEvents; using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using FakeItEasy; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Synchronization.Module.Tests.Tests.DomainEvents; +namespace Backbone.Modules.Synchronization.Module.Tests.Features.ExternalEvents.PeerToBeDeleted; -public class PeerToBeDeletedDomainEventHandlerTests : AbstractTestsBase +public class HandlerTests : AbstractTestsBase { [Fact] public async Task Creates_an_external_event() @@ -29,8 +29,8 @@ await handler.Handle(new PeerToBeDeletedDomainEvent A.CallTo(() => mockDbContext.CreateExternalEvent(A._)).MustHaveHappenedOnceExactly(); } - private static PeerToBeDeleted.Handler CreateHandler(ISynchronizationDbContext mockDbContext) + private static PeerToBeDeletedSlice.Handler CreateHandler(ISynchronizationDbContext mockDbContext) { - return new PeerToBeDeleted.Handler(mockDbContext, A.Fake>()); + return new PeerToBeDeletedSlice.Handler(mockDbContext, A.Fake>()); } } diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/RelationshipReactivationCompletedDomainEventHandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/RelationshipReactivationCompleted/HandlerTests.cs similarity index 83% rename from Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/RelationshipReactivationCompletedDomainEventHandlerTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/RelationshipReactivationCompleted/HandlerTests.cs index ec5628a517..907e7ce5f4 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/RelationshipReactivationCompletedDomainEventHandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/RelationshipReactivationCompleted/HandlerTests.cs @@ -1,4 +1,4 @@ -using RelationshipReactivationCompleted = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipReactivationCompleted; +using RelationshipReactivationCompletedSlice = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipReactivationCompleted; using Backbone.Modules.Relationships.Contracts.DomainEvents; using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Relationships; @@ -6,9 +6,9 @@ using FakeItEasy; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Synchronization.Module.Tests.Tests.DomainEvents; +namespace Backbone.Modules.Synchronization.Module.Tests.Features.ExternalEvents.RelationshipReactivationCompleted; -public class RelationshipReactivationCompletedDomainEventHandlerTests : AbstractTestsBase +public class HandlerTests : AbstractTestsBase { [Fact] public async Task Creates_an_external_event() @@ -65,10 +65,10 @@ private static RelationshipReactivationCompletedDomainEvent CreateReactivationCo }; } - private static RelationshipReactivationCompleted.Handler CreateHandler(ISynchronizationDbContext dbContext) + private static RelationshipReactivationCompletedSlice.Handler CreateHandler(ISynchronizationDbContext dbContext) { - var logger = A.Dummy>(); + var logger = A.Dummy>(); - return new RelationshipReactivationCompleted.Handler(dbContext, logger); + return new RelationshipReactivationCompletedSlice.Handler(dbContext, logger); } } diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/RelationshipStatusChangedDomainEventHandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/RelationshipStatusChanged/HandlerTests.cs similarity index 91% rename from Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/RelationshipStatusChangedDomainEventHandlerTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/RelationshipStatusChanged/HandlerTests.cs index c3e1d993ee..853edefb2f 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/RelationshipStatusChangedDomainEventHandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/RelationshipStatusChanged/HandlerTests.cs @@ -1,4 +1,4 @@ -using RelationshipStatusChanged = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipStatusChanged; +using RelationshipStatusChangedSlice = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipStatusChanged; using Backbone.Modules.Relationships.Contracts.DomainEvents; using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Relationships; @@ -6,9 +6,9 @@ using FakeItEasy; using Microsoft.Extensions.Logging; -namespace Backbone.Modules.Synchronization.Module.Tests.Tests.DomainEvents; +namespace Backbone.Modules.Synchronization.Module.Tests.Features.ExternalEvents.RelationshipStatusChanged; -public class RelationshipStatusChangedDomainEventHandlerTests : AbstractTestsBase +public class HandlerTests : AbstractTestsBase { [Fact] public async Task Creates_an_external_event() @@ -154,8 +154,8 @@ public async Task Calls_DeleteBlockedExternalEventsWithTypeAndContext_when_new_s A.CallTo(() => mockDbContext.DeleteBlockedExternalEventsWithTypeAndContext(ExternalEventType.MessageReceived, relationshipId, A._)).MustHaveHappenedOnceExactly(); } - private static RelationshipStatusChanged.Handler CreateHandler(ISynchronizationDbContext dbContext) + private static RelationshipStatusChangedSlice.Handler CreateHandler(ISynchronizationDbContext dbContext) { - return new RelationshipStatusChanged.Handler(dbContext, A.Fake>()); + return new RelationshipStatusChangedSlice.Handler(dbContext, A.Fake>()); } } diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/TokenLockedDomainEventHandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/TokenLocked/HandlerTests.cs similarity index 70% rename from Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/TokenLockedDomainEventHandlerTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/TokenLocked/HandlerTests.cs index 367d83729f..61d5bc745d 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/DomainEvents/TokenLockedDomainEventHandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/TokenLocked/HandlerTests.cs @@ -1,12 +1,12 @@ -using TokenLocked = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.TokenLocked; +using TokenLockedSlice = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.TokenLocked; using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using Backbone.Modules.Tokens.Contracts.DomainEvents; using FakeItEasy; -namespace Backbone.Modules.Synchronization.Module.Tests.Tests.DomainEvents; +namespace Backbone.Modules.Synchronization.Module.Tests.Features.ExternalEvents.TokenLocked; -public class TokenLockedDomainEventHandlerTests : AbstractTestsBase +public class HandlerTests : AbstractTestsBase { [Fact] public async Task Sends_a_push_notification() @@ -14,7 +14,7 @@ public async Task Sends_a_push_notification() // Arrange var fakeDbContext = A.Fake(); var identityAddress = CreateRandomIdentityAddress(); - var handler = new TokenLocked.Handler(fakeDbContext); + var handler = new TokenLockedSlice.Handler(fakeDbContext); var domainEvent = new TokenLockedDomainEvent { TokenId = "TOK00000000000000001", CreatedBy = identityAddress }; // Act diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Identities/IdentityDeleterTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs similarity index 65% rename from Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Identities/IdentityDeleterTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs index 71e0bb3f6e..24ec067ece 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/Identities/IdentityDeleterTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs @@ -1,12 +1,12 @@ -using DeleteDatawalletsOfIdentity = Backbone.Modules.Synchronization.Module.Features.Datawallets.DeleteDatawalletsOfIdentity; -using DeleteExternalEventsOfIdentity = Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteExternalEventsOfIdentity; -using DeleteSyncRunsOfIdentity = Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteSyncRunsOfIdentity; +using DeleteDatawalletsOfIdentitySlice = Backbone.Modules.Synchronization.Module.Features.Datawallets.DeleteDatawalletsOfIdentity; +using DeleteExternalEventsOfIdentitySlice = Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteExternalEventsOfIdentity; +using DeleteSyncRunsOfIdentitySlice = Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteSyncRunsOfIdentity; using Backbone.BuildingBlocks.Application.Identities; using Backbone.Modules.Synchronization.Module.Features.Identities.DeleteIdentity; using FakeItEasy; using MediatR; -namespace Backbone.Modules.Synchronization.Module.Tests.Tests.Identities; +namespace Backbone.Modules.Synchronization.Module.Tests.Features.Identities.DeleteIdentity; public class IdentityDeleterTests : AbstractTestsBase { @@ -23,9 +23,9 @@ public async Task Deleter_calls_correct_command() await deleter.Delete(identityAddress); // Assert - A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); - A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); - A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); + A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); + A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); + A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); } [Fact] diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/FinalizeSyncRun/HandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/SyncRuns/FinalizeExternalEventSync/HandlerTests.cs similarity index 79% rename from Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/FinalizeSyncRun/HandlerTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Features/SyncRuns/FinalizeExternalEventSync/HandlerTests.cs index a266eca44b..81bdf835c4 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/FinalizeSyncRun/HandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/SyncRuns/FinalizeExternalEventSync/HandlerTests.cs @@ -1,4 +1,4 @@ -using FinalizeExternalEventSync = Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeExternalEventSync; +using FinalizeExternalEventSyncSlice = Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeExternalEventSync; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; @@ -8,7 +8,7 @@ using Backbone.UnitTestTools.Shouldly.Extensions; using FakeItEasy; -namespace Backbone.Modules.Synchronization.Module.Tests.Tests.SyncRuns.Commands.FinalizeSyncRun; +namespace Backbone.Modules.Synchronization.Module.Tests.Features.SyncRuns.FinalizeExternalEventSync; public class HandlerTests : RequestHandlerTestsBase { @@ -34,7 +34,7 @@ public async Task Cannot_be_finalized_by_other_identity() var handler = CreateHandler(_activeIdentity, _activeDevice); // Act - var acting = async () => await handler.Handle(new FinalizeExternalEventSync.Command { SyncRunId = syncRun.Id }, CancellationToken.None); + var acting = async () => await handler.Handle(new FinalizeExternalEventSyncSlice.Command { SyncRunId = syncRun.Id }, CancellationToken.None); // Assert await acting.ShouldThrowAsync().ShouldContainMessage("SyncRun"); @@ -56,7 +56,7 @@ public async Task Cannot_finalize_when_no_active_sync_run_exists() // Act var acting = async () => - await handler.Handle(new FinalizeExternalEventSync.Command { SyncRunId = syncRun.Id, DatawalletModifications = [], ExternalEventResults = [] }, CancellationToken.None); + await handler.Handle(new FinalizeExternalEventSyncSlice.Command { SyncRunId = syncRun.Id, DatawalletModifications = [], ExternalEventResults = [] }, CancellationToken.None); // Assert await acting.ShouldThrowAsync().ShouldHaveErrorCode("error.platform.validation.syncRun.syncRunAlreadyFinalized"); @@ -77,7 +77,7 @@ public async Task Finalize_sync_run_without_results_succeeds() var handler = CreateHandler(_activeIdentity, _activeDevice); // Act - await handler.Handle(new FinalizeExternalEventSync.Command { SyncRunId = syncRun.Id, ExternalEventResults = [], DatawalletModifications = [] }, CancellationToken.None); + await handler.Handle(new FinalizeExternalEventSyncSlice.Command { SyncRunId = syncRun.Id, ExternalEventResults = [], DatawalletModifications = [] }, CancellationToken.None); // Assert // No Exception means success @@ -101,9 +101,9 @@ public async Task Item_results_with_error_code_delete_sync_run_reference() var handler = CreateHandler(_activeIdentity, _activeDevice); // Act - var results = new List { new(item.Id, "some-random-error-code") }; + var results = new List { new(item.Id, "some-random-error-code") }; - await handler.Handle(new FinalizeExternalEventSync.Command { SyncRunId = syncRun.Id, DatawalletModifications = [], ExternalEventResults = results }, CancellationToken.None); + await handler.Handle(new FinalizeExternalEventSyncSlice.Command { SyncRunId = syncRun.Id, DatawalletModifications = [], ExternalEventResults = results }, CancellationToken.None); // Assert var externalEvent = _assertionContext.ExternalEvents.First(i => i.Id == item.Id); externalEvent.SyncRunId.ShouldBeNull(); @@ -129,8 +129,8 @@ public async Task Missing_results_lead_to_SyncErrors() var handler = CreateHandler(_activeIdentity, _activeDevice); // Act - var eventResults = new List { new(item1.Id) { ExternalEventId = item1.Id } }; - await handler.Handle(new FinalizeExternalEventSync.Command { SyncRunId = syncRun.Id, ExternalEventResults = eventResults }, CancellationToken.None); + var eventResults = new List { new(item1.Id) { ExternalEventId = item1.Id } }; + await handler.Handle(new FinalizeExternalEventSyncSlice.Command { SyncRunId = syncRun.Id, ExternalEventResults = eventResults }, CancellationToken.None); // Assert _assertionContext.SyncErrors.ShouldContain(e => e.ExternalEventId == item2.Id && e.ErrorCode == "notProcessed"); @@ -164,7 +164,7 @@ public async Task Passed_DatawalletModifications_are_saved_to_database() } }; - await handler.Handle(new FinalizeExternalEventSync.Command { SyncRunId = syncRun.Id, DatawalletModifications = datawalletModifications }, CancellationToken.None); + await handler.Handle(new FinalizeExternalEventSyncSlice.Command { SyncRunId = syncRun.Id, DatawalletModifications = datawalletModifications }, CancellationToken.None); // Assert _assertionContext.DatawalletModifications.ShouldHaveCount(1); @@ -188,9 +188,9 @@ public async Task Successful_item_results_do_not_delete_sync_run_reference() var handler = CreateHandler(_activeIdentity, _activeDevice); // Act - var results = new List { new(item.Id) }; + var results = new List { new(item.Id) }; - await handler.Handle(new FinalizeExternalEventSync.Command { SyncRunId = syncRun.Id, ExternalEventResults = results }, CancellationToken.None); + await handler.Handle(new FinalizeExternalEventSyncSlice.Command { SyncRunId = syncRun.Id, ExternalEventResults = results }, CancellationToken.None); // Assert var externalEvent = _assertionContext.ExternalEvents.First(i => i.Id == item.Id); externalEvent.SyncRunId.ShouldBe(syncRun.Id); @@ -214,8 +214,8 @@ public async Task Sync_errors_for_item_results_with_error_code_are_created() var handler = CreateHandler(_activeIdentity, _activeDevice); // Act - var results = new List { new(item.Id, "some-random-error-code") }; - await handler.Handle(new FinalizeExternalEventSync.Command { SyncRunId = syncRun.Id, ExternalEventResults = results }, CancellationToken.None); + var results = new List { new(item.Id, "some-random-error-code") }; + await handler.Handle(new FinalizeExternalEventSyncSlice.Command { SyncRunId = syncRun.Id, ExternalEventResults = results }, CancellationToken.None); // Assert _assertionContext.SyncErrors @@ -237,7 +237,7 @@ public async Task Sync_run_can_only_be_finalized_by_creator_device() var handler = CreateHandler(_activeIdentity, _activeDevice); // Act - Func acting = async () => await handler.Handle(new FinalizeExternalEventSync.Command { SyncRunId = syncRun.Id }, CancellationToken.None); + Func acting = async () => await handler.Handle(new FinalizeExternalEventSyncSlice.Command { SyncRunId = syncRun.Id }, CancellationToken.None); // Assert await acting.ShouldThrowAsync().ShouldHaveErrorCode("error.platform.validation.syncRun.cannotFinalizeSyncRunStartedByAnotherDevice"); diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/RefreshExpirationTimeOfSyncRun/HandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/HandlerTests.cs similarity index 97% rename from Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/RefreshExpirationTimeOfSyncRun/HandlerTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/HandlerTests.cs index 09f239738c..079aeeae80 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/RefreshExpirationTimeOfSyncRun/HandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/HandlerTests.cs @@ -8,7 +8,7 @@ using Backbone.UnitTestTools.Shouldly.Extensions; using FakeItEasy; -namespace Backbone.Modules.Synchronization.Module.Tests.Tests.SyncRuns.Commands.RefreshExpirationTimeOfSyncRun; +namespace Backbone.Modules.Synchronization.Module.Tests.Features.SyncRuns.RefreshExpirationTimeOfSyncRun; public class HandlerTests : RequestHandlerTestsBase { diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/StartSyncRun/HandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/SyncRuns/StartSyncRun/HandlerTests.cs similarity index 99% rename from Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/StartSyncRun/HandlerTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Features/SyncRuns/StartSyncRun/HandlerTests.cs index eee3828b7f..ad4866f470 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/StartSyncRun/HandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/SyncRuns/StartSyncRun/HandlerTests.cs @@ -13,7 +13,7 @@ using Microsoft.Data.Sqlite; using Microsoft.EntityFrameworkCore; -namespace Backbone.Modules.Synchronization.Module.Tests.Tests.SyncRuns.Commands.StartSyncRun; +namespace Backbone.Modules.Synchronization.Module.Tests.Features.SyncRuns.StartSyncRun; public class HandlerTests : AbstractTestsBase { diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/StartSyncRun/StartSyncRunCommandValidatorTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/SyncRuns/StartSyncRun/StartSyncRunCommandValidatorTests.cs similarity index 92% rename from Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/StartSyncRun/StartSyncRunCommandValidatorTests.cs rename to Modules/Synchronization/test/Synchronization.Module.Tests/Features/SyncRuns/StartSyncRun/StartSyncRunCommandValidatorTests.cs index 968bf6b2cb..a985142989 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Tests/SyncRuns/Commands/StartSyncRun/StartSyncRunCommandValidatorTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/SyncRuns/StartSyncRun/StartSyncRunCommandValidatorTests.cs @@ -3,7 +3,7 @@ using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; using FluentValidation.TestHelper; -namespace Backbone.Modules.Synchronization.Module.Tests.Tests.SyncRuns.Commands.StartSyncRun; +namespace Backbone.Modules.Synchronization.Module.Tests.Features.SyncRuns.StartSyncRun; public class StartSyncRunCommandValidatorTests : AbstractTestsBase { diff --git a/Modules/Tokens/test/Tokens.Domain.Tests/Tests/Tokens/ResetAccessFailedCountTests.cs b/Modules/Tokens/test/Tokens.Domain.Tests/Entities/ResetAccessFailedCountTests.cs similarity index 87% rename from Modules/Tokens/test/Tokens.Domain.Tests/Tests/Tokens/ResetAccessFailedCountTests.cs rename to Modules/Tokens/test/Tokens.Domain.Tests/Entities/ResetAccessFailedCountTests.cs index def7325372..01635e0cea 100644 --- a/Modules/Tokens/test/Tokens.Domain.Tests/Tests/Tokens/ResetAccessFailedCountTests.cs +++ b/Modules/Tokens/test/Tokens.Domain.Tests/Entities/ResetAccessFailedCountTests.cs @@ -1,6 +1,6 @@ using static Backbone.Modules.Tokens.Domain.Tests.TestHelpers.TestData; -namespace Backbone.Modules.Tokens.Domain.Tests.Tests.Tokens; +namespace Backbone.Modules.Tokens.Domain.Tests.Entities; public class ResetAccessFailedCountTests : AbstractTestsBase { diff --git a/Modules/Tokens/test/Tokens.Domain.Tests/Tests/Tokens/AnonymizeForIdentityTests.cs b/Modules/Tokens/test/Tokens.Domain.Tests/Entities/TokenAnonymizeForIdentityTests.cs similarity index 96% rename from Modules/Tokens/test/Tokens.Domain.Tests/Tests/Tokens/AnonymizeForIdentityTests.cs rename to Modules/Tokens/test/Tokens.Domain.Tests/Entities/TokenAnonymizeForIdentityTests.cs index 5642c7beb2..cb995b0331 100644 --- a/Modules/Tokens/test/Tokens.Domain.Tests/Tests/Tokens/AnonymizeForIdentityTests.cs +++ b/Modules/Tokens/test/Tokens.Domain.Tests/Entities/TokenAnonymizeForIdentityTests.cs @@ -3,7 +3,7 @@ using Backbone.Modules.Tokens.Domain.Entities; using Backbone.UnitTestTools.Shouldly.Extensions; -namespace Backbone.Modules.Tokens.Domain.Tests.Tests.Tokens; +namespace Backbone.Modules.Tokens.Domain.Tests.Entities; public class TokenAnonymizeForIdentityTests : AbstractTestsBase { diff --git a/Modules/Tokens/test/Tokens.Domain.Tests/Tests/Tokens/TokenTests.cs b/Modules/Tokens/test/Tokens.Domain.Tests/Entities/TokenTests.cs similarity index 96% rename from Modules/Tokens/test/Tokens.Domain.Tests/Tests/Tokens/TokenTests.cs rename to Modules/Tokens/test/Tokens.Domain.Tests/Entities/TokenTests.cs index 7bd1b66b3c..e5a6742c2e 100644 --- a/Modules/Tokens/test/Tokens.Domain.Tests/Tests/Tokens/TokenTests.cs +++ b/Modules/Tokens/test/Tokens.Domain.Tests/Entities/TokenTests.cs @@ -4,7 +4,7 @@ using Backbone.Modules.Tokens.Domain.Tests.TestHelpers; using Backbone.UnitTestTools.Shouldly.Extensions; -namespace Backbone.Modules.Tokens.Domain.Tests.Tests.Tokens; +namespace Backbone.Modules.Tokens.Domain.Tests.Entities; public class TokenTests : AbstractTestsBase { diff --git a/Modules/Tokens/test/Tokens.Domain.Tests/Tests/Tokens/TryToAccessTests.TestData.cs b/Modules/Tokens/test/Tokens.Domain.Tests/Entities/TokenTryToAccessTests.TestData.cs similarity index 99% rename from Modules/Tokens/test/Tokens.Domain.Tests/Tests/Tokens/TryToAccessTests.TestData.cs rename to Modules/Tokens/test/Tokens.Domain.Tests/Entities/TokenTryToAccessTests.TestData.cs index 29e92f0c60..ba9ab23c46 100644 --- a/Modules/Tokens/test/Tokens.Domain.Tests/Tests/Tokens/TryToAccessTests.TestData.cs +++ b/Modules/Tokens/test/Tokens.Domain.Tests/Entities/TokenTryToAccessTests.TestData.cs @@ -1,7 +1,7 @@ using Backbone.Modules.Tokens.Domain.Entities; using Xunit.Sdk; -namespace Backbone.Modules.Tokens.Domain.Tests.Tests.Tokens; +namespace Backbone.Modules.Tokens.Domain.Tests.Entities; public partial class TokenTryToAccessTests { diff --git a/Modules/Tokens/test/Tokens.Domain.Tests/Tests/Tokens/TryToAccessTests.cs b/Modules/Tokens/test/Tokens.Domain.Tests/Entities/TokenTryToAccessTests.cs similarity index 99% rename from Modules/Tokens/test/Tokens.Domain.Tests/Tests/Tokens/TryToAccessTests.cs rename to Modules/Tokens/test/Tokens.Domain.Tests/Entities/TokenTryToAccessTests.cs index 103e79584a..92c66ff94f 100644 --- a/Modules/Tokens/test/Tokens.Domain.Tests/Tests/Tokens/TryToAccessTests.cs +++ b/Modules/Tokens/test/Tokens.Domain.Tests/Entities/TokenTryToAccessTests.cs @@ -5,7 +5,7 @@ using Backbone.Tooling; using Backbone.UnitTestTools.Shouldly.Extensions; -namespace Backbone.Modules.Tokens.Domain.Tests.Tests.Tokens; +namespace Backbone.Modules.Tokens.Domain.Tests.Entities; public partial class TokenTryToAccessTests : AbstractTestsBase { diff --git a/Modules/Tokens/test/Tokens.Domain.Tests/Tests/Tokens/UpdateContentTests.cs b/Modules/Tokens/test/Tokens.Domain.Tests/Entities/UpdateContentTests.cs similarity index 98% rename from Modules/Tokens/test/Tokens.Domain.Tests/Tests/Tokens/UpdateContentTests.cs rename to Modules/Tokens/test/Tokens.Domain.Tests/Entities/UpdateContentTests.cs index a2f48cca18..46b4f459af 100644 --- a/Modules/Tokens/test/Tokens.Domain.Tests/Tests/Tokens/UpdateContentTests.cs +++ b/Modules/Tokens/test/Tokens.Domain.Tests/Entities/UpdateContentTests.cs @@ -1,7 +1,7 @@ using Backbone.Modules.Tokens.Domain.Entities; using static Backbone.Modules.Tokens.Domain.Tests.TestHelpers.TestData; -namespace Backbone.Modules.Tokens.Domain.Tests.Tests.Tokens; +namespace Backbone.Modules.Tokens.Domain.Tests.Entities; public class UpdateContentTests : AbstractTestsBase { diff --git a/Modules/Tokens/test/Tokens.Module.Tests/Tests/Identities/IdentityDeleterTests.cs b/Modules/Tokens/test/Tokens.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs similarity index 80% rename from Modules/Tokens/test/Tokens.Module.Tests/Tests/Identities/IdentityDeleterTests.cs rename to Modules/Tokens/test/Tokens.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs index e2dc7ef609..79e4f4fffe 100644 --- a/Modules/Tokens/test/Tokens.Module.Tests/Tests/Identities/IdentityDeleterTests.cs +++ b/Modules/Tokens/test/Tokens.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs @@ -1,10 +1,10 @@ -using DeleteTokensOfIdentity = Backbone.Modules.Tokens.Module.Features.Tokens.DeleteTokensOfIdentity; +using DeleteTokensOfIdentitySlice = Backbone.Modules.Tokens.Module.Features.Tokens.DeleteTokensOfIdentity; using Backbone.BuildingBlocks.Application.Identities; using Backbone.Modules.Tokens.Module.Features.Identities.DeleteIdentity; using FakeItEasy; using MediatR; -namespace Backbone.Modules.Tokens.Module.Tests.Tests.Identities; +namespace Backbone.Modules.Tokens.Module.Tests.Features.Identities.DeleteIdentity; public class IdentityDeleterTests : AbstractTestsBase { @@ -21,7 +21,7 @@ public async Task Deleter_calls_correct_command() await deleter.Delete(identityAddress); // Assert - A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); + A.CallTo(() => mockMediator.Send(A.That.Matches(command => command.IdentityAddress == identityAddress), A._)).MustHaveHappened(); } [Fact] diff --git a/Modules/Tokens/test/Tokens.Module.Tests/Tests/Tokens/CreateToken/ValidatorTests.cs b/Modules/Tokens/test/Tokens.Module.Tests/Features/Tokens/CreateToken/ValidatorTests.cs similarity index 98% rename from Modules/Tokens/test/Tokens.Module.Tests/Tests/Tokens/CreateToken/ValidatorTests.cs rename to Modules/Tokens/test/Tokens.Module.Tests/Features/Tokens/CreateToken/ValidatorTests.cs index b6f3e9a2b8..8cf368e9c2 100644 --- a/Modules/Tokens/test/Tokens.Module.Tests/Tests/Tokens/CreateToken/ValidatorTests.cs +++ b/Modules/Tokens/test/Tokens.Module.Tests/Features/Tokens/CreateToken/ValidatorTests.cs @@ -7,7 +7,7 @@ using FakeItEasy; using FluentValidation.TestHelper; -namespace Backbone.Modules.Tokens.Module.Tests.Tests.Tokens.CreateToken; +namespace Backbone.Modules.Tokens.Module.Tests.Features.Tokens.CreateToken; public class ValidatorTests : AbstractTestsBase { diff --git a/Modules/Tokens/test/Tokens.Module.Tests/Tests/Tokens/DeleteTokensOfIdentity/HandlerTests.cs b/Modules/Tokens/test/Tokens.Module.Tests/Features/Tokens/DeleteTokensOfIdentity/HandlerTests.cs similarity index 91% rename from Modules/Tokens/test/Tokens.Module.Tests/Tests/Tokens/DeleteTokensOfIdentity/HandlerTests.cs rename to Modules/Tokens/test/Tokens.Module.Tests/Features/Tokens/DeleteTokensOfIdentity/HandlerTests.cs index 8d570214e8..6308844dd8 100644 --- a/Modules/Tokens/test/Tokens.Module.Tests/Tests/Tokens/DeleteTokensOfIdentity/HandlerTests.cs +++ b/Modules/Tokens/test/Tokens.Module.Tests/Features/Tokens/DeleteTokensOfIdentity/HandlerTests.cs @@ -5,7 +5,7 @@ using Backbone.Modules.Tokens.Domain.Entities; using FakeItEasy; -namespace Backbone.Modules.Tokens.Module.Tests.Tests.Tokens.DeleteTokensOfIdentity; +namespace Backbone.Modules.Tokens.Module.Tests.Features.Tokens.DeleteTokensOfIdentity; public class HandlerTests : AbstractTestsBase { From cdbf615a7a98ba09c301e15693c8bcc6e4f0d408 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20H=C3=BCgel?= Date: Fri, 2 Oct 2026 15:18:41 +0200 Subject: [PATCH 21/25] chore: remove stuff that was only there for migration --- .../IServiceCollectionExtensions.cs | 3 - Backbone.Tests.ArchUnit/CQRS.cs | 8 +- Backbone.Tests.ArchUnit/CleanArchitecture.cs | 6 -- .../MessagesCleanArchitecture.cs | 59 -------------- .../VerticalSliceArchitecture.cs | 56 ++++--------- .../HandleHttpCachingAttribute.cs | 78 ------------------ .../ModelBinders/GenericArrayModelBinder.cs | 79 ------------------- .../AnnouncementsModule.cs | 12 ++- .../ApplicationServiceCollectionExtensions.cs | 21 ----- .../ApplicationServiceCollectionExtensions.cs | 20 ----- .../src/Challenges.Module/ChallengesModule.cs | 12 ++- .../ApplicationServiceCollectionExtensions.cs | 53 ------------- .../src/Devices.Module/DevicesModule.cs | 42 +++++++++- .../ApplicationServiceCollectionExtensions.cs | 21 ----- Modules/Files/src/Files.Module/FilesModule.cs | 12 ++- .../ApplicationServiceCollectionExtensions.cs | 33 -------- .../src/Messages.Module/MessagesModule.cs | 25 +++++- .../ApplicationServiceCollectionExtensions.cs | 61 -------------- .../Quotas/src/Quotas.Module/QuotasModule.cs | 49 +++++++++++- .../Relationships.Module/ApplicationErrors.cs | 9 --- .../ApplicationServiceCollectionExtensions.cs | 48 ----------- .../RelationshipsModule.cs | 33 +++++++- .../ApplicationServiceCollectionExtensions.cs | 46 ----------- .../SynchronizationModule.cs | 34 +++++++- .../ApplicationServiceCollectionExtensions.cs | 14 ---- Modules/Tags/src/Tags.Module/TagsModule.cs | 6 +- .../ApplicationServiceCollectionExtensions.cs | 22 ------ .../Tokens/src/Tokens.Module/TokensModule.cs | 13 ++- 28 files changed, 240 insertions(+), 635 deletions(-) delete mode 100644 Backbone.Tests.ArchUnit/MessagesCleanArchitecture.cs delete mode 100644 BuildingBlocks/src/BuildingBlocks.API/Mvc/ControllerAttributes/HandleHttpCachingAttribute.cs delete mode 100644 BuildingBlocks/src/BuildingBlocks.API/Mvc/ModelBinders/GenericArrayModelBinder.cs delete mode 100644 Modules/Announcements/src/Announcements.Module/ApplicationServiceCollectionExtensions.cs delete mode 100644 Modules/Challenges/src/Challenges.Module/ApplicationServiceCollectionExtensions.cs delete mode 100644 Modules/Devices/src/Devices.Module/ApplicationServiceCollectionExtensions.cs delete mode 100644 Modules/Files/src/Files.Module/ApplicationServiceCollectionExtensions.cs delete mode 100644 Modules/Messages/src/Messages.Module/ApplicationServiceCollectionExtensions.cs delete mode 100644 Modules/Quotas/src/Quotas.Module/ApplicationServiceCollectionExtensions.cs delete mode 100644 Modules/Relationships/src/Relationships.Module/ApplicationServiceCollectionExtensions.cs delete mode 100644 Modules/Synchronization/src/Synchronization.Module/ApplicationServiceCollectionExtensions.cs delete mode 100644 Modules/Tags/src/Tags.Module/ApplicationServiceCollectionExtensions.cs delete mode 100644 Modules/Tokens/src/Tokens.Module/ApplicationServiceCollectionExtensions.cs diff --git a/Applications/ConsumerApi/src/Extensions/IServiceCollectionExtensions.cs b/Applications/ConsumerApi/src/Extensions/IServiceCollectionExtensions.cs index 88f6a97e81..d3f7719082 100644 --- a/Applications/ConsumerApi/src/Extensions/IServiceCollectionExtensions.cs +++ b/Applications/ConsumerApi/src/Extensions/IServiceCollectionExtensions.cs @@ -5,7 +5,6 @@ using Backbone.BuildingBlocks.API; using Backbone.BuildingBlocks.API.Mvc; using Backbone.BuildingBlocks.API.Mvc.ExceptionFilters; -using Backbone.BuildingBlocks.API.Mvc.ModelBinders; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.ConsumerApi.Configuration; @@ -27,8 +26,6 @@ public static IServiceCollection AddCustomAspNetCore(this IServiceCollection ser .AddControllersWithViews(options => { options.Filters.Add(typeof(CustomExceptionFilter)); - - options.ModelBinderProviders.Insert(0, new GenericArrayModelBinderProvider()); } ) .ConfigureApiBehaviorOptions(options => diff --git a/Backbone.Tests.ArchUnit/CQRS.cs b/Backbone.Tests.ArchUnit/CQRS.cs index c4c6ba97a9..412017442a 100644 --- a/Backbone.Tests.ArchUnit/CQRS.cs +++ b/Backbone.Tests.ArchUnit/CQRS.cs @@ -31,18 +31,18 @@ public void ClassesInheritingFromIRequestShouldBeNamedCommandOrQuery() } [Fact] - public void CommandsShouldResideInCommandsNamespace() + public void CommandsShouldResideInFeaturesNamespace() { Classes().That().Are(COMMANDS) - .Should().ResideInNamespaceMatching(".+(\\.Commands\\.|\\.Features\\.)") + .Should().ResideInNamespaceMatching(@"^Backbone\.Modules\.[^.]+\.Module\.Features\..*") .Check(Backbone.ARCHITECTURE); } [Fact] - public void QueriesShouldResideInQueriesNamespace() + public void QueriesShouldResideInFeaturesNamespace() { Classes().That().Are(QUERIES) - .Should().ResideInNamespaceMatching(".+(\\.Queries\\.|\\.Features\\.)") + .Should().ResideInNamespaceMatching(@"^Backbone\.Modules\.[^.]+\.Module\.Features\..*") .Check(Backbone.ARCHITECTURE); } } diff --git a/Backbone.Tests.ArchUnit/CleanArchitecture.cs b/Backbone.Tests.ArchUnit/CleanArchitecture.cs index 8a1c85fb14..7ce5e936af 100644 --- a/Backbone.Tests.ArchUnit/CleanArchitecture.cs +++ b/Backbone.Tests.ArchUnit/CleanArchitecture.cs @@ -17,11 +17,6 @@ public class CleanArchitecture .ResideInAssemblyMatching("Backbone.Modules.*.Contracts") .As("Contract Assemblies"); - private static readonly IObjectProvider CONSUMER_API_ASSEMBLIES = - Types().That() - .ResideInAssemblyMatching("Backbone.Modules.*.ConsumerApi") - .As("ConsumerApi Assemblies"); - [Theory] [ClassData(typeof(Modules))] public void ModulesShouldNotDependOnOtherModules(IObjectProvider module) @@ -35,7 +30,6 @@ public void ModulesShouldNotDependOnOtherModules(IObjectProvider module) Types() .That().Are(module) .And().AreNot(Backbone.TEST_TYPES) - .And().AreNot(CONSUMER_API_ASSEMBLIES) .Should().NotDependOnAny(otherModules) .Because("modules should be self-contained.") .Check(Backbone.ARCHITECTURE); diff --git a/Backbone.Tests.ArchUnit/MessagesCleanArchitecture.cs b/Backbone.Tests.ArchUnit/MessagesCleanArchitecture.cs deleted file mode 100644 index ba88d017db..0000000000 --- a/Backbone.Tests.ArchUnit/MessagesCleanArchitecture.cs +++ /dev/null @@ -1,59 +0,0 @@ -using ArchUnitNET.Domain; -using ArchUnitNET.xUnitV3; -using static ArchUnitNET.Fluent.ArchRuleDefinition; - -namespace Backbone.Backbone.Tests.ArchUnit; - -public class MessagesCleanArchitecture -{ - private static readonly IObjectProvider USE_CASE_TYPES = - Classes().That() - .ResideInNamespaceMatching("Backbone.Modules.Messages.Module.Features.*") - .And().HaveNameMatching(".*(Command|Query|Handler|Validator|Response)$") - .As("Messages use case types"); - - [Fact] - public void DomainShouldNotDependOnOuterLayers() - { - Types().That().ResideInAssemblyMatching("Backbone.Modules.Messages.Domain") - .Should().NotDependOnAnyTypesThat().ResideInAssemblyMatching("Backbone.Modules.Messages.(Module|Infrastructure|Abstractions)") - .Because("the Messages domain is the innermost Clean Architecture layer") - .Check(Backbone.ARCHITECTURE); - } - - [Fact] - public void AbstractionsShouldNotDependOnOuterLayers() - { - Types().That().ResideInAssemblyMatching("Backbone.Modules.Messages.Abstractions") - .Should().NotDependOnAnyTypesThat().ResideInAssemblyMatching("Backbone.Modules.Messages.(Module|Infrastructure)") - .Because("application ports must remain independent of adapters and composition") - .Check(Backbone.ARCHITECTURE); - } - - [Fact] - public void InfrastructureShouldNotDependOnModule() - { - Types().That().ResideInAssemblyMatching("Backbone.Modules.Messages.Infrastructure") - .Should().NotDependOnAnyTypesThat().ResideInAssemblyMatching("Backbone.Modules.Messages.Module") - .Because("infrastructure adapters may implement application ports but must not depend on the module composition root") - .Check(Backbone.ARCHITECTURE); - } - - [Fact] - public void UseCasesShouldNotDependOnInfrastructure() - { - Types().That().Are(USE_CASE_TYPES) - .Should().NotDependOnAnyTypesThat().ResideInAssemblyMatching("Backbone.Modules.Messages.Infrastructure") - .Because("use cases must depend on application ports instead of infrastructure adapters") - .Check(Backbone.ARCHITECTURE); - } - - [Fact] - public void UseCasesShouldNotReferenceAspNetCore() - { - Types().That().Are(USE_CASE_TYPES) - .Should().NotDependOnAnyTypesThat().ResideInNamespaceMatching("Microsoft.AspNetCore.*") - .Because("HTTP belongs to the endpoint adapter, not to Commands, Queries, Handlers, Validators, or Responses") - .Check(Backbone.ARCHITECTURE); - } -} diff --git a/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs b/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs index 74c7054148..6b90b675a8 100644 --- a/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs +++ b/Backbone.Tests.ArchUnit/VerticalSliceArchitecture.cs @@ -12,7 +12,7 @@ namespace Backbone.Backbone.Tests.ArchUnit; public class VerticalSliceArchitecture { - private static readonly string[] MIGRATED_MODULES = ["Messages", "Tags", "Challenges", "Announcements", "Tokens", "Files", "Quotas", "Devices", "Relationships", "Synchronization"]; + public static TheoryData ModuleNames => new(GetModuleNames()); [Fact] public void DomainsShouldNotDependOnOuterLayers() @@ -39,16 +39,7 @@ public void InfrastructureShouldNotDependOnModulesOrApis() } [Theory] - [InlineData("Messages")] - [InlineData("Tags")] - [InlineData("Challenges")] - [InlineData("Announcements")] - [InlineData("Tokens")] - [InlineData("Files")] - [InlineData("Quotas")] - [InlineData("Devices")] - [InlineData("Relationships")] - [InlineData("Synchronization")] + [MemberData(nameof(ModuleNames))] public void UseCasesShouldResideInTheirModule(string module) { var useCases = Classes().That().AreAssignableTo(typeof(IBaseRequest)) @@ -64,16 +55,7 @@ public void UseCasesShouldResideInTheirModule(string module) } [Theory] - [InlineData("Messages")] - [InlineData("Tags")] - [InlineData("Challenges")] - [InlineData("Announcements")] - [InlineData("Tokens")] - [InlineData("Files")] - [InlineData("Quotas")] - [InlineData("Devices")] - [InlineData("Relationships")] - [InlineData("Synchronization")] + [MemberData(nameof(ModuleNames))] public void UseCasesShouldNotDependOnAdapters(string module) { Classes().That().Are(UseCases(module)).Should().NotDependOnAnyTypesThat() @@ -88,16 +70,7 @@ public void UseCasesShouldNotDependOnAdapters(string module) } [Theory] - [InlineData("Messages")] - [InlineData("Tags")] - [InlineData("Challenges")] - [InlineData("Announcements")] - [InlineData("Tokens")] - [InlineData("Files")] - [InlineData("Quotas")] - [InlineData("Devices")] - [InlineData("Relationships")] - [InlineData("Synchronization")] + [MemberData(nameof(ModuleNames))] public void ModulesShouldOnlyReferenceTheirOwnImplementationAndOtherContracts(string module) { foreach (var assembly in SolutionAssemblies().Where(assembly => assembly.GetName().Name == $"Backbone.Modules.{module}.Module")) @@ -113,24 +86,21 @@ public void ModulesShouldOnlyReferenceTheirOwnImplementationAndOtherContracts(st } [Fact] - public void RemovedApplicationAssembliesShouldNotBeReferencedOrPresent() + public void ModulesShouldNotHaveApplicationAssemblies() { foreach (var assembly in SolutionAssemblies()) { - foreach (var module in MIGRATED_MODULES) - { - var removed = $"Backbone.Modules.{module}.Application"; - assembly.GetName().Name.ShouldNotBe(removed); - assembly.GetReferencedAssemblies().Select(reference => reference.Name).ShouldNotContain(removed); - } + var names = assembly.GetReferencedAssemblies().Select(reference => reference.Name).Append(assembly.GetName().Name); + names.ShouldNotContain(name => name != null && name.StartsWith("Backbone.Modules.", StringComparison.Ordinal) && + (name.EndsWith(".Application", StringComparison.Ordinal) || name.EndsWith(".Application.Tests", StringComparison.Ordinal))); } } [Fact] - public void ConsumerApiShouldReferenceMigratedModules() + public void ConsumerApiShouldReferenceModules() { var consumerApi = SolutionAssemblies().Single(assembly => assembly.GetName().Name == "Backbone.ConsumerApi"); - foreach (var module in MIGRATED_MODULES) + foreach (var module in GetModuleNames()) consumerApi.GetReferencedAssemblies().Select(reference => reference.Name).ShouldContain($"Backbone.Modules.{module}.Module"); } @@ -138,6 +108,12 @@ private static IObjectProvider UseCases(string module) => Classes().That().ResideInNamespaceMatching($@"^Backbone\.Modules\.{module}\.Module\.Features\..*") .And().HaveNameMatching(".*(Command|Query|Handler|Validator|Response)$"); + private static IEnumerable GetModuleNames() => SolutionAssemblies() + .Select(assembly => assembly.GetName().Name!) + .Where(name => name.StartsWith("Backbone.Modules.", StringComparison.Ordinal) && name.EndsWith(".Module", StringComparison.Ordinal)) + .Select(name => name.Split('.')[2]) + .Order(); + private static IEnumerable SolutionAssemblies() => Directory.GetFiles(AppContext.BaseDirectory, "Backbone.*.dll") .Select(path => Assembly.Load(AssemblyName.GetAssemblyName(path))); } diff --git a/BuildingBlocks/src/BuildingBlocks.API/Mvc/ControllerAttributes/HandleHttpCachingAttribute.cs b/BuildingBlocks/src/BuildingBlocks.API/Mvc/ControllerAttributes/HandleHttpCachingAttribute.cs deleted file mode 100644 index 90c786b7f6..0000000000 --- a/BuildingBlocks/src/BuildingBlocks.API/Mvc/ControllerAttributes/HandleHttpCachingAttribute.cs +++ /dev/null @@ -1,78 +0,0 @@ -using System.Security.Cryptography; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Http.Headers; -using Microsoft.AspNetCore.Mvc.Filters; -using Microsoft.Net.Http.Headers; - -namespace Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; - -/** - * This filter handles Caching via the If-None-Match header in the request header - * and the ETag in the response header. This class is based on this StackOverflow answer: - * - */ -public class HandleHttpCachingAttribute : ResultFilterAttribute -{ - private static readonly string[] HEADERS_TO_KEEP_FOR304 = - [ - HeaderNames.CacheControl, - HeaderNames.ContentLocation, - HeaderNames.ETag, - HeaderNames.Expires, - HeaderNames.Vary - ]; - - public override async Task OnResultExecutionAsync(ResultExecutingContext context, ResultExecutionDelegate next) - { - var request = context.HttpContext.Request; - var response = context.HttpContext.Response; - - var originalStream = response.Body; - using MemoryStream memoryStream = new(); - - response.Body = memoryStream; - await next(); - memoryStream.Position = 0; - - if (response.StatusCode == StatusCodes.Status200OK) - { - var requestHeaders = request.GetTypedHeaders(); - var responseHeaders = response.GetTypedHeaders(); - - responseHeaders.ETag ??= GenerateETag(memoryStream); - - if (IsClientCacheValid(requestHeaders, responseHeaders)) - { - response.StatusCode = StatusCodes.Status304NotModified; - - foreach (var header in response.Headers.Where(h => !HEADERS_TO_KEEP_FOR304.Contains(h.Key))) - response.Headers.Remove(header.Key); - - return; - } - } - - await memoryStream.CopyToAsync(originalStream); - } - - private static EntityTagHeaderValue GenerateETag(Stream stream) - { - var hashBytes = MD5.HashData(stream); - stream.Position = 0; - var hashString = Convert.ToBase64String(hashBytes); - return new EntityTagHeaderValue($"\"{hashString}\""); - } - - private static bool IsClientCacheValid(RequestHeaders reqHeaders, ResponseHeaders resHeaders) - { - if (reqHeaders.IfNoneMatch.Any() && resHeaders.ETag is not null) - return reqHeaders.IfNoneMatch.Any(etag => - etag.Compare(resHeaders.ETag, useStrongComparison: false) - ); - - if (reqHeaders.IfModifiedSince is not null && resHeaders.LastModified is not null) - return reqHeaders.IfModifiedSince >= resHeaders.LastModified; - - return false; - } -} diff --git a/BuildingBlocks/src/BuildingBlocks.API/Mvc/ModelBinders/GenericArrayModelBinder.cs b/BuildingBlocks/src/BuildingBlocks.API/Mvc/ModelBinders/GenericArrayModelBinder.cs deleted file mode 100644 index 3c9cb9ef75..0000000000 --- a/BuildingBlocks/src/BuildingBlocks.API/Mvc/ModelBinders/GenericArrayModelBinder.cs +++ /dev/null @@ -1,79 +0,0 @@ -using System.Collections; -using Microsoft.AspNetCore.Mvc.ModelBinding; -using Microsoft.AspNetCore.Mvc.ModelBinding.Binders; -using Org.BouncyCastle.Utilities.Encoders; - -namespace Backbone.BuildingBlocks.API.Mvc.ModelBinders; - -/** - * - * This model binder allows for binding arrays of complex types from query parameters. The query parameters should be formatted as follows: - * - * paramName.0.propertyName1=value&paramName.0.propertyName2=value&paramName.1.propertyName1=value&paramName.1.propertyName2=value - * - * - */ -public class GenericArrayModelBinder : IModelBinder -{ - public Task BindModelAsync(ModelBindingContext bindingContext) - { - var elementType = bindingContext.ModelType.GetElementType()!; - var items = (IList)Activator.CreateInstance(typeof(List<>).MakeGenericType(elementType))!; - var query = bindingContext.HttpContext.Request.Query; - - for (var i = 0; ; i++) - { - var instance = Activator.CreateInstance(elementType); - var properties = elementType.GetProperties(); - - var queryValueFound = false; - foreach (var property in properties) - { - var key = $"{bindingContext.ModelName}.{i}.{property.Name.ToLower()}"; - - if (!query.TryGetValue(key, out var queryValue)) - continue; - - object? value; - - if (property.PropertyType.IsAssignableTo(typeof(byte[]))) - value = Base64.Decode(queryValue.ToString()); - else - value = Convert.ChangeType(queryValue.ToString(), property.PropertyType); - - property.SetValue(instance, value); - - queryValueFound = true; - } - - if (!queryValueFound) - break; - - items.Add(instance); - } - - var resultArray = Array.CreateInstance(elementType, items.Count); - - for (var i = 0; i < items.Count; i++) - { - resultArray.SetValue(items[i], i); - } - - bindingContext.Result = ModelBindingResult.Success(resultArray); - return Task.CompletedTask; - } -} - -public class GenericArrayModelBinderProvider : IModelBinderProvider -{ - public IModelBinder? GetBinder(ModelBinderProviderContext context) - { - return context.Metadata is - { - IsEnumerableType: true, - ElementMetadata.IsComplexType: true - } && !context.Metadata.ModelType.IsAssignableTo(typeof(IDictionary)) - ? new BinderTypeModelBinder(typeof(GenericArrayModelBinder)) - : null; - } -} diff --git a/Modules/Announcements/src/Announcements.Module/AnnouncementsModule.cs b/Modules/Announcements/src/Announcements.Module/AnnouncementsModule.cs index 6f5f01a012..9a0b04b733 100644 --- a/Modules/Announcements/src/Announcements.Module/AnnouncementsModule.cs +++ b/Modules/Announcements/src/Announcements.Module/AnnouncementsModule.cs @@ -1,8 +1,10 @@ using Backbone.BuildingBlocks.API.Extensions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; +using Backbone.BuildingBlocks.Application.MediatR; using Backbone.BuildingBlocks.Module; -using Backbone.Modules.Announcements.Infrastructure; using Backbone.Modules.Announcements.Infrastructure.Persistence.Database; +using Backbone.Modules.Announcements.Infrastructure; +using FluentValidation; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -14,7 +16,13 @@ public class AnnouncementsModule : AbstractModule c + .RegisterServicesFromAssembly(typeof(AnnouncementsModule).Assembly) + .AddOpenBehavior(typeof(LoggingBehavior<,>)) + .AddOpenBehavior(typeof(RequestValidationBehavior<,>)) + .AddOpenBehavior(typeof(QuotaEnforcerBehavior<,>)) + ); + services.AddValidatorsFromAssembly(typeof(AnnouncementsModule).Assembly); services.AddDatabase(infrastructureConfiguration.SqlDatabase); diff --git a/Modules/Announcements/src/Announcements.Module/ApplicationServiceCollectionExtensions.cs b/Modules/Announcements/src/Announcements.Module/ApplicationServiceCollectionExtensions.cs deleted file mode 100644 index 227acd2e1b..0000000000 --- a/Modules/Announcements/src/Announcements.Module/ApplicationServiceCollectionExtensions.cs +++ /dev/null @@ -1,21 +0,0 @@ -using CreateAnnouncement = Backbone.Modules.Announcements.Module.Features.Announcements.CreateAnnouncement; -using Backbone.BuildingBlocks.Application.MediatR; -using Backbone.Modules.Announcements.Module.Features.Announcements.CreateAnnouncement; -using FluentValidation; -using Microsoft.Extensions.DependencyInjection; - -namespace Backbone.Modules.Announcements.Module; - -internal static class ApplicationServiceCollectionExtensions -{ - public static void AddApplication(this IServiceCollection services) - { - services.AddMediatR(c => c - .RegisterServicesFromAssemblyContaining() - .AddOpenBehavior(typeof(LoggingBehavior<,>)) - .AddOpenBehavior(typeof(RequestValidationBehavior<,>)) - .AddOpenBehavior(typeof(QuotaEnforcerBehavior<,>)) - ); - services.AddValidatorsFromAssembly(typeof(Validator).Assembly); - } -} diff --git a/Modules/Challenges/src/Challenges.Module/ApplicationServiceCollectionExtensions.cs b/Modules/Challenges/src/Challenges.Module/ApplicationServiceCollectionExtensions.cs deleted file mode 100644 index 95b3107597..0000000000 --- a/Modules/Challenges/src/Challenges.Module/ApplicationServiceCollectionExtensions.cs +++ /dev/null @@ -1,20 +0,0 @@ -using CreateChallenge = Backbone.Modules.Challenges.Module.Features.Challenges.CreateChallenge; -using Backbone.BuildingBlocks.Application.MediatR; -using FluentValidation; -using Microsoft.Extensions.DependencyInjection; - -namespace Backbone.Modules.Challenges.Module; - -internal static class ApplicationServiceCollectionExtensions -{ - public static void AddApplication(this IServiceCollection services) - { - services.AddMediatR(c => c - .RegisterServicesFromAssemblyContaining() - .AddOpenBehavior(typeof(LoggingBehavior<,>)) - .AddOpenBehavior(typeof(RequestValidationBehavior<,>)) - .AddOpenBehavior(typeof(QuotaEnforcerBehavior<,>)) - ); - services.AddValidatorsFromAssembly(typeof(CreateChallenge.Validator).Assembly); - } -} diff --git a/Modules/Challenges/src/Challenges.Module/ChallengesModule.cs b/Modules/Challenges/src/Challenges.Module/ChallengesModule.cs index 365e190182..ef96122476 100644 --- a/Modules/Challenges/src/Challenges.Module/ChallengesModule.cs +++ b/Modules/Challenges/src/Challenges.Module/ChallengesModule.cs @@ -1,8 +1,10 @@ using Backbone.BuildingBlocks.API.Extensions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; +using Backbone.BuildingBlocks.Application.MediatR; using Backbone.BuildingBlocks.Module; -using Backbone.Modules.Challenges.Infrastructure; using Backbone.Modules.Challenges.Infrastructure.Persistence; +using Backbone.Modules.Challenges.Infrastructure; +using FluentValidation; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -14,7 +16,13 @@ public class ChallengesModule : AbstractModule c + .RegisterServicesFromAssembly(typeof(ChallengesModule).Assembly) + .AddOpenBehavior(typeof(LoggingBehavior<,>)) + .AddOpenBehavior(typeof(RequestValidationBehavior<,>)) + .AddOpenBehavior(typeof(QuotaEnforcerBehavior<,>)) + ); + services.AddValidatorsFromAssembly(typeof(ChallengesModule).Assembly); services.AddDatabase(infrastructureConfigurationConfiguration.SqlDatabase); diff --git a/Modules/Devices/src/Devices.Module/ApplicationServiceCollectionExtensions.cs b/Modules/Devices/src/Devices.Module/ApplicationServiceCollectionExtensions.cs deleted file mode 100644 index a1e6baa4fe..0000000000 --- a/Modules/Devices/src/Devices.Module/ApplicationServiceCollectionExtensions.cs +++ /dev/null @@ -1,53 +0,0 @@ -using RegisterDevice = Backbone.Modules.Devices.Module.Features.Devices.RegisterDevice; -using System.Reflection; -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; -using Backbone.BuildingBlocks.Application.MediatR; -using Backbone.Modules.Devices.Domain.Entities.Identities; -using Backbone.Modules.Devices.Module.Features.Devices.ListDevices; -using Backbone.Modules.Devices.Module.Features.Devices.Shared; -using FluentValidation; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; - -namespace Backbone.Modules.Devices.Module; - -internal static class ApplicationServiceCollectionExtensions -{ - public static void AddApplication(this IServiceCollection services, IConfiguration applicationConfiguration) - { - services.ConfigureAndValidate(applicationConfiguration.Bind); - - applicationConfiguration.GetSection("IdentityDeletion").Bind(IdentityDeletionConfiguration.Instance); - - services.AddMediatR(c => c - .RegisterServicesFromAssemblyContaining() - .AddOpenBehavior(typeof(LoggingBehavior<,>)) - .AddOpenBehavior(typeof(RequestValidationBehavior<,>)) - .AddOpenBehavior(typeof(QuotaEnforcerBehavior<,>)) - ); - services.AddValidatorsFromAssembly(typeof(ApplicationConfiguration).Assembly); - services.AddScoped(); - services.AddScoped(); - - AddEventHandlers(services); - } - - private static void AddEventHandlers(IServiceCollection services) - { - foreach (var eventHandler in GetAllDomainEventHandlers()) - { - services.AddTransient(eventHandler); - } - } - - private static IEnumerable GetAllDomainEventHandlers() - { - var domainEventHandlerTypes = - from t in Assembly.GetExecutingAssembly().GetTypes() - from i in t.GetInterfaces() - where t.IsClass && !t.IsAbstract && i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IDomainEventHandler<>) - select t; - - return domainEventHandlerTypes; - } -} diff --git a/Modules/Devices/src/Devices.Module/DevicesModule.cs b/Modules/Devices/src/Devices.Module/DevicesModule.cs index 823664ae9b..f682b85f2f 100644 --- a/Modules/Devices/src/Devices.Module/DevicesModule.cs +++ b/Modules/Devices/src/Devices.Module/DevicesModule.cs @@ -1,11 +1,16 @@ +using System.Reflection; using Backbone.BuildingBlocks.API.Extensions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; +using Backbone.BuildingBlocks.Application.MediatR; using Backbone.BuildingBlocks.Module; using Backbone.Crypto.Abstractions; using Backbone.Crypto.Implementations; +using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.Modules.Devices.Infrastructure.Persistence; using Backbone.Modules.Devices.Infrastructure.PushNotifications; using Backbone.Modules.Devices.Infrastructure; +using Backbone.Modules.Devices.Module.Features.Devices.Shared; +using FluentValidation; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -17,7 +22,23 @@ public class DevicesModule : AbstractModule(applicationConfiguration.Bind); + + applicationConfiguration.GetSection("IdentityDeletion").Bind(IdentityDeletionConfiguration.Instance); + + services.AddMediatR(c => c + .RegisterServicesFromAssembly(typeof(DevicesModule).Assembly) + .AddOpenBehavior(typeof(LoggingBehavior<,>)) + .AddOpenBehavior(typeof(RequestValidationBehavior<,>)) + .AddOpenBehavior(typeof(QuotaEnforcerBehavior<,>)) + ); + services.AddValidatorsFromAssembly(typeof(DevicesModule).Assembly); + services.AddScoped(); + services.AddScoped(); + + AddEventHandlers(services); services.AddDatabase(infrastructureConfiguration.SqlDatabase); @@ -33,4 +54,23 @@ public override async Task ConfigureEventBus(IEventBus eventBus) { await eventBus.AddDevicesDomainEventSubscriptions(); } + + private static void AddEventHandlers(IServiceCollection services) + { + foreach (var eventHandler in GetAllDomainEventHandlers()) + { + services.AddTransient(eventHandler); + } + } + + private static IEnumerable GetAllDomainEventHandlers() + { + var domainEventHandlerTypes = + from t in Assembly.GetExecutingAssembly().GetTypes() + from i in t.GetInterfaces() + where t.IsClass && !t.IsAbstract && i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IDomainEventHandler<>) + select t; + + return domainEventHandlerTypes; + } } diff --git a/Modules/Files/src/Files.Module/ApplicationServiceCollectionExtensions.cs b/Modules/Files/src/Files.Module/ApplicationServiceCollectionExtensions.cs deleted file mode 100644 index 1bdaa608d7..0000000000 --- a/Modules/Files/src/Files.Module/ApplicationServiceCollectionExtensions.cs +++ /dev/null @@ -1,21 +0,0 @@ -using CreateFile = Backbone.Modules.Files.Module.Features.Files.CreateFile; -using Backbone.BuildingBlocks.Application.MediatR; -using Backbone.Modules.Files.Module.Features.Files.CreateFile; -using FluentValidation; -using Microsoft.Extensions.DependencyInjection; - -namespace Backbone.Modules.Files.Module; - -internal static class ApplicationServiceCollectionExtensions -{ - public static void AddApplication(this IServiceCollection services) - { - services.AddMediatR(c => c - .RegisterServicesFromAssemblyContaining() - .AddOpenBehavior(typeof(LoggingBehavior<,>)) - .AddOpenBehavior(typeof(RequestValidationBehavior<,>)) - .AddOpenBehavior(typeof(QuotaEnforcerBehavior<,>)) - ); - services.AddValidatorsFromAssemblyContaining(); - } -} diff --git a/Modules/Files/src/Files.Module/FilesModule.cs b/Modules/Files/src/Files.Module/FilesModule.cs index 546e717c29..8ce78c1995 100644 --- a/Modules/Files/src/Files.Module/FilesModule.cs +++ b/Modules/Files/src/Files.Module/FilesModule.cs @@ -1,8 +1,10 @@ using Backbone.BuildingBlocks.API.Extensions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; +using Backbone.BuildingBlocks.Application.MediatR; using Backbone.BuildingBlocks.Module; -using Backbone.Modules.Files.Infrastructure; using Backbone.Modules.Files.Infrastructure.Persistence; +using Backbone.Modules.Files.Infrastructure; +using FluentValidation; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -14,7 +16,13 @@ public class FilesModule : AbstractModule c + .RegisterServicesFromAssembly(typeof(FilesModule).Assembly) + .AddOpenBehavior(typeof(LoggingBehavior<,>)) + .AddOpenBehavior(typeof(RequestValidationBehavior<,>)) + .AddOpenBehavior(typeof(QuotaEnforcerBehavior<,>)) + ); + services.AddValidatorsFromAssembly(typeof(FilesModule).Assembly); services.AddPersistence(infrastructureConfiguration.SqlDatabase, infrastructureConfiguration.BlobStorage); diff --git a/Modules/Messages/src/Messages.Module/ApplicationServiceCollectionExtensions.cs b/Modules/Messages/src/Messages.Module/ApplicationServiceCollectionExtensions.cs deleted file mode 100644 index fd1b3b192b..0000000000 --- a/Modules/Messages/src/Messages.Module/ApplicationServiceCollectionExtensions.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System.Reflection; -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; -using Backbone.BuildingBlocks.Application.MediatR; -using FluentValidation; -using Microsoft.Extensions.DependencyInjection; - -namespace Backbone.Modules.Messages.Module; - -internal static class ApplicationServiceCollectionExtensions -{ - public static void AddApplication(this IServiceCollection services) - { - var assembly = typeof(MessagesModule).Assembly; - services.AddMediatR(configuration => configuration - .RegisterServicesFromAssembly(assembly) - .AddOpenBehavior(typeof(LoggingBehavior<,>)) - .AddOpenBehavior(typeof(RequestValidationBehavior<,>)) - .AddOpenBehavior(typeof(QuotaEnforcerBehavior<,>))); - services.AddValidatorsFromAssembly(assembly); - - foreach (var eventHandler in GetDomainEventHandlers(assembly)) - services.AddTransient(eventHandler); - } - - private static IEnumerable GetDomainEventHandlers(Assembly assembly) - { - return from type in assembly.GetTypes() - from implementedInterface in type.GetInterfaces() - where type.IsClass && !type.IsAbstract && implementedInterface.IsGenericType && - implementedInterface.GetGenericTypeDefinition() == typeof(IDomainEventHandler<>) - select type; - } -} diff --git a/Modules/Messages/src/Messages.Module/MessagesModule.cs b/Modules/Messages/src/Messages.Module/MessagesModule.cs index 0ae546b7fd..c9f9c6576b 100644 --- a/Modules/Messages/src/Messages.Module/MessagesModule.cs +++ b/Modules/Messages/src/Messages.Module/MessagesModule.cs @@ -1,8 +1,11 @@ +using System.Reflection; using Backbone.BuildingBlocks.API.Extensions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; +using Backbone.BuildingBlocks.Application.MediatR; using Backbone.BuildingBlocks.Module; -using Backbone.Modules.Messages.Infrastructure; using Backbone.Modules.Messages.Infrastructure.Persistence; +using Backbone.Modules.Messages.Infrastructure; +using FluentValidation; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -16,7 +19,16 @@ protected override void ConfigureServices(IServiceCollection services, Infrastru { services.AddPersistence(infrastructureConfiguration.SqlDatabase); - services.AddApplication(); + var assembly = typeof(MessagesModule).Assembly; + services.AddMediatR(configuration => configuration + .RegisterServicesFromAssembly(assembly) + .AddOpenBehavior(typeof(LoggingBehavior<,>)) + .AddOpenBehavior(typeof(RequestValidationBehavior<,>)) + .AddOpenBehavior(typeof(QuotaEnforcerBehavior<,>))); + services.AddValidatorsFromAssembly(assembly); + + foreach (var eventHandler in GetDomainEventHandlers(assembly)) + services.AddTransient(eventHandler); if (infrastructureConfiguration.SqlDatabase.EnableHealthCheck) services.AddSqlDatabaseHealthCheck(infrastructureConfiguration.SqlDatabase.Provider, infrastructureConfiguration.SqlDatabase.ConnectionString); @@ -26,4 +38,13 @@ public override async Task ConfigureEventBus(IEventBus eventBus) { await eventBus.AddMessagesDomainEventSubscriptions(); } + + private static IEnumerable GetDomainEventHandlers(Assembly assembly) + { + return from type in assembly.GetTypes() + from implementedInterface in type.GetInterfaces() + where type.IsClass && !type.IsAbstract && implementedInterface.IsGenericType && + implementedInterface.GetGenericTypeDefinition() == typeof(IDomainEventHandler<>) + select type; + } } diff --git a/Modules/Quotas/src/Quotas.Module/ApplicationServiceCollectionExtensions.cs b/Modules/Quotas/src/Quotas.Module/ApplicationServiceCollectionExtensions.cs deleted file mode 100644 index 5e6443efab..0000000000 --- a/Modules/Quotas/src/Quotas.Module/ApplicationServiceCollectionExtensions.cs +++ /dev/null @@ -1,61 +0,0 @@ -using CreateQuotaForTier = Backbone.Modules.Quotas.Module.Features.Tiers.CreateQuotaForTier; -using System.Reflection; -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; -using Backbone.BuildingBlocks.Application.MediatR; -using Backbone.Modules.Quotas.Module.Features.Metrics.Shared; -using Backbone.Modules.Quotas.Domain; -using Backbone.Modules.Quotas.Domain.Metrics; -using Microsoft.Extensions.DependencyInjection; - -namespace Backbone.Modules.Quotas.Module; - -internal static class ApplicationServiceCollectionExtensions -{ - extension(IServiceCollection services) - { - public void AddApplication() - { - services.AddMediatR(c => c - .RegisterServicesFromAssemblyContaining() - .AddOpenBehavior(typeof(LoggingBehavior<,>)) - .AddOpenBehavior(typeof(RequestValidationBehavior<,>)) - .AddOpenBehavior(typeof(QuotaEnforcerBehavior<,>)) - ); - - services.AddScoped(); - services.AddTransient(); - services.AddEventHandlers(); - services.AddMetricCalculators(); - } - - private void AddEventHandlers() - { - foreach (var eventHandler in GetAllDomainEventHandlers()) - { - services.AddTransient(eventHandler); - } - } - - private void AddMetricCalculators() - { - var lookupType = typeof(IMetricCalculator); - var types = Assembly.GetExecutingAssembly().GetTypes().Where(t => lookupType.IsAssignableFrom(t) && !t.IsInterface); - - foreach (var type in types) - { - services.AddTransient(type); - } - } - } - - private static IEnumerable GetAllDomainEventHandlers() - { - var domainEventHandlerTypes = - from t in Assembly.GetExecutingAssembly().GetTypes() - from i in t.GetInterfaces() - where t.IsClass && !t.IsAbstract && i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IDomainEventHandler<>) - select t; - - return domainEventHandlerTypes; - } -} diff --git a/Modules/Quotas/src/Quotas.Module/QuotasModule.cs b/Modules/Quotas/src/Quotas.Module/QuotasModule.cs index e4070c533a..dd4d130a10 100644 --- a/Modules/Quotas/src/Quotas.Module/QuotasModule.cs +++ b/Modules/Quotas/src/Quotas.Module/QuotasModule.cs @@ -1,8 +1,13 @@ +using System.Reflection; using Backbone.BuildingBlocks.API.Extensions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; +using Backbone.BuildingBlocks.Application.MediatR; using Backbone.BuildingBlocks.Module; -using Backbone.Modules.Quotas.Infrastructure; +using Backbone.Modules.Quotas.Domain.Metrics; +using Backbone.Modules.Quotas.Domain; using Backbone.Modules.Quotas.Infrastructure.Persistence.Database; +using Backbone.Modules.Quotas.Infrastructure; +using Backbone.Modules.Quotas.Module.Features.Metrics.Shared; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -14,7 +19,17 @@ public class QuotasModule : AbstractModule c + .RegisterServicesFromAssembly(typeof(QuotasModule).Assembly) + .AddOpenBehavior(typeof(LoggingBehavior<,>)) + .AddOpenBehavior(typeof(RequestValidationBehavior<,>)) + .AddOpenBehavior(typeof(QuotaEnforcerBehavior<,>)) + ); + + services.AddScoped(); + services.AddTransient(); + AddEventHandlers(services); + AddMetricCalculators(services); services.AddDatabase(infrastructureConfiguration.SqlDatabase); @@ -28,4 +43,34 @@ public override async Task ConfigureEventBus(IEventBus eventBus) { await eventBus.AddQuotasDomainEventSubscriptions(); } + + private static void AddEventHandlers(IServiceCollection services) + { + foreach (var eventHandler in GetAllDomainEventHandlers()) + { + services.AddTransient(eventHandler); + } + } + + private static void AddMetricCalculators(IServiceCollection services) + { + var lookupType = typeof(IMetricCalculator); + var types = Assembly.GetExecutingAssembly().GetTypes().Where(t => lookupType.IsAssignableFrom(t) && !t.IsInterface); + + foreach (var type in types) + { + services.AddTransient(type); + } + } + + private static IEnumerable GetAllDomainEventHandlers() + { + var domainEventHandlerTypes = + from t in Assembly.GetExecutingAssembly().GetTypes() + from i in t.GetInterfaces() + where t.IsClass && !t.IsAbstract && i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IDomainEventHandler<>) + select t; + + return domainEventHandlerTypes; + } } diff --git a/Modules/Relationships/src/Relationships.Module/ApplicationErrors.cs b/Modules/Relationships/src/Relationships.Module/ApplicationErrors.cs index 77c9c469c1..216d688f2d 100644 --- a/Modules/Relationships/src/Relationships.Module/ApplicationErrors.cs +++ b/Modules/Relationships/src/Relationships.Module/ApplicationErrors.cs @@ -12,13 +12,4 @@ public static ApplicationError PeerIsToBeDeleted() "Cannot establish relationship with the owner of the template because the owner is in status 'ToBeDeleted'."); } } - - public static class RelationshipTemplate - { - public static ApplicationError InvalidRelationshipTemplateQueryItem() - { - return new ApplicationError("error.platform.validation.relationship.invalidRelationshipTemplateQueryItem", - "RelationshipTemplateQueryItem object is expected to have Id property containing the RelationshipTemplateId and optionally a Password property."); - } - } } diff --git a/Modules/Relationships/src/Relationships.Module/ApplicationServiceCollectionExtensions.cs b/Modules/Relationships/src/Relationships.Module/ApplicationServiceCollectionExtensions.cs deleted file mode 100644 index 575a709883..0000000000 --- a/Modules/Relationships/src/Relationships.Module/ApplicationServiceCollectionExtensions.cs +++ /dev/null @@ -1,48 +0,0 @@ -using CreateRelationshipTemplate = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.CreateRelationshipTemplate; -using System.Reflection; -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; -using Backbone.BuildingBlocks.Application.MediatR; -using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.CreateRelationshipTemplate; -using FluentValidation; -using Microsoft.Extensions.DependencyInjection; - -namespace Backbone.Modules.Relationships.Module; - -internal static class ApplicationServiceCollectionExtensions -{ - extension(IServiceCollection services) - { - public void AddApplication() - { - services.AddMediatR(c => c - .RegisterServicesFromAssemblyContaining() - .AddOpenBehavior(typeof(LoggingBehavior<,>)) - .AddOpenBehavior(typeof(RequestValidationBehavior<,>)) - .AddOpenBehavior(typeof(QuotaEnforcerBehavior<,>)) - ); - - services.AddValidatorsFromAssembly(typeof(Validator).Assembly); - - services.AddEventHandlers(); - } - - private void AddEventHandlers() - { - foreach (var eventHandler in GetAllDomainEventHandlers()) - { - services.AddTransient(eventHandler); - } - } - } - - private static IEnumerable GetAllDomainEventHandlers() - { - var domainEventHandlerTypes = - from t in Assembly.GetExecutingAssembly().GetTypes() - from i in t.GetInterfaces() - where t.IsClass && !t.IsAbstract && i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IDomainEventHandler<>) - select t; - - return domainEventHandlerTypes; - } -} diff --git a/Modules/Relationships/src/Relationships.Module/RelationshipsModule.cs b/Modules/Relationships/src/Relationships.Module/RelationshipsModule.cs index a9f4d2b378..6e9f6e22a8 100644 --- a/Modules/Relationships/src/Relationships.Module/RelationshipsModule.cs +++ b/Modules/Relationships/src/Relationships.Module/RelationshipsModule.cs @@ -1,8 +1,11 @@ +using System.Reflection; using Backbone.BuildingBlocks.API.Extensions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; +using Backbone.BuildingBlocks.Application.MediatR; using Backbone.BuildingBlocks.Module; using Backbone.Modules.Relationships.Infrastructure.Persistence; using Backbone.Modules.Relationships.Infrastructure; +using FluentValidation; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -14,7 +17,16 @@ public class RelationshipsModule : AbstractModule c + .RegisterServicesFromAssembly(typeof(RelationshipsModule).Assembly) + .AddOpenBehavior(typeof(LoggingBehavior<,>)) + .AddOpenBehavior(typeof(RequestValidationBehavior<,>)) + .AddOpenBehavior(typeof(QuotaEnforcerBehavior<,>)) + ); + + services.AddValidatorsFromAssembly(typeof(RelationshipsModule).Assembly); + + AddEventHandlers(services); services.AddPersistence(infrastructureConfiguration.SqlDatabase); @@ -26,4 +38,23 @@ public override async Task ConfigureEventBus(IEventBus eventBus) { await eventBus.AddRelationshipsDomainEventSubscriptions(); } + + private static void AddEventHandlers(IServiceCollection services) + { + foreach (var eventHandler in GetAllDomainEventHandlers()) + { + services.AddTransient(eventHandler); + } + } + + private static IEnumerable GetAllDomainEventHandlers() + { + var domainEventHandlerTypes = + from t in Assembly.GetExecutingAssembly().GetTypes() + from i in t.GetInterfaces() + where t.IsClass && !t.IsAbstract && i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IDomainEventHandler<>) + select t; + + return domainEventHandlerTypes; + } } diff --git a/Modules/Synchronization/src/Synchronization.Module/ApplicationServiceCollectionExtensions.cs b/Modules/Synchronization/src/Synchronization.Module/ApplicationServiceCollectionExtensions.cs deleted file mode 100644 index 713dbe0de1..0000000000 --- a/Modules/Synchronization/src/Synchronization.Module/ApplicationServiceCollectionExtensions.cs +++ /dev/null @@ -1,46 +0,0 @@ -using PushDatawalletModifications = Backbone.Modules.Synchronization.Module.Features.Datawallets.PushDatawalletModifications; -using System.Reflection; -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; -using Backbone.BuildingBlocks.Application.MediatR; -using FluentValidation; -using Microsoft.Extensions.DependencyInjection; - -namespace Backbone.Modules.Synchronization.Module; - -internal static class ApplicationServiceCollectionExtensions -{ - extension(IServiceCollection services) - { - public void AddApplication() - { - services.AddMediatR(c => c - .RegisterServicesFromAssemblyContaining() - .AddOpenBehavior(typeof(LoggingBehavior<,>)) - .AddOpenBehavior(typeof(RequestValidationBehavior<,>)) - .AddOpenBehavior(typeof(QuotaEnforcerBehavior<,>)) - ); - - services.AddValidatorsFromAssembly(typeof(PushDatawalletModifications.Command).Assembly); - services.AddEventHandlers(); - } - - private void AddEventHandlers() - { - foreach (var eventHandler in GetAllDomainEventHandlers()) - { - services.AddTransient(eventHandler); - } - } - } - - private static IEnumerable GetAllDomainEventHandlers() - { - var domainEventHandlerTypes = - from t in Assembly.GetExecutingAssembly().GetTypes() - from i in t.GetInterfaces() - where t.IsClass && !t.IsAbstract && i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IDomainEventHandler<>) - select t; - - return domainEventHandlerTypes; - } -} diff --git a/Modules/Synchronization/src/Synchronization.Module/SynchronizationModule.cs b/Modules/Synchronization/src/Synchronization.Module/SynchronizationModule.cs index 720cb03738..bc297077a0 100644 --- a/Modules/Synchronization/src/Synchronization.Module/SynchronizationModule.cs +++ b/Modules/Synchronization/src/Synchronization.Module/SynchronizationModule.cs @@ -1,8 +1,11 @@ +using System.Reflection; using Backbone.BuildingBlocks.API.Extensions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; +using Backbone.BuildingBlocks.Application.MediatR; using Backbone.BuildingBlocks.Module; -using Backbone.Modules.Synchronization.Infrastructure; using Backbone.Modules.Synchronization.Infrastructure.Persistence; +using Backbone.Modules.Synchronization.Infrastructure; +using FluentValidation; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -16,7 +19,15 @@ protected override void ConfigureServices(IServiceCollection services, Infrastru { services.AddPersistence(infrastructureConfiguration.SqlDatabase); - services.AddApplication(); + services.AddMediatR(c => c + .RegisterServicesFromAssembly(typeof(SynchronizationModule).Assembly) + .AddOpenBehavior(typeof(LoggingBehavior<,>)) + .AddOpenBehavior(typeof(RequestValidationBehavior<,>)) + .AddOpenBehavior(typeof(QuotaEnforcerBehavior<,>)) + ); + + services.AddValidatorsFromAssembly(typeof(SynchronizationModule).Assembly); + AddEventHandlers(services); if (infrastructureConfiguration.SqlDatabase.EnableHealthCheck) services.AddSqlDatabaseHealthCheck(infrastructureConfiguration.SqlDatabase.Provider, infrastructureConfiguration.SqlDatabase.ConnectionString); @@ -26,4 +37,23 @@ public override async Task ConfigureEventBus(IEventBus eventBus) { await eventBus.AddSynchronizationDomainEventSubscriptions(); } + + private static void AddEventHandlers(IServiceCollection services) + { + foreach (var eventHandler in GetAllDomainEventHandlers()) + { + services.AddTransient(eventHandler); + } + } + + private static IEnumerable GetAllDomainEventHandlers() + { + var domainEventHandlerTypes = + from t in Assembly.GetExecutingAssembly().GetTypes() + from i in t.GetInterfaces() + where t.IsClass && !t.IsAbstract && i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IDomainEventHandler<>) + select t; + + return domainEventHandlerTypes; + } } diff --git a/Modules/Tags/src/Tags.Module/ApplicationServiceCollectionExtensions.cs b/Modules/Tags/src/Tags.Module/ApplicationServiceCollectionExtensions.cs deleted file mode 100644 index 70dfc84631..0000000000 --- a/Modules/Tags/src/Tags.Module/ApplicationServiceCollectionExtensions.cs +++ /dev/null @@ -1,14 +0,0 @@ -using ListTags = Backbone.Modules.Tags.Module.Features.Tags.ListTags; -using Microsoft.Extensions.DependencyInjection; - -namespace Backbone.Modules.Tags.Module; - -internal static class ApplicationServiceCollectionExtensions -{ - public static void AddApplication(this IServiceCollection services) - { - services.AddMediatR(c => c - .RegisterServicesFromAssemblyContaining() - ); - } -} diff --git a/Modules/Tags/src/Tags.Module/TagsModule.cs b/Modules/Tags/src/Tags.Module/TagsModule.cs index b3d4654116..18193a1fab 100644 --- a/Modules/Tags/src/Tags.Module/TagsModule.cs +++ b/Modules/Tags/src/Tags.Module/TagsModule.cs @@ -1,8 +1,8 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Module; using Backbone.Modules.Tags.Abstractions; -using Backbone.Modules.Tags.Infrastructure; using Backbone.Modules.Tags.Infrastructure.Persistence; +using Backbone.Modules.Tags.Infrastructure; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; @@ -20,7 +20,9 @@ protected override void ConfigureServices(IServiceCollection services, Infrastru SupportedLanguages = sp.GetRequiredService>().Value.SupportedLanguages, TagsForAttributeValueTypes = sp.GetRequiredService>().Value.TagsForAttributeValueTypes })); - services.AddApplication(); + services.AddMediatR(c => c + .RegisterServicesFromAssembly(typeof(TagsModule).Assembly) + ); services.AddPersistence(); } diff --git a/Modules/Tokens/src/Tokens.Module/ApplicationServiceCollectionExtensions.cs b/Modules/Tokens/src/Tokens.Module/ApplicationServiceCollectionExtensions.cs deleted file mode 100644 index 502f8652ed..0000000000 --- a/Modules/Tokens/src/Tokens.Module/ApplicationServiceCollectionExtensions.cs +++ /dev/null @@ -1,22 +0,0 @@ -using CreateToken = Backbone.Modules.Tokens.Module.Features.Tokens.CreateToken; -using Backbone.BuildingBlocks.Application.MediatR; -using Backbone.Modules.Tokens.Module.Features.Tokens.CreateToken; -using FluentValidation; -using Microsoft.Extensions.DependencyInjection; - -namespace Backbone.Modules.Tokens.Module; - -internal static class ApplicationServiceCollectionExtensions -{ - public static void AddApplication(this IServiceCollection services) - { - services.AddMediatR(c => c - .RegisterServicesFromAssemblyContaining() - .AddOpenBehavior(typeof(LoggingBehavior<,>)) - .AddOpenBehavior(typeof(RequestValidationBehavior<,>)) - .AddOpenBehavior(typeof(QuotaEnforcerBehavior<,>)) - .AddOpenBehavior(typeof(DbConcurrencyBehavior<,>)) - ); - services.AddValidatorsFromAssembly(typeof(Validator).Assembly); - } -} diff --git a/Modules/Tokens/src/Tokens.Module/TokensModule.cs b/Modules/Tokens/src/Tokens.Module/TokensModule.cs index 2f5d296e91..083a98232a 100644 --- a/Modules/Tokens/src/Tokens.Module/TokensModule.cs +++ b/Modules/Tokens/src/Tokens.Module/TokensModule.cs @@ -1,8 +1,10 @@ using Backbone.BuildingBlocks.API.Extensions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; +using Backbone.BuildingBlocks.Application.MediatR; using Backbone.BuildingBlocks.Module; -using Backbone.Modules.Tokens.Infrastructure; using Backbone.Modules.Tokens.Infrastructure.Persistence; +using Backbone.Modules.Tokens.Infrastructure; +using FluentValidation; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -16,7 +18,14 @@ protected override void ConfigureServices(IServiceCollection services, Infrastru { services.AddPersistence(infrastructureConfiguration.SqlDatabase); - services.AddApplication(); + services.AddMediatR(c => c + .RegisterServicesFromAssembly(typeof(TokensModule).Assembly) + .AddOpenBehavior(typeof(LoggingBehavior<,>)) + .AddOpenBehavior(typeof(RequestValidationBehavior<,>)) + .AddOpenBehavior(typeof(QuotaEnforcerBehavior<,>)) + .AddOpenBehavior(typeof(DbConcurrencyBehavior<,>)) + ); + services.AddValidatorsFromAssembly(typeof(TokensModule).Assembly); if (infrastructureConfiguration.SqlDatabase.EnableHealthCheck) services.AddSqlDatabaseHealthCheck(infrastructureConfiguration.SqlDatabase.Provider, infrastructureConfiguration.SqlDatabase.ConnectionString); From 51f7fea26685866d527e9fa99e4c11512d16fcd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20H=C3=BCgel?= Date: Fri, 2 Oct 2026 15:30:29 +0200 Subject: [PATCH 22/25] chore: satisfy formatter --- .../Controllers/AnnouncementsController.cs | 10 +++++----- .../AdminApi/Controllers/ChallengesController.cs | 4 ++-- .../AdminApi/Controllers/ClientsController.cs | 10 +++++----- .../AdminApi/Controllers/IdentitiesController.cs | 16 ++++++++-------- .../AdminApi/Controllers/MetricsController.cs | 2 +- .../src/AdminApi/Controllers/TiersController.cs | 12 ++++++------ .../src/AdminApi/Controllers/TokensController.cs | 6 +++--- .../Announcements/DeleteAnnouncementCommand.cs | 2 +- .../Announcements/SendAnnouncementCommand.cs | 6 +++--- .../Commands/Clients/DeleteClientsCommand.cs | 2 +- .../Commands/Clients/ListClientsCommand.cs | 2 +- .../AdminCli/Commands/Tiers/ListTiersCommand.cs | 2 +- .../ConsumerApi/src/DevicesDbContextSeeder.cs | 8 ++++---- .../Extensions/IServiceCollectionExtensions.cs | 2 +- Applications/ConsumerApi/src/Program.cs | 2 +- .../ConsumerApi/src/QuotasDbContextSeeder.cs | 4 ++-- .../Housekeeper/src/Housekeeper/Program.cs | 2 +- .../DeletionProcessLogger.cs | 4 ++-- .../Workers/ActualDeletionWorker.cs | 12 ++++++------ .../Workers/SendGracePeriodRemindersWorker.cs | 4 ++-- .../Workers/ActualDeletionWorkerTests.cs | 10 +++++----- .../src/SseServer/Controllers/SseController.cs | 6 +++--- Applications/SseServer/src/SseServer/Program.cs | 2 +- Backbone.Tests.ArchUnit/UnitTests.cs | 11 +++++++---- .../QuotaCheck/QuotaCheckerImplTests.cs | 2 +- .../GoogleCloudStorageTests.cs | 2 +- .../Announcements.Module/AnnouncementsModule.cs | 2 +- .../Announcements/CreateAnnouncement/Command.cs | 2 +- .../Announcements/CreateAnnouncement/Handler.cs | 2 +- .../Announcements/GetAnnouncementById/Handler.cs | 2 +- .../Announcements/ListAnnouncements/Response.cs | 2 +- .../ListAnnouncementsInLanguage/Response.cs | 2 +- .../Identities/DeleteIdentity/IdentityDeleter.cs | 2 +- .../CreateAnnouncement/ValidatorTests.cs | 4 ++-- .../DeleteAnnouncementRecipients/HandlerTests.cs | 4 ++-- .../DeleteIdentity/IdentityDeleterTests.cs | 2 +- .../src/Challenges.Module/ChallengesModule.cs | 2 +- .../Challenges/CreateChallenge/Handler.cs | 2 +- .../Challenges/GetChallengeById/Handler.cs | 2 +- .../Identities/DeleteIdentity/IdentityDeleter.cs | 2 +- .../DeleteChallengesOfIdentity/ValidatorTests.cs | 2 +- .../GetChallengeById/ValidatorTests.cs | 4 ++-- .../DeleteIdentity/IdentityDeleterTests.cs | 2 +- .../IPushNotificationRegistrationService.cs | 2 +- .../ApplePushNotificationServiceConnector.cs | 2 +- .../Fcm/FirebaseCloudMessagingConnector.cs | 2 +- .../IServiceCollectionExtensions.cs | 2 +- .../PushNotifications/PushService.cs | 2 +- .../Devices.Module/DevicesEventBusExtensions.cs | 10 +++++----- .../Devices/src/Devices.Module/DevicesModule.cs | 2 +- .../Authorization/ExchangeToken/Endpoint.cs | 2 +- .../Features/Devices/ChangePassword/Endpoint.cs | 2 +- .../Features/Devices/DeleteDevice/Endpoint.cs | 2 +- .../Features/Devices/GetActiveDevice/Endpoint.cs | 2 +- .../Features/Devices/ListDevices/Endpoint.cs | 2 +- .../Features/Devices/RegisterDevice/Endpoint.cs | 5 +++-- .../Features/Devices/RegisterDevice/Validator.cs | 2 +- .../Devices/Shared/ChallengeValidator.cs | 2 +- .../Devices/Shared/DynamicJsonConverter.cs | 2 +- .../Features/Devices/Shared/PublicKey.cs | 4 ++-- .../Features/Devices/Shared/Signature.cs | 2 +- .../Devices/UpdateActiveDevice/Endpoint.cs | 2 +- .../Identities/CancelDeletionProcess/Endpoint.cs | 2 +- .../Identities/ChangeFeatureFlags/Endpoint.cs | 2 +- .../Identities/CreateIdentity/Endpoint.cs | 3 ++- .../Identities/CreateIdentity/Handler.cs | 2 +- .../Identities/CreateIdentity/Validator.cs | 2 +- .../Identities/DeleteIdentity/IdentityDeleter.cs | 2 +- .../GetDeletionProcessAsOwner/Endpoint.cs | 2 +- .../Identities/GetOwnIdentity/Endpoint.cs | 2 +- .../IsIdentityOfUserDeleted/Endpoint.cs | 2 +- .../ListDeletionProcessesAsOwner/Endpoint.cs | 2 +- .../Identities/ListFeatureFlags/Endpoint.cs | 2 +- .../Identities/StartDeletionProcess/Endpoint.cs | 2 +- .../Identities/StartDeletionProcess/Handler.cs | 2 +- .../Notifications/SendNotification/Endpoint.cs | 2 +- .../DeleteDeviceRegistration/Endpoint.cs | 2 +- .../SendTestNotification/Endpoint.cs | 2 +- .../UpdateDeviceRegistration/Endpoint.cs | 2 +- .../UpdateDeviceRegistration/Handler.cs | 2 +- .../Aggregates/Tier/TierTests.cs | 2 +- ...ApplePushNotificationServiceConnectorTests.cs | 2 +- .../PushNotificationTextProviderTests.cs | 4 ++-- .../Devices/DeleteDevice/ValidatorTests.cs | 2 +- .../Devices/ListDevices/ValidatorTests.cs | 2 +- .../AnnouncementCreated/HandlerTests.cs | 2 +- .../HandlerTests.cs | 2 +- .../ExternalEventCreated/HandlerTests.cs | 2 +- .../DomainEvents/TokenLocked/HandlerTests.cs | 2 +- .../CancelDeletionProcess/HandlerTests.cs | 6 +++--- .../CancelDeletionProcess/ValidatorTests.cs | 4 ++-- .../DeleteIdentity/IdentityDeleterTests.cs | 4 ++-- .../Identities/DeleteIdentity/ValidatorTests.cs | 2 +- .../GetDeletionProcessAsOwner/ValidatorTests.cs | 4 ++-- .../ValidatorTests.cs | 4 ++-- .../Identities/GetIdentity/ValidatorTests.cs | 2 +- .../ValidatorTests.cs | 2 +- .../HandlerTests.cs | 4 ++-- .../ValidatorTests.cs | 2 +- .../Identities/ListIdentities/ValidatorTests.cs | 4 ++-- .../LogDeletionProcess/ValidatorTests.cs | 2 +- .../HandlerTests.cs | 6 +++--- .../StartDeletionProcess/HandlerTests.cs | 6 +++--- .../TriggerRipeDeletionProcesses/HandlerTests.cs | 4 ++-- .../Identities/UpdateIdentity/HandlerTests.cs | 4 ++-- .../Identities/UpdateIdentity/ValidatorTests.cs | 4 ++-- .../ValidatorTests.cs | 2 +- .../UpdateDeviceRegistration/HandlerTests.cs | 8 ++++---- .../Features/Tiers/CreateTier/ValidatorTests.cs | 4 ++-- .../Features/Tiers/DeleteTier/HandlerTests.cs | 4 ++-- .../Features/Tiers/DeleteTier/ValidatorTests.cs | 4 ++-- .../Files/ClaimFileOwnership/Endpoint.cs | 3 ++- .../Features/Files/CreateFile/Endpoint.cs | 6 +++--- .../Features/Files/DeleteFile/Endpoint.cs | 2 +- .../Features/Files/GetFileContent/Endpoint.cs | 4 ++-- .../Features/Files/GetFileMetadata/Endpoint.cs | 2 +- .../Features/Files/GetFileMetadata/Handler.cs | 2 +- .../Features/Files/ListFileMetadata/Endpoint.cs | 4 ++-- .../RegenerateFileOwnershipToken/Endpoint.cs | 2 +- .../Files/ValidateFileOwnershipToken/Endpoint.cs | 3 ++- .../Identities/DeleteIdentity/IdentityDeleter.cs | 6 +++--- .../src/Files.Module/FilesEndpointExtensions.cs | 6 +++--- Modules/Files/src/Files.Module/FilesModule.cs | 2 +- .../Files/GetFileContent/ValidatorTests.cs | 4 ++-- .../Files/GetFileMetadata/ValidatorTests.cs | 4 ++-- .../Files/ListFileMetadata/ValidatorTests.cs | 6 +++--- .../DeleteFilesOfIdentity/HandlerTests.cs | 6 +++--- .../DeleteFilesOfIdentity/ValidatorTests.cs | 4 ++-- .../DeleteIdentity/IdentityDeleterTests.cs | 4 ++-- .../src/Messages.Module/MessagesModule.cs | 2 +- .../DomainEvents/FileUploaded/Handler.cs | 2 +- .../DomainEvents/MessageCreated/Handler.cs | 2 +- .../RelationshipStatusChanged/Handler.cs | 2 +- .../RelationshipTemplateCreated/Handler.cs | 2 +- .../TierQuotaDefinitionDeleted/Handler.cs | 2 +- .../DomainEvents/TokenCreated/Handler.cs | 2 +- .../Identities/CreateQuotaForIdentity/Command.cs | 2 +- .../Identities/CreateQuotaForIdentity/Handler.cs | 4 ++-- .../Features/Identities/GetIdentity/Response.cs | 2 +- .../Features/Metrics/ListMetrics/Response.cs | 2 +- .../Features/Tiers/CreateQuotaForTier/Command.cs | 2 +- .../Features/Tiers/CreateQuotaForTier/Handler.cs | 2 +- .../Features/Tiers/GetTier/Handler.cs | 2 +- .../Quotas.Module/QuotasEventBusExtensions.cs | 14 +++++++------- Modules/Quotas/src/Quotas.Module/QuotasModule.cs | 4 ++-- .../DomainEvents/IdentityCreated/HandlerTests.cs | 4 ++-- .../DomainEvents/TierCreated/HandlerTests.cs | 4 ++-- .../DomainEvents/TierDeleted/HandlerTests.cs | 2 +- .../TierQuotaDefinitionCreated/HandlerTests.cs | 4 ++-- .../CreateQuotaForIdentity/HandlerTests.cs | 10 +++++----- .../Identities/DeleteIdentity/HandlerTests.cs | 6 +++--- .../DeleteIdentity/IdentityDeleterTests.cs | 4 ++-- .../Repository/RelationshipsRepository.cs | 2 +- .../FeatureFlagsOfIdentityChanged/Handler.cs | 2 +- .../Identities/DeleteIdentity/IdentityDeleter.cs | 6 +++--- .../Endpoint.cs | 2 +- .../CreateRelationshipTemplate/Endpoint.cs | 2 +- .../CreateRelationshipTemplate/Validator.cs | 2 +- .../DeleteRelationshipTemplate/Endpoint.cs | 2 +- .../GetRelationshipTemplate/Endpoint.cs | 2 +- .../ListRelationshipTemplates/Endpoint.cs | 2 +- .../Relationships/AcceptRelationship/Endpoint.cs | 3 ++- .../AcceptRelationshipReactivation/Endpoint.cs | 2 +- .../CanEstablishRelationship/Endpoint.cs | 2 +- .../Relationships/CreateRelationship/Endpoint.cs | 4 ++-- .../Relationships/CreateRelationship/Handler.cs | 2 +- .../DecomposeRelationship/Endpoint.cs | 2 +- .../Relationships/ExecuteHousekeeping/Handler.cs | 2 +- .../Relationships/GetRelationship/Endpoint.cs | 2 +- .../Relationships/ListRelationships/Endpoint.cs | 2 +- .../Relationships/RejectRelationship/Endpoint.cs | 3 ++- .../RejectRelationshipReactivation/Endpoint.cs | 2 +- .../RequestRelationshipReactivation/Endpoint.cs | 2 +- .../Relationships/RevokeRelationship/Endpoint.cs | 3 ++- .../RevokeRelationshipReactivation/Endpoint.cs | 2 +- .../TerminateRelationship/Endpoint.cs | 2 +- .../RelationshipsEndpointExtensions.cs | 8 ++++---- .../RelationshipsEventBusExtensions.cs | 4 ++-- .../Relationships.Module/RelationshipsModule.cs | 2 +- .../DomainEvents/IdentityDeleted/HandlerTests.cs | 6 +++--- .../IdentityDeletionCancelled/HandlerTests.cs | 6 +++--- .../IdentityToBeDeleted/HandlerTests.cs | 6 +++--- .../DeleteIdentity/IdentityDeleterTests.cs | 10 +++++----- .../CreateRelationshipTemplate/ValidatorTests.cs | 4 ++-- .../HandlerTests.cs | 6 +++--- .../ListRelationshipTemplates/ValidatorTests.cs | 4 ++-- .../HandlerTests.cs | 6 +++--- .../ListRelationshipsValidatorTests.cs | 4 ++-- .../Database/SynchronizationDbContext.cs | 2 +- .../Synchronization.Module/EventBusExtensions.cs | 12 ++++++------ .../Datawallets/GetDatawallet/Endpoint.cs | 2 +- .../Datawallets/GetDatawallet/Handler.cs | 2 +- .../Datawallets/ListModifications/Endpoint.cs | 4 ++-- .../Datawallets/ListModifications/Handler.cs | 2 +- .../PushDatawalletModifications/Endpoint.cs | 2 +- .../PushDatawalletModifications/Handler.cs | 2 +- .../Identities/DeleteIdentity/IdentityDeleter.cs | 6 +++--- .../FinalizeDatawalletVersionUpgrade/Endpoint.cs | 6 +++--- .../FinalizeDatawalletVersionUpgrade/Handler.cs | 2 +- .../Validator.cs | 2 +- .../FinalizeExternalEventSync/Endpoint.cs | 2 +- .../FinalizeExternalEventSync/Handler.cs | 2 +- .../FinalizeExternalEventSync/Validator.cs | 2 +- .../Features/SyncRuns/GetSyncRunById/Endpoint.cs | 2 +- .../Features/SyncRuns/GetSyncRunById/Handler.cs | 2 +- .../ListExternalEventsOfSyncRun/Endpoint.cs | 4 ++-- .../ListExternalEventsOfSyncRun/Handler.cs | 2 +- .../SyncRuns/Shared/SyncRunFinalization.cs | 2 +- .../Features/SyncRuns/StartSyncRun/Endpoint.cs | 6 +++--- .../Features/SyncRuns/StartSyncRun/Handler.cs | 2 +- .../Features/SyncRuns/StartSyncRun/Response.cs | 2 +- .../SynchronizationEndpointExtensions.cs | 6 +++--- .../SynchronizationModule.cs | 2 +- .../ListModifications/HandlerTests.cs | 4 ++-- .../PushDatawalletModifications/HandlerTests.cs | 4 ++-- ...tawalletModificationsCommandValidatorTests.cs | 2 +- .../HandlerTests.cs | 2 +- .../HandlerTests.cs | 4 ++-- .../MessageCreated/HandlerTests.cs | 4 ++-- .../ExternalEvents/PeerDeleted/HandlerTests.cs | 4 ++-- .../PeerDeletionCancelled/HandlerTests.cs | 4 ++-- .../PeerToBeDeleted/HandlerTests.cs | 4 ++-- .../HandlerTests.cs | 4 ++-- .../RelationshipStatusChanged/HandlerTests.cs | 4 ++-- .../ExternalEvents/TokenLocked/HandlerTests.cs | 4 ++-- .../DeleteIdentity/IdentityDeleterTests.cs | 8 ++++---- .../FinalizeExternalEventSync/HandlerTests.cs | 4 ++-- .../HandlerTests.cs | 4 ++-- .../SyncRuns/StartSyncRun/HandlerTests.cs | 6 +++--- .../StartSyncRunCommandValidatorTests.cs | 4 ++-- Modules/Tags/src/Tags.Module/TagsModule.cs | 2 +- .../Identities/DeleteIdentity/IdentityDeleter.cs | 8 ++++---- .../Features/Tokens/CreateToken/Endpoint.cs | 2 +- .../Features/Tokens/DeleteToken/Endpoint.cs | 2 +- .../Features/Tokens/GetToken/Endpoint.cs | 2 +- .../Features/Tokens/GetToken/Handler.cs | 2 +- .../Features/Tokens/ListTokens/Endpoint.cs | 4 ++-- .../Tokens/ListTokensByIdentity/Handler.cs | 2 +- .../Features/Tokens/Shared/Response.cs | 2 +- .../Tokens/UpdateTokenContent/Endpoint.cs | 3 ++- Modules/Tokens/src/Tokens.Module/TokensModule.cs | 2 +- .../DeleteIdentity/IdentityDeleterTests.cs | 4 ++-- .../Tokens/CreateToken/ValidatorTests.cs | 6 +++--- .../DeleteTokensOfIdentity/HandlerTests.cs | 6 +++--- 244 files changed, 431 insertions(+), 420 deletions(-) diff --git a/Applications/AdminApi/src/AdminApi/Controllers/AnnouncementsController.cs b/Applications/AdminApi/src/AdminApi/Controllers/AnnouncementsController.cs index 62b27f7a08..827a1007a3 100644 --- a/Applications/AdminApi/src/AdminApi/Controllers/AnnouncementsController.cs +++ b/Applications/AdminApi/src/AdminApi/Controllers/AnnouncementsController.cs @@ -1,14 +1,14 @@ -using CreateAnnouncement = Backbone.Modules.Announcements.Module.Features.Announcements.CreateAnnouncement; -using DeleteAnnouncementById = Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementById; -using GetAnnouncementById = Backbone.Modules.Announcements.Module.Features.Announcements.GetAnnouncementById; -using ListAnnouncements = Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncements; -using Backbone.AdminApi.Versions; +using Backbone.AdminApi.Versions; using Backbone.BuildingBlocks.API.Mvc; using Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; using Backbone.Modules.Announcements.Module.Features.Announcements.Shared; using MediatR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using CreateAnnouncement = Backbone.Modules.Announcements.Module.Features.Announcements.CreateAnnouncement; +using DeleteAnnouncementById = Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementById; +using GetAnnouncementById = Backbone.Modules.Announcements.Module.Features.Announcements.GetAnnouncementById; +using ListAnnouncements = Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncements; namespace Backbone.AdminApi.Controllers; diff --git a/Applications/AdminApi/src/AdminApi/Controllers/ChallengesController.cs b/Applications/AdminApi/src/AdminApi/Controllers/ChallengesController.cs index bd3c595cf0..dbee8546dc 100644 --- a/Applications/AdminApi/src/AdminApi/Controllers/ChallengesController.cs +++ b/Applications/AdminApi/src/AdminApi/Controllers/ChallengesController.cs @@ -1,5 +1,4 @@ -using CreateChallenge = Backbone.Modules.Challenges.Module.Features.Challenges.CreateChallenge; -using Backbone.AdminApi.Versions; +using Backbone.AdminApi.Versions; using Backbone.BuildingBlocks.API; using Backbone.BuildingBlocks.API.Mvc; using Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; @@ -7,6 +6,7 @@ using MediatR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using CreateChallenge = Backbone.Modules.Challenges.Module.Features.Challenges.CreateChallenge; namespace Backbone.AdminApi.Controllers; diff --git a/Applications/AdminApi/src/AdminApi/Controllers/ClientsController.cs b/Applications/AdminApi/src/AdminApi/Controllers/ClientsController.cs index 26c7a51bf6..52d9c5127c 100644 --- a/Applications/AdminApi/src/AdminApi/Controllers/ClientsController.cs +++ b/Applications/AdminApi/src/AdminApi/Controllers/ClientsController.cs @@ -1,8 +1,3 @@ -using ChangeClientSecret = Backbone.Modules.Devices.Module.Features.Clients.ChangeClientSecret; -using CreateClient = Backbone.Modules.Devices.Module.Features.Clients.CreateClient; -using DeleteClient = Backbone.Modules.Devices.Module.Features.Clients.DeleteClient; -using GetClient = Backbone.Modules.Devices.Module.Features.Clients.GetClient; -using UpdateClient = Backbone.Modules.Devices.Module.Features.Clients.UpdateClient; using Backbone.AdminApi.DTOs; using Backbone.AdminApi.Infrastructure.Persistence.Database; using Backbone.AdminApi.Versions; @@ -14,6 +9,11 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; +using ChangeClientSecret = Backbone.Modules.Devices.Module.Features.Clients.ChangeClientSecret; +using CreateClient = Backbone.Modules.Devices.Module.Features.Clients.CreateClient; +using DeleteClient = Backbone.Modules.Devices.Module.Features.Clients.DeleteClient; +using GetClient = Backbone.Modules.Devices.Module.Features.Clients.GetClient; +using UpdateClient = Backbone.Modules.Devices.Module.Features.Clients.UpdateClient; namespace Backbone.AdminApi.Controllers; diff --git a/Applications/AdminApi/src/AdminApi/Controllers/IdentitiesController.cs b/Applications/AdminApi/src/AdminApi/Controllers/IdentitiesController.cs index 84af83a4d7..0d75e11c3a 100644 --- a/Applications/AdminApi/src/AdminApi/Controllers/IdentitiesController.cs +++ b/Applications/AdminApi/src/AdminApi/Controllers/IdentitiesController.cs @@ -1,23 +1,23 @@ -using CreateIdentity = Backbone.Modules.Devices.Module.Features.Identities.CreateIdentity; -using CreateQuotaForIdentity = Backbone.Modules.Quotas.Module.Features.Identities.CreateQuotaForIdentity; -using DeleteQuotaForIdentity = Backbone.Modules.Quotas.Module.Features.Identities.DeleteQuotaForIdentity; -using GetDeletionProcessAsSupport = Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsSupport; -using ListDeletionProcessesAsSupport = Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsSupport; -using ListDeletionProcessesAuditLogs = Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; -using UpdateIdentity = Backbone.Modules.Devices.Module.Features.Identities.UpdateIdentity; using Backbone.AdminApi.Versions; using Backbone.BuildingBlocks.API; using Backbone.BuildingBlocks.API.Mvc; using Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; using Backbone.Modules.Devices.Module.Features.Devices.Shared; using Backbone.Modules.Devices.Module.Features.Shared; -using Backbone.Modules.Quotas.Module.Features.Shared; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; +using Backbone.Modules.Quotas.Module.Features.Shared; using MediatR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using CreateIdentity = Backbone.Modules.Devices.Module.Features.Identities.CreateIdentity; +using CreateQuotaForIdentity = Backbone.Modules.Quotas.Module.Features.Identities.CreateQuotaForIdentity; +using DeleteQuotaForIdentity = Backbone.Modules.Quotas.Module.Features.Identities.DeleteQuotaForIdentity; +using GetDeletionProcessAsSupport = Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsSupport; using GetIdentityQueryDevices = Backbone.Modules.Devices.Module.Features.Identities.GetIdentity.Query; using GetIdentityQueryQuotas = Backbone.Modules.Quotas.Module.Features.Identities.GetIdentity.Query; +using ListDeletionProcessesAsSupport = Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsSupport; +using ListDeletionProcessesAuditLogs = Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; +using UpdateIdentity = Backbone.Modules.Devices.Module.Features.Identities.UpdateIdentity; namespace Backbone.AdminApi.Controllers; diff --git a/Applications/AdminApi/src/AdminApi/Controllers/MetricsController.cs b/Applications/AdminApi/src/AdminApi/Controllers/MetricsController.cs index ebd4c2176a..d98da4be46 100644 --- a/Applications/AdminApi/src/AdminApi/Controllers/MetricsController.cs +++ b/Applications/AdminApi/src/AdminApi/Controllers/MetricsController.cs @@ -1,10 +1,10 @@ -using ListMetrics = Backbone.Modules.Quotas.Module.Features.Metrics.ListMetrics; using Backbone.AdminApi.Versions; using Backbone.BuildingBlocks.API; using Backbone.BuildingBlocks.API.Mvc; using MediatR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using ListMetrics = Backbone.Modules.Quotas.Module.Features.Metrics.ListMetrics; namespace Backbone.AdminApi.Controllers; diff --git a/Applications/AdminApi/src/AdminApi/Controllers/TiersController.cs b/Applications/AdminApi/src/AdminApi/Controllers/TiersController.cs index b4ae21e993..356799580b 100644 --- a/Applications/AdminApi/src/AdminApi/Controllers/TiersController.cs +++ b/Applications/AdminApi/src/AdminApi/Controllers/TiersController.cs @@ -1,20 +1,20 @@ -using CreateQuotaForTier = Backbone.Modules.Quotas.Module.Features.Tiers.CreateQuotaForTier; -using CreateTier = Backbone.Modules.Devices.Module.Features.Tiers.CreateTier; -using DeleteTier = Backbone.Modules.Devices.Module.Features.Tiers.DeleteTier; -using DeleteTierQuotaDefinition = Backbone.Modules.Quotas.Module.Features.Tiers.DeleteTierQuotaDefinition; -using GetTier = Backbone.Modules.Quotas.Module.Features.Tiers.GetTier; using Backbone.AdminApi.DTOs; using Backbone.AdminApi.Infrastructure.Persistence.Database; using Backbone.AdminApi.Versions; using Backbone.BuildingBlocks.API; using Backbone.BuildingBlocks.API.Mvc; using Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; -using Backbone.Modules.Quotas.Module.Features.Shared; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; +using Backbone.Modules.Quotas.Module.Features.Shared; using MediatR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; +using CreateQuotaForTier = Backbone.Modules.Quotas.Module.Features.Tiers.CreateQuotaForTier; +using CreateTier = Backbone.Modules.Devices.Module.Features.Tiers.CreateTier; +using DeleteTier = Backbone.Modules.Devices.Module.Features.Tiers.DeleteTier; +using DeleteTierQuotaDefinition = Backbone.Modules.Quotas.Module.Features.Tiers.DeleteTierQuotaDefinition; +using GetTier = Backbone.Modules.Quotas.Module.Features.Tiers.GetTier; namespace Backbone.AdminApi.Controllers; diff --git a/Applications/AdminApi/src/AdminApi/Controllers/TokensController.cs b/Applications/AdminApi/src/AdminApi/Controllers/TokensController.cs index b5e2b05ff8..6004824981 100644 --- a/Applications/AdminApi/src/AdminApi/Controllers/TokensController.cs +++ b/Applications/AdminApi/src/AdminApi/Controllers/TokensController.cs @@ -1,6 +1,4 @@ -using ListTokensByIdentity = Backbone.Modules.Tokens.Module.Features.Tokens.ListTokensByIdentity; -using ResetAccessFailedCountOfToken = Backbone.Modules.Tokens.Module.Features.Tokens.ResetAccessFailedCountOfToken; -using Backbone.AdminApi.Versions; +using Backbone.AdminApi.Versions; using Backbone.BuildingBlocks.API; using Backbone.BuildingBlocks.API.Mvc; using Backbone.BuildingBlocks.API.Mvc.ControllerAttributes; @@ -13,6 +11,8 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; +using ListTokensByIdentity = Backbone.Modules.Tokens.Module.Features.Tokens.ListTokensByIdentity; +using ResetAccessFailedCountOfToken = Backbone.Modules.Tokens.Module.Features.Tokens.ResetAccessFailedCountOfToken; namespace Backbone.AdminApi.Controllers; diff --git a/Applications/AdminCli/src/AdminCli/Commands/Announcements/DeleteAnnouncementCommand.cs b/Applications/AdminCli/src/AdminCli/Commands/Announcements/DeleteAnnouncementCommand.cs index 6b5c70c25c..2f959ec86e 100644 --- a/Applications/AdminCli/src/AdminCli/Commands/Announcements/DeleteAnnouncementCommand.cs +++ b/Applications/AdminCli/src/AdminCli/Commands/Announcements/DeleteAnnouncementCommand.cs @@ -1,7 +1,7 @@ -using DeleteAnnouncementById = Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementById; using System.CommandLine; using Backbone.AdminCli.Commands.BaseClasses; using MediatR; +using DeleteAnnouncementById = Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementById; namespace Backbone.AdminCli.Commands.Announcements; diff --git a/Applications/AdminCli/src/AdminCli/Commands/Announcements/SendAnnouncementCommand.cs b/Applications/AdminCli/src/AdminCli/Commands/Announcements/SendAnnouncementCommand.cs index 19075f8cd8..f8fa3702d0 100644 --- a/Applications/AdminCli/src/AdminCli/Commands/Announcements/SendAnnouncementCommand.cs +++ b/Applications/AdminCli/src/AdminCli/Commands/Announcements/SendAnnouncementCommand.cs @@ -1,10 +1,10 @@ -using CreateAnnouncement = Backbone.Modules.Announcements.Module.Features.Announcements.CreateAnnouncement; -using System.CommandLine; +using System.CommandLine; using System.Text.Json; using Backbone.AdminCli.Commands.BaseClasses; -using Backbone.Modules.Announcements.Module.Features.Announcements.CreateAnnouncement; using Backbone.Modules.Announcements.Domain.Entities; +using Backbone.Modules.Announcements.Module.Features.Announcements.CreateAnnouncement; using MediatR; +using CreateAnnouncement = Backbone.Modules.Announcements.Module.Features.Announcements.CreateAnnouncement; namespace Backbone.AdminCli.Commands.Announcements; diff --git a/Applications/AdminCli/src/AdminCli/Commands/Clients/DeleteClientsCommand.cs b/Applications/AdminCli/src/AdminCli/Commands/Clients/DeleteClientsCommand.cs index 371c434c42..e393eb2f3f 100644 --- a/Applications/AdminCli/src/AdminCli/Commands/Clients/DeleteClientsCommand.cs +++ b/Applications/AdminCli/src/AdminCli/Commands/Clients/DeleteClientsCommand.cs @@ -1,7 +1,7 @@ -using DeleteClient = Backbone.Modules.Devices.Module.Features.Clients.DeleteClient; using System.CommandLine; using Backbone.AdminCli.Commands.BaseClasses; using MediatR; +using DeleteClient = Backbone.Modules.Devices.Module.Features.Clients.DeleteClient; namespace Backbone.AdminCli.Commands.Clients; diff --git a/Applications/AdminCli/src/AdminCli/Commands/Clients/ListClientsCommand.cs b/Applications/AdminCli/src/AdminCli/Commands/Clients/ListClientsCommand.cs index a5369893be..e0f52dee9f 100644 --- a/Applications/AdminCli/src/AdminCli/Commands/Clients/ListClientsCommand.cs +++ b/Applications/AdminCli/src/AdminCli/Commands/Clients/ListClientsCommand.cs @@ -1,8 +1,8 @@ -using ListClients = Backbone.Modules.Devices.Module.Features.Clients.ListClients; using System.CommandLine; using System.Text.Json; using Backbone.AdminCli.Commands.BaseClasses; using MediatR; +using ListClients = Backbone.Modules.Devices.Module.Features.Clients.ListClients; namespace Backbone.AdminCli.Commands.Clients; diff --git a/Applications/AdminCli/src/AdminCli/Commands/Tiers/ListTiersCommand.cs b/Applications/AdminCli/src/AdminCli/Commands/Tiers/ListTiersCommand.cs index 624a1fb7d7..d866f36f11 100644 --- a/Applications/AdminCli/src/AdminCli/Commands/Tiers/ListTiersCommand.cs +++ b/Applications/AdminCli/src/AdminCli/Commands/Tiers/ListTiersCommand.cs @@ -1,9 +1,9 @@ -using ListTiers = Backbone.Modules.Devices.Module.Features.Tiers.ListTiers; using System.CommandLine; using System.Text.Json; using Backbone.AdminCli.Commands.BaseClasses; using Backbone.BuildingBlocks.Application.Pagination; using MediatR; +using ListTiers = Backbone.Modules.Devices.Module.Features.Tiers.ListTiers; namespace Backbone.AdminCli.Commands.Tiers; diff --git a/Applications/ConsumerApi/src/DevicesDbContextSeeder.cs b/Applications/ConsumerApi/src/DevicesDbContextSeeder.cs index c043969de6..2d40230697 100644 --- a/Applications/ConsumerApi/src/DevicesDbContextSeeder.cs +++ b/Applications/ConsumerApi/src/DevicesDbContextSeeder.cs @@ -1,11 +1,11 @@ -using CreateQueuedForDeletionTier = Backbone.Modules.Devices.Module.Features.Tiers.CreateQueuedForDeletionTier; -using CreateTier = Backbone.Modules.Devices.Module.Features.Tiers.CreateTier; -using SeedTestUsers = Backbone.Modules.Devices.Module.Features.Users.SeedTestUsers; using Backbone.BuildingBlocks.API.Extensions; -using Backbone.Modules.Devices.Module.Features.Tiers.Shared; using Backbone.Modules.Devices.Domain.Aggregates.Tier; using Backbone.Modules.Devices.Infrastructure.Persistence.Database; +using Backbone.Modules.Devices.Module.Features.Tiers.Shared; using MediatR; +using CreateQueuedForDeletionTier = Backbone.Modules.Devices.Module.Features.Tiers.CreateQueuedForDeletionTier; +using CreateTier = Backbone.Modules.Devices.Module.Features.Tiers.CreateTier; +using SeedTestUsers = Backbone.Modules.Devices.Module.Features.Users.SeedTestUsers; namespace Backbone.ConsumerApi; diff --git a/Applications/ConsumerApi/src/Extensions/IServiceCollectionExtensions.cs b/Applications/ConsumerApi/src/Extensions/IServiceCollectionExtensions.cs index d3f7719082..b31a60e200 100644 --- a/Applications/ConsumerApi/src/Extensions/IServiceCollectionExtensions.cs +++ b/Applications/ConsumerApi/src/Extensions/IServiceCollectionExtensions.cs @@ -8,9 +8,9 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.ConsumerApi.Configuration; -using Backbone.Modules.Devices.Module.Features.Devices.Shared; using Backbone.Modules.Devices.Infrastructure.OpenIddict; using Backbone.Modules.Devices.Infrastructure.Persistence.Database; +using Backbone.Modules.Devices.Module.Features.Devices.Shared; using FluentValidation; using Microsoft.AspNetCore.Mvc; using OpenIddict.Validation.AspNetCore; diff --git a/Applications/ConsumerApi/src/Program.cs b/Applications/ConsumerApi/src/Program.cs index 1be772c98b..74e5c8e861 100644 --- a/Applications/ConsumerApi/src/Program.cs +++ b/Applications/ConsumerApi/src/Program.cs @@ -28,8 +28,8 @@ using Backbone.Modules.Synchronization.Infrastructure.Persistence.Database; using Backbone.Modules.Synchronization.Module; using Backbone.Modules.Tags.Module; -using Backbone.Modules.Tokens.Module; using Backbone.Modules.Tokens.Infrastructure.Persistence.Database; +using Backbone.Modules.Tokens.Module; using Backbone.Tooling.Extensions; using Microsoft.AspNetCore.Diagnostics.HealthChecks; using Microsoft.AspNetCore.HttpOverrides; diff --git a/Applications/ConsumerApi/src/QuotasDbContextSeeder.cs b/Applications/ConsumerApi/src/QuotasDbContextSeeder.cs index 2cc4741c96..f7a701b512 100644 --- a/Applications/ConsumerApi/src/QuotasDbContextSeeder.cs +++ b/Applications/ConsumerApi/src/QuotasDbContextSeeder.cs @@ -1,7 +1,7 @@ -using SeedQueuedForDeletionTier = Backbone.Modules.Quotas.Module.Features.Tiers.SeedQueuedForDeletionTier; -using Backbone.BuildingBlocks.API.Extensions; +using Backbone.BuildingBlocks.API.Extensions; using Backbone.Modules.Quotas.Infrastructure.Persistence.Database; using MediatR; +using SeedQueuedForDeletionTier = Backbone.Modules.Quotas.Module.Features.Tiers.SeedQueuedForDeletionTier; namespace Backbone.ConsumerApi; diff --git a/Applications/Housekeeper/src/Housekeeper/Program.cs b/Applications/Housekeeper/src/Housekeeper/Program.cs index 822b42721f..644b8afa27 100644 --- a/Applications/Housekeeper/src/Housekeeper/Program.cs +++ b/Applications/Housekeeper/src/Housekeeper/Program.cs @@ -10,8 +10,8 @@ using Backbone.Modules.Files.Module; using Backbone.Modules.Relationships.Module; using Backbone.Modules.Synchronization.Module; -using Backbone.Modules.Tokens.Module; using Backbone.Modules.Tokens.Infrastructure; +using Backbone.Modules.Tokens.Module; using Microsoft.Extensions.Options; using Serilog; using Serilog.Exceptions; diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/DeletionProcessLogger.cs b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/DeletionProcessLogger.cs index 54b92d33d7..7cbc0dfbb2 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/DeletionProcessLogger.cs +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/DeletionProcessLogger.cs @@ -1,7 +1,7 @@ -using LogDeletionProcess = Backbone.Modules.Devices.Module.Features.Identities.LogDeletionProcess; -using Backbone.BuildingBlocks.Application.Identities; +using Backbone.BuildingBlocks.Application.Identities; using Backbone.DevelopmentKit.Identity.ValueObjects; using MediatR; +using LogDeletionProcess = Backbone.Modules.Devices.Module.Features.Identities.LogDeletionProcess; namespace Backbone.Job.IdentityDeletion; diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Workers/ActualDeletionWorker.cs b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Workers/ActualDeletionWorker.cs index 62cd29edba..44faa06b99 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Workers/ActualDeletionWorker.cs +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Workers/ActualDeletionWorker.cs @@ -1,14 +1,14 @@ -using GetIdentity = Backbone.Modules.Devices.Module.Features.Identities.GetIdentity; -using HandleCompletedDeletionProcess = Backbone.Modules.Devices.Module.Features.Identities.HandleCompletedDeletionProcess; -using HandleErrorDuringIdentityDeletion = Backbone.Modules.Devices.Module.Features.Identities.HandleErrorDuringIdentityDeletion; -using ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting = Backbone.Modules.Devices.Module.Features.Identities.ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting; -using TriggerRipeDeletionProcesses = Backbone.Modules.Devices.Module.Features.Identities.TriggerRipeDeletionProcesses; -using Backbone.BuildingBlocks.Application.Identities; +using Backbone.BuildingBlocks.Application.Identities; using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.BuildingBlocks.Domain.Errors; using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.DeletionProcess; using CSharpFunctionalExtensions; using MediatR; +using GetIdentity = Backbone.Modules.Devices.Module.Features.Identities.GetIdentity; +using HandleCompletedDeletionProcess = Backbone.Modules.Devices.Module.Features.Identities.HandleCompletedDeletionProcess; +using HandleErrorDuringIdentityDeletion = Backbone.Modules.Devices.Module.Features.Identities.HandleErrorDuringIdentityDeletion; +using ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting = Backbone.Modules.Devices.Module.Features.Identities.ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting; +using TriggerRipeDeletionProcesses = Backbone.Modules.Devices.Module.Features.Identities.TriggerRipeDeletionProcesses; namespace Backbone.Job.IdentityDeletion.Workers; diff --git a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Workers/SendGracePeriodRemindersWorker.cs b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Workers/SendGracePeriodRemindersWorker.cs index 635f1736e0..80829a0e66 100644 --- a/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Workers/SendGracePeriodRemindersWorker.cs +++ b/Applications/IdentityDeletionJobs/src/Job.IdentityDeletion/Workers/SendGracePeriodRemindersWorker.cs @@ -1,5 +1,5 @@ -using SendDeletionProcessGracePeriodReminders = Backbone.Modules.Devices.Module.Features.Identities.SendDeletionProcessGracePeriodReminders; -using MediatR; +using MediatR; +using SendDeletionProcessGracePeriodReminders = Backbone.Modules.Devices.Module.Features.Identities.SendDeletionProcessGracePeriodReminders; namespace Backbone.Job.IdentityDeletion.Workers; diff --git a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/Workers/ActualDeletionWorkerTests.cs b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/Workers/ActualDeletionWorkerTests.cs index 75662085b6..36b0d09869 100644 --- a/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/Workers/ActualDeletionWorkerTests.cs +++ b/Applications/IdentityDeletionJobs/test/Job.IdentityDeletion.Tests/Workers/ActualDeletionWorkerTests.cs @@ -1,19 +1,19 @@ -using GetIdentitySlice = Backbone.Modules.Devices.Module.Features.Identities.GetIdentity; -using ListRelationshipsOfIdentitySlice = Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationshipsOfIdentity; -using TriggerRipeDeletionProcessesSlice = Backbone.Modules.Devices.Module.Features.Identities.TriggerRipeDeletionProcesses; -using Backbone.BuildingBlocks.Application.Identities; +using Backbone.BuildingBlocks.Application.Identities; using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.BuildingBlocks.Domain.Errors; using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Job.IdentityDeletion.Workers; -using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.DeletionProcess; using Backbone.Modules.Devices.Domain.Aggregates.Tier; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.DeletionProcess; using CSharpFunctionalExtensions; using FakeItEasy; using MediatR; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; +using GetIdentitySlice = Backbone.Modules.Devices.Module.Features.Identities.GetIdentity; +using ListRelationshipsOfIdentitySlice = Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationshipsOfIdentity; +using TriggerRipeDeletionProcessesSlice = Backbone.Modules.Devices.Module.Features.Identities.TriggerRipeDeletionProcesses; namespace Backbone.Job.IdentityDeletion.Tests.Workers; diff --git a/Applications/SseServer/src/SseServer/Controllers/SseController.cs b/Applications/SseServer/src/SseServer/Controllers/SseController.cs index f44435a929..5abbb206d5 100644 --- a/Applications/SseServer/src/SseServer/Controllers/SseController.cs +++ b/Applications/SseServer/src/SseServer/Controllers/SseController.cs @@ -1,12 +1,12 @@ -using DeleteDeviceRegistration = Backbone.Modules.Devices.Module.Features.PushNotifications.DeleteDeviceRegistration; -using UpdateDeviceRegistration = Backbone.Modules.Devices.Module.Features.PushNotifications.UpdateDeviceRegistration; -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.Modules.Devices.Module.Features.PushNotifications.DeleteDeviceRegistration; using Backbone.Modules.Devices.Module.Features.PushNotifications.UpdateDeviceRegistration; using Backbone.SseServer.Versions; using MediatR; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using DeleteDeviceRegistration = Backbone.Modules.Devices.Module.Features.PushNotifications.DeleteDeviceRegistration; +using UpdateDeviceRegistration = Backbone.Modules.Devices.Module.Features.PushNotifications.UpdateDeviceRegistration; namespace Backbone.SseServer.Controllers; diff --git a/Applications/SseServer/src/SseServer/Program.cs b/Applications/SseServer/src/SseServer/Program.cs index b2538e48a0..29f154e6b6 100644 --- a/Applications/SseServer/src/SseServer/Program.cs +++ b/Applications/SseServer/src/SseServer/Program.cs @@ -4,8 +4,8 @@ using Backbone.BuildingBlocks.Application.QuotaCheck; using Backbone.BuildingBlocks.Infrastructure.EventBus; using Backbone.BuildingBlocks.Infrastructure.Persistence.Database; -using Backbone.Modules.Devices.Module; using Backbone.Modules.Devices.Infrastructure; +using Backbone.Modules.Devices.Module; using Backbone.SseServer.Controllers; using Backbone.SseServer.Extensions; using Backbone.Tooling.Extensions; diff --git a/Backbone.Tests.ArchUnit/UnitTests.cs b/Backbone.Tests.ArchUnit/UnitTests.cs index 474a140358..8b7f308b1b 100644 --- a/Backbone.Tests.ArchUnit/UnitTests.cs +++ b/Backbone.Tests.ArchUnit/UnitTests.cs @@ -1,5 +1,4 @@ -using System.Runtime.CompilerServices; -using System.Text.RegularExpressions; +using System.Text.RegularExpressions; using ArchUnitNET.xUnitV3; using Backbone.UnitTestTools.BaseClasses; using Shouldly; @@ -49,9 +48,13 @@ public void UnitTestsShouldExtendAbstractTestsBase() .Check(Backbone.ARCHITECTURE); } - private static IEnumerable<(string TestFile, string TestDirectory, string SourceDirectory, string RootNamespace)> GetUnitTestFiles([CallerFilePath] string callerFile = "") + private static IEnumerable<(string TestFile, string TestDirectory, string SourceDirectory, string RootNamespace)> GetUnitTestFiles() { - var repositoryDirectory = Path.GetDirectoryName(Path.GetDirectoryName(callerFile))!; + var directory = new DirectoryInfo(AppContext.BaseDirectory); + while (!File.Exists(Path.Combine(directory.FullName, "Backbone.slnx"))) + directory = directory.Parent ?? throw new DirectoryNotFoundException("Could not locate Backbone.slnx from the test output directory."); + + var repositoryDirectory = directory.FullName; var projects = Directory.GetFiles(repositoryDirectory, "*.csproj", SearchOption.AllDirectories); var sourceProjects = projects.Where(p => p.Contains($"{Path.DirectorySeparatorChar}src{Path.DirectorySeparatorChar}")) .ToDictionary(p => Path.GetFileNameWithoutExtension(p)!, p => p); diff --git a/BuildingBlocks/test/BuildingBlocks.Application.Tests/QuotaCheck/QuotaCheckerImplTests.cs b/BuildingBlocks/test/BuildingBlocks.Application.Tests/QuotaCheck/QuotaCheckerImplTests.cs index cd041bb38b..07f312ebb9 100644 --- a/BuildingBlocks/test/BuildingBlocks.Application.Tests/QuotaCheck/QuotaCheckerImplTests.cs +++ b/BuildingBlocks/test/BuildingBlocks.Application.Tests/QuotaCheck/QuotaCheckerImplTests.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.BuildingBlocks.Application.QuotaCheck; -using Backbone.BuildingBlocks.Domain; using Backbone.BuildingBlocks.Application.Tests.TestDoubles; +using Backbone.BuildingBlocks.Domain; using Backbone.Tooling; using Backbone.UnitTestTools.Shouldly.Extensions; using Backbone.UnitTestTools.TestDoubles; diff --git a/BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/Persistence/BlobStorage/GoogleCloudStorage/GoogleCloudStorageTests.cs b/BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/Persistence/BlobStorage/GoogleCloudStorage/GoogleCloudStorageTests.cs index ab7472d5b7..e27317718a 100644 --- a/BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/Persistence/BlobStorage/GoogleCloudStorage/GoogleCloudStorageTests.cs +++ b/BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/Persistence/BlobStorage/GoogleCloudStorage/GoogleCloudStorageTests.cs @@ -1,4 +1,3 @@ -using GoogleCloudBlobStorage = Backbone.BuildingBlocks.Infrastructure.Persistence.BlobStorage.GoogleCloudStorage.GoogleCloudStorage; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.Persistence.BlobStorage; using Backbone.BuildingBlocks.Infrastructure.Persistence.BlobStorage.GoogleCloudStorage; @@ -6,6 +5,7 @@ using Google.Apis.Auth.OAuth2; using Google.Cloud.Storage.V1; using Microsoft.Extensions.Logging; +using GoogleCloudBlobStorage = Backbone.BuildingBlocks.Infrastructure.Persistence.BlobStorage.GoogleCloudStorage.GoogleCloudStorage; namespace Backbone.BuildingBlocks.Infrastructure.Tests.Persistence.BlobStorage.GoogleCloudStorage; diff --git a/Modules/Announcements/src/Announcements.Module/AnnouncementsModule.cs b/Modules/Announcements/src/Announcements.Module/AnnouncementsModule.cs index 9a0b04b733..6092b20036 100644 --- a/Modules/Announcements/src/Announcements.Module/AnnouncementsModule.cs +++ b/Modules/Announcements/src/Announcements.Module/AnnouncementsModule.cs @@ -2,8 +2,8 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Application.MediatR; using Backbone.BuildingBlocks.Module; -using Backbone.Modules.Announcements.Infrastructure.Persistence.Database; using Backbone.Modules.Announcements.Infrastructure; +using Backbone.Modules.Announcements.Infrastructure.Persistence.Database; using FluentValidation; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/CreateAnnouncement/Command.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/CreateAnnouncement/Command.cs index dcb2a543a6..a9d1bbbb13 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/CreateAnnouncement/Command.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/CreateAnnouncement/Command.cs @@ -1,5 +1,5 @@ -using Backbone.Modules.Announcements.Module.Features.Announcements.Shared; using Backbone.Modules.Announcements.Domain.Entities; +using Backbone.Modules.Announcements.Module.Features.Announcements.Shared; using MediatR; namespace Backbone.Modules.Announcements.Module.Features.Announcements.CreateAnnouncement; diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/CreateAnnouncement/Handler.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/CreateAnnouncement/Handler.cs index d00c916061..8500233bc1 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/CreateAnnouncement/Handler.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/CreateAnnouncement/Handler.cs @@ -1,7 +1,7 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Announcements.Module.Features.Announcements.Shared; using Backbone.Modules.Announcements.Abstractions; using Backbone.Modules.Announcements.Domain.Entities; +using Backbone.Modules.Announcements.Module.Features.Announcements.Shared; using MediatR; namespace Backbone.Modules.Announcements.Module.Features.Announcements.CreateAnnouncement; diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/GetAnnouncementById/Handler.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/GetAnnouncementById/Handler.cs index b9ebf032c5..28a1c6fdd5 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/GetAnnouncementById/Handler.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/GetAnnouncementById/Handler.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.Modules.Announcements.Module.Features.Announcements.Shared; using Backbone.Modules.Announcements.Abstractions; using Backbone.Modules.Announcements.Domain.Entities; +using Backbone.Modules.Announcements.Module.Features.Announcements.Shared; using MediatR; namespace Backbone.Modules.Announcements.Module.Features.Announcements.GetAnnouncementById; diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Response.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Response.cs index 1d85b5382e..9514400c9a 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Response.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Response.cs @@ -1,6 +1,6 @@ using Backbone.BuildingBlocks.Application.CQRS.BaseClasses; -using Backbone.Modules.Announcements.Module.Features.Announcements.Shared; using Backbone.Modules.Announcements.Domain.Entities; +using Backbone.Modules.Announcements.Module.Features.Announcements.Shared; namespace Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncements; diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Response.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Response.cs index 4abfd8b0b5..2c235c22fc 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Response.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Response.cs @@ -1,6 +1,6 @@ using Backbone.BuildingBlocks.Application.CQRS.BaseClasses; -using Backbone.Modules.Announcements.Module.Features.Announcements.Shared; using Backbone.Modules.Announcements.Domain.Entities; +using Backbone.Modules.Announcements.Module.Features.Announcements.Shared; namespace Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncementsInLanguage; diff --git a/Modules/Announcements/src/Announcements.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs b/Modules/Announcements/src/Announcements.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs index 3fd2bcbba3..d61d50ada4 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs @@ -1,7 +1,7 @@ -using DeleteAnnouncementRecipients = Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementRecipients; using Backbone.BuildingBlocks.Application.Identities; using Backbone.DevelopmentKit.Identity.ValueObjects; using MediatR; +using DeleteAnnouncementRecipients = Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementRecipients; namespace Backbone.Modules.Announcements.Module.Features.Identities.DeleteIdentity; diff --git a/Modules/Announcements/test/Announcements.Module.Tests/Features/Announcements/CreateAnnouncement/ValidatorTests.cs b/Modules/Announcements/test/Announcements.Module.Tests/Features/Announcements/CreateAnnouncement/ValidatorTests.cs index 037e09308a..414740c11a 100644 --- a/Modules/Announcements/test/Announcements.Module.Tests/Features/Announcements/CreateAnnouncement/ValidatorTests.cs +++ b/Modules/Announcements/test/Announcements.Module.Tests/Features/Announcements/CreateAnnouncement/ValidatorTests.cs @@ -1,7 +1,7 @@ -using CreateAnnouncementSlice = Backbone.Modules.Announcements.Module.Features.Announcements.CreateAnnouncement; -using Backbone.Modules.Announcements.Module.Features.Announcements.CreateAnnouncement; using Backbone.Modules.Announcements.Domain.Entities; +using Backbone.Modules.Announcements.Module.Features.Announcements.CreateAnnouncement; using FluentValidation.TestHelper; +using CreateAnnouncementSlice = Backbone.Modules.Announcements.Module.Features.Announcements.CreateAnnouncement; namespace Backbone.Modules.Announcements.Module.Tests.Features.Announcements.CreateAnnouncement; diff --git a/Modules/Announcements/test/Announcements.Module.Tests/Features/Announcements/DeleteAnnouncementRecipients/HandlerTests.cs b/Modules/Announcements/test/Announcements.Module.Tests/Features/Announcements/DeleteAnnouncementRecipients/HandlerTests.cs index 60b1dc441a..53a0042357 100644 --- a/Modules/Announcements/test/Announcements.Module.Tests/Features/Announcements/DeleteAnnouncementRecipients/HandlerTests.cs +++ b/Modules/Announcements/test/Announcements.Module.Tests/Features/Announcements/DeleteAnnouncementRecipients/HandlerTests.cs @@ -1,9 +1,9 @@ -using DeleteAnnouncementRecipientsSlice = Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementRecipients; using System.Linq.Expressions; -using Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementRecipients; using Backbone.Modules.Announcements.Abstractions; using Backbone.Modules.Announcements.Domain.Entities; +using Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementRecipients; using FakeItEasy; +using DeleteAnnouncementRecipientsSlice = Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementRecipients; namespace Backbone.Modules.Announcements.Module.Tests.Features.Announcements.DeleteAnnouncementRecipients; diff --git a/Modules/Announcements/test/Announcements.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs b/Modules/Announcements/test/Announcements.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs index 094b45a9c6..b3f8963ddd 100644 --- a/Modules/Announcements/test/Announcements.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs +++ b/Modules/Announcements/test/Announcements.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs @@ -1,8 +1,8 @@ -using DeleteAnnouncementRecipientsSlice = Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementRecipients; using Backbone.BuildingBlocks.Application.Identities; using Backbone.Modules.Announcements.Module.Features.Identities.DeleteIdentity; using FakeItEasy; using MediatR; +using DeleteAnnouncementRecipientsSlice = Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementRecipients; namespace Backbone.Modules.Announcements.Module.Tests.Features.Identities.DeleteIdentity; diff --git a/Modules/Challenges/src/Challenges.Module/ChallengesModule.cs b/Modules/Challenges/src/Challenges.Module/ChallengesModule.cs index ef96122476..1e71a8e86d 100644 --- a/Modules/Challenges/src/Challenges.Module/ChallengesModule.cs +++ b/Modules/Challenges/src/Challenges.Module/ChallengesModule.cs @@ -2,8 +2,8 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Application.MediatR; using Backbone.BuildingBlocks.Module; -using Backbone.Modules.Challenges.Infrastructure.Persistence; using Backbone.Modules.Challenges.Infrastructure; +using Backbone.Modules.Challenges.Infrastructure.Persistence; using FluentValidation; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; diff --git a/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Handler.cs b/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Handler.cs index 267d701262..ebf06e7fde 100644 --- a/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Handler.cs +++ b/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Handler.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; -using Backbone.Modules.Challenges.Module.Features.Challenges.Shared; using Backbone.Modules.Challenges.Abstractions; using Backbone.Modules.Challenges.Domain.Entities; +using Backbone.Modules.Challenges.Module.Features.Challenges.Shared; using MediatR; namespace Backbone.Modules.Challenges.Module.Features.Challenges.CreateChallenge; diff --git a/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Handler.cs b/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Handler.cs index e30927a63a..26c5b59ce0 100644 --- a/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Handler.cs +++ b/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Handler.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.Modules.Challenges.Module.Features.Challenges.Shared; using Backbone.Modules.Challenges.Abstractions; using Backbone.Modules.Challenges.Domain.Ids; +using Backbone.Modules.Challenges.Module.Features.Challenges.Shared; using MediatR; namespace Backbone.Modules.Challenges.Module.Features.Challenges.GetChallengeById; diff --git a/Modules/Challenges/src/Challenges.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs b/Modules/Challenges/src/Challenges.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs index 3b7d3084d1..ac95603437 100644 --- a/Modules/Challenges/src/Challenges.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs +++ b/Modules/Challenges/src/Challenges.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs @@ -1,7 +1,7 @@ -using DeleteChallengesOfIdentity = Backbone.Modules.Challenges.Module.Features.Challenges.DeleteChallengesOfIdentity; using Backbone.BuildingBlocks.Application.Identities; using Backbone.DevelopmentKit.Identity.ValueObjects; using MediatR; +using DeleteChallengesOfIdentity = Backbone.Modules.Challenges.Module.Features.Challenges.DeleteChallengesOfIdentity; namespace Backbone.Modules.Challenges.Module.Features.Identities.DeleteIdentity; diff --git a/Modules/Challenges/test/Challenges.Module.Tests/Features/Challenges/DeleteChallengesOfIdentity/ValidatorTests.cs b/Modules/Challenges/test/Challenges.Module.Tests/Features/Challenges/DeleteChallengesOfIdentity/ValidatorTests.cs index e9982c6c39..390a0c184f 100644 --- a/Modules/Challenges/test/Challenges.Module.Tests/Features/Challenges/DeleteChallengesOfIdentity/ValidatorTests.cs +++ b/Modules/Challenges/test/Challenges.Module.Tests/Features/Challenges/DeleteChallengesOfIdentity/ValidatorTests.cs @@ -1,7 +1,7 @@ -using DeleteChallengesOfIdentitySlice = Backbone.Modules.Challenges.Module.Features.Challenges.DeleteChallengesOfIdentity; using Backbone.Modules.Challenges.Module.Features.Challenges.DeleteChallengesOfIdentity; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; +using DeleteChallengesOfIdentitySlice = Backbone.Modules.Challenges.Module.Features.Challenges.DeleteChallengesOfIdentity; namespace Backbone.Modules.Challenges.Module.Tests.Features.Challenges.DeleteChallengesOfIdentity; diff --git a/Modules/Challenges/test/Challenges.Module.Tests/Features/Challenges/GetChallengeById/ValidatorTests.cs b/Modules/Challenges/test/Challenges.Module.Tests/Features/Challenges/GetChallengeById/ValidatorTests.cs index 0154421aad..c549884b7b 100644 --- a/Modules/Challenges/test/Challenges.Module.Tests/Features/Challenges/GetChallengeById/ValidatorTests.cs +++ b/Modules/Challenges/test/Challenges.Module.Tests/Features/Challenges/GetChallengeById/ValidatorTests.cs @@ -1,8 +1,8 @@ -using GetChallengeByIdSlice = Backbone.Modules.Challenges.Module.Features.Challenges.GetChallengeById; -using Backbone.Modules.Challenges.Module.Features.Challenges.GetChallengeById; using Backbone.Modules.Challenges.Domain.Ids; +using Backbone.Modules.Challenges.Module.Features.Challenges.GetChallengeById; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; +using GetChallengeByIdSlice = Backbone.Modules.Challenges.Module.Features.Challenges.GetChallengeById; using Validator = Backbone.Modules.Challenges.Module.Features.Challenges.GetChallengeById.Validator; namespace Backbone.Modules.Challenges.Module.Tests.Features.Challenges.GetChallengeById; diff --git a/Modules/Challenges/test/Challenges.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs b/Modules/Challenges/test/Challenges.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs index 37746ad2d0..82e695e8d7 100644 --- a/Modules/Challenges/test/Challenges.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs +++ b/Modules/Challenges/test/Challenges.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs @@ -1,8 +1,8 @@ -using DeleteChallengesOfIdentitySlice = Backbone.Modules.Challenges.Module.Features.Challenges.DeleteChallengesOfIdentity; using Backbone.BuildingBlocks.Application.Identities; using Backbone.Modules.Challenges.Module.Features.Identities.DeleteIdentity; using FakeItEasy; using MediatR; +using DeleteChallengesOfIdentitySlice = Backbone.Modules.Challenges.Module.Features.Challenges.DeleteChallengesOfIdentity; namespace Backbone.Modules.Challenges.Module.Tests.Features.Identities.DeleteIdentity; diff --git a/Modules/Devices/src/Devices.Abstractions/PushNotifications/IPushNotificationRegistrationService.cs b/Modules/Devices/src/Devices.Abstractions/PushNotifications/IPushNotificationRegistrationService.cs index b28bbf2135..be5f11c5a8 100644 --- a/Modules/Devices/src/Devices.Abstractions/PushNotifications/IPushNotificationRegistrationService.cs +++ b/Modules/Devices/src/Devices.Abstractions/PushNotifications/IPushNotificationRegistrationService.cs @@ -1,6 +1,6 @@ using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications.Handles; using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications; +using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications.Handles; namespace Backbone.Modules.Devices.Abstractions.PushNotifications; diff --git a/Modules/Devices/src/Devices.Infrastructure/PushNotifications/Connectors/Apns/ApplePushNotificationServiceConnector.cs b/Modules/Devices/src/Devices.Infrastructure/PushNotifications/Connectors/Apns/ApplePushNotificationServiceConnector.cs index fe36ff2822..7ee2e0dace 100644 --- a/Modules/Devices/src/Devices.Infrastructure/PushNotifications/Connectors/Apns/ApplePushNotificationServiceConnector.cs +++ b/Modules/Devices/src/Devices.Infrastructure/PushNotifications/Connectors/Apns/ApplePushNotificationServiceConnector.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Devices.Abstractions.PushNotifications; using System.Text.Json; using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.BuildingBlocks.Infrastructure.Exceptions; +using Backbone.Modules.Devices.Abstractions.PushNotifications; using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications; using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications.Handles; using Backbone.Modules.Devices.Infrastructure.PushNotifications.Responses; diff --git a/Modules/Devices/src/Devices.Infrastructure/PushNotifications/Connectors/Fcm/FirebaseCloudMessagingConnector.cs b/Modules/Devices/src/Devices.Infrastructure/PushNotifications/Connectors/Fcm/FirebaseCloudMessagingConnector.cs index 60b5e59e3f..deae5382fa 100644 --- a/Modules/Devices/src/Devices.Infrastructure/PushNotifications/Connectors/Fcm/FirebaseCloudMessagingConnector.cs +++ b/Modules/Devices/src/Devices.Infrastructure/PushNotifications/Connectors/Fcm/FirebaseCloudMessagingConnector.cs @@ -1,6 +1,6 @@ -using Backbone.Modules.Devices.Abstractions.PushNotifications; using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.BuildingBlocks.Infrastructure.Exceptions; +using Backbone.Modules.Devices.Abstractions.PushNotifications; using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications; using Backbone.Modules.Devices.Infrastructure.PushNotifications.Responses; using FirebaseAdmin.Messaging; diff --git a/Modules/Devices/src/Devices.Infrastructure/PushNotifications/IServiceCollectionExtensions.cs b/Modules/Devices/src/Devices.Infrastructure/PushNotifications/IServiceCollectionExtensions.cs index c65a3cf93c..d77a714704 100644 --- a/Modules/Devices/src/Devices.Infrastructure/PushNotifications/IServiceCollectionExtensions.cs +++ b/Modules/Devices/src/Devices.Infrastructure/PushNotifications/IServiceCollectionExtensions.cs @@ -1,6 +1,6 @@ -using Backbone.Modules.Devices.Abstractions.PushNotifications; using System.ComponentModel.DataAnnotations; using Backbone.BuildingBlocks.Application.PushNotifications; +using Backbone.Modules.Devices.Abstractions.PushNotifications; using Backbone.Modules.Devices.Infrastructure.PushNotifications.Connectors; using Backbone.Modules.Devices.Infrastructure.PushNotifications.Connectors.Apns; using Backbone.Modules.Devices.Infrastructure.PushNotifications.Connectors.Dummy; diff --git a/Modules/Devices/src/Devices.Infrastructure/PushNotifications/PushService.cs b/Modules/Devices/src/Devices.Infrastructure/PushNotifications/PushService.cs index 8945e5f2eb..f07509a71e 100644 --- a/Modules/Devices/src/Devices.Infrastructure/PushNotifications/PushService.cs +++ b/Modules/Devices/src/Devices.Infrastructure/PushNotifications/PushService.cs @@ -1,8 +1,8 @@ -using Backbone.Modules.Devices.Abstractions.PushNotifications; using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.BuildingBlocks.Infrastructure.Exceptions; using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Devices.Abstractions; +using Backbone.Modules.Devices.Abstractions.PushNotifications; using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications; using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications.Handles; using Backbone.Modules.Devices.Domain.Entities.Identities; diff --git a/Modules/Devices/src/Devices.Module/DevicesEventBusExtensions.cs b/Modules/Devices/src/Devices.Module/DevicesEventBusExtensions.cs index a38f54c2df..8d2233fca3 100644 --- a/Modules/Devices/src/Devices.Module/DevicesEventBusExtensions.cs +++ b/Modules/Devices/src/Devices.Module/DevicesEventBusExtensions.cs @@ -1,14 +1,14 @@ +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; +using Backbone.Modules.Announcements.Contracts.DomainEvents; +using Backbone.Modules.Devices.Contracts.DomainEvents; +using Backbone.Modules.Synchronization.Contracts.DomainEvents; +using Backbone.Modules.Tokens.Contracts.DomainEvents; using AnnouncementCreated = Backbone.Modules.Devices.Module.Features.DomainEvents.AnnouncementCreated; using BackupDeviceUsed = Backbone.Modules.Devices.Module.Features.DomainEvents.BackupDeviceUsed; using DatawalletModificationCreated = Backbone.Modules.Devices.Module.Features.DomainEvents.DatawalletModificationCreated; using ExternalEventCreated = Backbone.Modules.Devices.Module.Features.DomainEvents.ExternalEventCreated; using IdentityDeletionProcessStarted = Backbone.Modules.Devices.Module.Features.DomainEvents.IdentityDeletionProcessStarted; using TokenLocked = Backbone.Modules.Devices.Module.Features.DomainEvents.TokenLocked; -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; -using Backbone.Modules.Announcements.Contracts.DomainEvents; -using Backbone.Modules.Devices.Contracts.DomainEvents; -using Backbone.Modules.Synchronization.Contracts.DomainEvents; -using Backbone.Modules.Tokens.Contracts.DomainEvents; namespace Backbone.Modules.Devices.Module; diff --git a/Modules/Devices/src/Devices.Module/DevicesModule.cs b/Modules/Devices/src/Devices.Module/DevicesModule.cs index f682b85f2f..ab13e676cb 100644 --- a/Modules/Devices/src/Devices.Module/DevicesModule.cs +++ b/Modules/Devices/src/Devices.Module/DevicesModule.cs @@ -6,9 +6,9 @@ using Backbone.Crypto.Abstractions; using Backbone.Crypto.Implementations; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Infrastructure; using Backbone.Modules.Devices.Infrastructure.Persistence; using Backbone.Modules.Devices.Infrastructure.PushNotifications; -using Backbone.Modules.Devices.Infrastructure; using Backbone.Modules.Devices.Module.Features.Devices.Shared; using FluentValidation; using Microsoft.Extensions.Configuration; diff --git a/Modules/Devices/src/Devices.Module/Features/Authorization/ExchangeToken/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Authorization/ExchangeToken/Endpoint.cs index 56c33b7a8e..ef36573eba 100644 --- a/Modules/Devices/src/Devices.Module/Features/Authorization/ExchangeToken/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Authorization/ExchangeToken/Endpoint.cs @@ -3,12 +3,12 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.Tooling.Extensions; +using Microsoft.AspNetCore; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Routing; -using Microsoft.AspNetCore; using Microsoft.IdentityModel.Tokens; using OpenIddict.Abstractions; using OpenIddict.Server.AspNetCore; diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Endpoint.cs index c0f55eb8d8..b1ef671dab 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Endpoint.cs index 41d9c8207d..fa08bffeab 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/GetActiveDevice/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Devices/GetActiveDevice/Endpoint.cs index 1f4aea07f6..e842f1b207 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/GetActiveDevice/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/GetActiveDevice/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.Modules.Devices.Module.Features.Devices.Shared; using MediatR; using Microsoft.AspNetCore.Builder; diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Endpoint.cs index 7dd314048f..72b2b252a2 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Pagination; using MediatR; diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Endpoint.cs index 3b0b1133be..7724f646a1 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Endpoint.cs @@ -1,12 +1,12 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Module.Features.Devices.Shared; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Routing; -using Backbone.Modules.Devices.Module.Features.Devices.Shared; namespace Backbone.Modules.Devices.Module.Features.Devices.RegisterDevice; @@ -37,6 +37,7 @@ private static async Task Handle([FromBody] RequestBody body, IMediator } } +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RegisterDeviceRequest")] public class RequestBody { public required string DevicePassword { get; set; } diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Validator.cs index c63d168cc8..f7190fefac 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Validator.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.FluentValidation; using Backbone.Modules.Devices.Domain.Entities.Identities; -using Backbone.Modules.Devices.Module.Features.Devices.Shared.Validators; using Backbone.Modules.Devices.Module.Features.Devices.Shared; +using Backbone.Modules.Devices.Module.Features.Devices.Shared.Validators; using FluentValidation; namespace Backbone.Modules.Devices.Module.Features.Devices.RegisterDevice; diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/Shared/ChallengeValidator.cs b/Modules/Devices/src/Devices.Module/Features/Devices/Shared/ChallengeValidator.cs index 89eae59aec..03803bd83f 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/Shared/ChallengeValidator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/Shared/ChallengeValidator.cs @@ -1,7 +1,7 @@ using System.Text.Json; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.Crypto.Abstractions; using Backbone.Crypto; +using Backbone.Crypto.Abstractions; using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities; using Backbone.Modules.Devices.Module.Features.Devices.Shared; diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/Shared/DynamicJsonConverter.cs b/Modules/Devices/src/Devices.Module/Features/Devices/Shared/DynamicJsonConverter.cs index 5fcbc718ad..88876927a8 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/Shared/DynamicJsonConverter.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/Shared/DynamicJsonConverter.cs @@ -1,7 +1,7 @@ using System.Dynamic; using System.Globalization; -using System.Text.Json.Serialization; using System.Text.Json; +using System.Text.Json.Serialization; namespace Backbone.Modules.Devices.Module.Features.Devices.Shared; diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/Shared/PublicKey.cs b/Modules/Devices/src/Devices.Module/Features/Devices/Shared/PublicKey.cs index 27c44b3a5c..16da967804 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/Shared/PublicKey.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/Shared/PublicKey.cs @@ -1,6 +1,6 @@ -using System.Text.Json.Serialization; -using System.Text.Json; using System.Text; +using System.Text.Json; +using System.Text.Json.Serialization; using Backbone.Modules.Devices.Module.Features.Devices.Shared; using Microsoft.IdentityModel.Tokens; diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/Shared/Signature.cs b/Modules/Devices/src/Devices.Module/Features/Devices/Shared/Signature.cs index 6e03cc2a00..7bc9d9f393 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/Shared/Signature.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/Shared/Signature.cs @@ -1,5 +1,5 @@ -using System.Text.Json; using System.Text; +using System.Text.Json; using Backbone.Modules.Devices.Module.Features.Devices.Shared; using Microsoft.IdentityModel.Tokens; diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Endpoint.cs index 24d3563dcb..0d72331881 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Endpoint.cs index 28f5ce2dd1..e0d767cf5f 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Endpoint.cs index 25a0893647..2735617ca9 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Endpoint.cs index 37427dca8e..32c848bc15 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities.Identities; @@ -50,6 +50,7 @@ private static async Task Handle([FromBody] RequestBody request, IOAuth } } +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateIdentityRequest")] public class RequestBody { public required string ClientId { get; set; } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Handler.cs index 8e7fc1c2c4..0d905b4d7d 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Handler.cs @@ -1,8 +1,8 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Devices.Abstractions; -using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.Modules.Devices.Domain.Entities; +using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.Modules.Devices.Module.Features.Devices.Shared; using MediatR; using Microsoft.Extensions.Logging; diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Validator.cs b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Validator.cs index 66d94bd4c6..e777fec397 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Validator.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Validator.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.FluentValidation; using Backbone.Modules.Devices.Domain.Entities.Identities; -using Backbone.Modules.Devices.Module.Features.Devices.Shared.Validators; using Backbone.Modules.Devices.Module.Features.Devices.Shared; +using Backbone.Modules.Devices.Module.Features.Devices.Shared.Validators; using FluentValidation; namespace Backbone.Modules.Devices.Module.Features.Identities.CreateIdentity; diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs b/Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs index d7cef13b87..27fae5a107 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs @@ -1,9 +1,9 @@ -using DeletePnsRegistrationsOfIdentity = Backbone.Modules.Devices.Module.Features.PushNotifications.DeletePnsRegistrationsOfIdentity; using Backbone.BuildingBlocks.Application.Identities; using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Devices.Module.Features.Identities.DeleteIdentity; using Backbone.Modules.Devices.Module.Features.PushNotifications.DeletePnsRegistrationsOfIdentity; using MediatR; +using DeletePnsRegistrationsOfIdentity = Backbone.Modules.Devices.Module.Features.PushNotifications.DeletePnsRegistrationsOfIdentity; namespace Backbone.Modules.Devices.Module.Features.Identities.DeleteIdentity; diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Endpoint.cs index e69b683b17..a00bae0be0 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.Modules.Devices.Module.Features.Shared; using MediatR; using Microsoft.AspNetCore.Builder; diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Endpoint.cs index ddeca115ad..1941191fd1 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Endpoint.cs index b8fc749d4b..c8173b7b27 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Endpoint.cs index 56c37491d0..e4ed2226a0 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Endpoint.cs index a82784ec78..eb20493dad 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Endpoint.cs index 6e672e2fe0..4746f9b55c 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Handler.cs b/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Handler.cs index fb7cbc6062..2fecacb9f2 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Handler.cs @@ -3,8 +3,8 @@ using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.BuildingBlocks.Domain.Exceptions; using Backbone.Modules.Devices.Abstractions; -using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.Modules.Devices.Domain; +using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.DeletionProcess; using MediatR; diff --git a/Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Endpoint.cs index a566bb1eec..07831266f9 100644 --- a/Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; diff --git a/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeleteDeviceRegistration/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeleteDeviceRegistration/Endpoint.cs index df78dfa0fa..0389cd8312 100644 --- a/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeleteDeviceRegistration/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeleteDeviceRegistration/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; diff --git a/Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Endpoint.cs index fc3a897d34..e2230634d0 100644 --- a/Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; diff --git a/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Endpoint.cs index f1534812e9..1d64e2dd3b 100644 --- a/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; diff --git a/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Handler.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Handler.cs index acba98a10e..1c90a3a2f4 100644 --- a/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Handler.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Handler.cs @@ -2,8 +2,8 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Devices.Abstractions.PushNotifications; -using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications.Handles; using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications; +using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications.Handles; using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared; using MediatR; using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; diff --git a/Modules/Devices/test/Devices.Domain.Tests/Aggregates/Tier/TierTests.cs b/Modules/Devices/test/Devices.Domain.Tests/Aggregates/Tier/TierTests.cs index 8649127cbb..e33076b11a 100644 --- a/Modules/Devices/test/Devices.Domain.Tests/Aggregates/Tier/TierTests.cs +++ b/Modules/Devices/test/Devices.Domain.Tests/Aggregates/Tier/TierTests.cs @@ -1,5 +1,5 @@ -using TierEntity = Backbone.Modules.Devices.Domain.Aggregates.Tier.Tier; using Backbone.Modules.Devices.Domain.Aggregates.Tier; +using TierEntity = Backbone.Modules.Devices.Domain.Aggregates.Tier.Tier; namespace Backbone.Modules.Devices.Domain.Tests.Aggregates.Tier; diff --git a/Modules/Devices/test/Devices.Infrastructure.Tests/PushNotifications/Connectors/Apns/ApplePushNotificationServiceConnectorTests.cs b/Modules/Devices/test/Devices.Infrastructure.Tests/PushNotifications/Connectors/Apns/ApplePushNotificationServiceConnectorTests.cs index 25c79062d2..5894e211d2 100644 --- a/Modules/Devices/test/Devices.Infrastructure.Tests/PushNotifications/Connectors/Apns/ApplePushNotificationServiceConnectorTests.cs +++ b/Modules/Devices/test/Devices.Infrastructure.Tests/PushNotifications/Connectors/Apns/ApplePushNotificationServiceConnectorTests.cs @@ -1,10 +1,10 @@ using System.Net; using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared; using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications; using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications.Handles; using Backbone.Modules.Devices.Infrastructure.PushNotifications.Connectors.Apns; +using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared; using FakeItEasy; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; diff --git a/Modules/Devices/test/Devices.Infrastructure.Tests/PushNotifications/NotificationTexts/PushNotificationTextProviderTests.cs b/Modules/Devices/test/Devices.Infrastructure.Tests/PushNotifications/NotificationTexts/PushNotificationTextProviderTests.cs index cdc2fd0d0d..b360cfc96f 100644 --- a/Modules/Devices/test/Devices.Infrastructure.Tests/PushNotifications/NotificationTexts/PushNotificationTextProviderTests.cs +++ b/Modules/Devices/test/Devices.Infrastructure.Tests/PushNotifications/NotificationTexts/PushNotificationTextProviderTests.cs @@ -1,9 +1,9 @@ using Backbone.BuildingBlocks.Application.PushNotifications; +using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Infrastructure.PushNotifications.NotificationTexts; using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared; using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.Announcements; using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.Datawallet; -using Backbone.Modules.Devices.Domain.Entities.Identities; -using Backbone.Modules.Devices.Infrastructure.PushNotifications.NotificationTexts; namespace Backbone.Modules.Devices.Infrastructure.Tests.PushNotifications.NotificationTexts; diff --git a/Modules/Devices/test/Devices.Module.Tests/Features/Devices/DeleteDevice/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Devices/DeleteDevice/ValidatorTests.cs index d1531fc4c9..490ab43040 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Features/Devices/DeleteDevice/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Devices/DeleteDevice/ValidatorTests.cs @@ -1,8 +1,8 @@ -using DeleteDeviceSlice = Backbone.Modules.Devices.Module.Features.Devices.DeleteDevice; using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Devices.Module.Features.Devices.DeleteDevice; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; +using DeleteDeviceSlice = Backbone.Modules.Devices.Module.Features.Devices.DeleteDevice; namespace Backbone.Modules.Devices.Module.Tests.Features.Devices.DeleteDevice; diff --git a/Modules/Devices/test/Devices.Module.Tests/Features/Devices/ListDevices/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Devices/ListDevices/ValidatorTests.cs index 799d860260..91acba7f61 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Features/Devices/ListDevices/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Devices/ListDevices/ValidatorTests.cs @@ -1,9 +1,9 @@ -using ListDevicesSlice = Backbone.Modules.Devices.Module.Features.Devices.ListDevices; using Backbone.BuildingBlocks.Application.Pagination; using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Devices.Module.Features.Devices.ListDevices; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; +using ListDevicesSlice = Backbone.Modules.Devices.Module.Features.Devices.ListDevices; namespace Backbone.Modules.Devices.Module.Tests.Features.Devices.ListDevices; diff --git a/Modules/Devices/test/Devices.Module.Tests/Features/DomainEvents/AnnouncementCreated/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/DomainEvents/AnnouncementCreated/HandlerTests.cs index 88b0311962..09964e9168 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Features/DomainEvents/AnnouncementCreated/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/DomainEvents/AnnouncementCreated/HandlerTests.cs @@ -1,7 +1,7 @@ -using AnnouncementCreatedSlice = Backbone.Modules.Devices.Module.Features.DomainEvents.AnnouncementCreated; using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.Modules.Announcements.Contracts.DomainEvents; using FakeItEasy; +using AnnouncementCreatedSlice = Backbone.Modules.Devices.Module.Features.DomainEvents.AnnouncementCreated; namespace Backbone.Modules.Devices.Module.Tests.Features.DomainEvents.AnnouncementCreated; diff --git a/Modules/Devices/test/Devices.Module.Tests/Features/DomainEvents/DatawalletModificationCreated/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/DomainEvents/DatawalletModificationCreated/HandlerTests.cs index 88a5f29484..72e5b2764d 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Features/DomainEvents/DatawalletModificationCreated/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/DomainEvents/DatawalletModificationCreated/HandlerTests.cs @@ -1,8 +1,8 @@ -using DatawalletModificationCreatedSlice = Backbone.Modules.Devices.Module.Features.DomainEvents.DatawalletModificationCreated; using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.Datawallet; using Backbone.Modules.Synchronization.Contracts.DomainEvents; using FakeItEasy; +using DatawalletModificationCreatedSlice = Backbone.Modules.Devices.Module.Features.DomainEvents.DatawalletModificationCreated; namespace Backbone.Modules.Devices.Module.Tests.Features.DomainEvents.DatawalletModificationCreated; diff --git a/Modules/Devices/test/Devices.Module.Tests/Features/DomainEvents/ExternalEventCreated/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/DomainEvents/ExternalEventCreated/HandlerTests.cs index 839422476b..553f027ff4 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Features/DomainEvents/ExternalEventCreated/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/DomainEvents/ExternalEventCreated/HandlerTests.cs @@ -1,9 +1,9 @@ -using ExternalEventCreatedSlice = Backbone.Modules.Devices.Module.Features.DomainEvents.ExternalEventCreated; using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.ExternalEvents; using Backbone.Modules.Synchronization.Contracts.DomainEvents; using FakeItEasy; +using ExternalEventCreatedSlice = Backbone.Modules.Devices.Module.Features.DomainEvents.ExternalEventCreated; namespace Backbone.Modules.Devices.Module.Tests.Features.DomainEvents.ExternalEventCreated; diff --git a/Modules/Devices/test/Devices.Module.Tests/Features/DomainEvents/TokenLocked/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/DomainEvents/TokenLocked/HandlerTests.cs index 70b6dc1a82..1ed28f5115 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Features/DomainEvents/TokenLocked/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/DomainEvents/TokenLocked/HandlerTests.cs @@ -1,10 +1,10 @@ -using TokenLockedSlice = Backbone.Modules.Devices.Module.Features.DomainEvents.TokenLocked; using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.Tokens; using Backbone.Modules.Tokens.Contracts.DomainEvents; using FakeItEasy; +using TokenLockedSlice = Backbone.Modules.Devices.Module.Features.DomainEvents.TokenLocked; namespace Backbone.Modules.Devices.Module.Tests.Features.DomainEvents.TokenLocked; diff --git a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/CancelDeletionProcess/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/CancelDeletionProcess/HandlerTests.cs index 54fb61ab95..bd3788bfed 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/CancelDeletionProcess/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/CancelDeletionProcess/HandlerTests.cs @@ -1,12 +1,12 @@ -using CancelDeletionProcessSlice = Backbone.Modules.Devices.Module.Features.Identities.CancelDeletionProcess; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.BuildingBlocks.Application.PushNotifications; -using Backbone.Modules.Devices.Module.Features.Identities.CancelDeletionProcess; using Backbone.Modules.Devices.Abstractions; -using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.DeletionProcess; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Module.Features.Identities.CancelDeletionProcess; +using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.DeletionProcess; using FakeItEasy; +using CancelDeletionProcessSlice = Backbone.Modules.Devices.Module.Features.Identities.CancelDeletionProcess; namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.CancelDeletionProcess; diff --git a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/CancelDeletionProcess/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/CancelDeletionProcess/ValidatorTests.cs index f4d5271b4d..4676dc9963 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/CancelDeletionProcess/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/CancelDeletionProcess/ValidatorTests.cs @@ -1,8 +1,8 @@ -using CancelDeletionProcessSlice = Backbone.Modules.Devices.Module.Features.Identities.CancelDeletionProcess; -using Backbone.Modules.Devices.Module.Features.Identities.CancelDeletionProcess; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Module.Features.Identities.CancelDeletionProcess; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; +using CancelDeletionProcessSlice = Backbone.Modules.Devices.Module.Features.Identities.CancelDeletionProcess; namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.CancelDeletionProcess; diff --git a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs index 894874a80f..72e9051a73 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs @@ -1,9 +1,9 @@ -using DeleteIdentitySlice = Backbone.Modules.Devices.Module.Features.Identities.DeleteIdentity; -using DeletePnsRegistrationsOfIdentitySlice = Backbone.Modules.Devices.Module.Features.PushNotifications.DeletePnsRegistrationsOfIdentity; using Backbone.BuildingBlocks.Application.Identities; using Backbone.Modules.Devices.Module.Features.Identities.DeleteIdentity; using FakeItEasy; using MediatR; +using DeleteIdentitySlice = Backbone.Modules.Devices.Module.Features.Identities.DeleteIdentity; +using DeletePnsRegistrationsOfIdentitySlice = Backbone.Modules.Devices.Module.Features.PushNotifications.DeletePnsRegistrationsOfIdentity; namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.DeleteIdentity; diff --git a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/DeleteIdentity/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/DeleteIdentity/ValidatorTests.cs index 9d58871b8a..50d2b04645 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/DeleteIdentity/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/DeleteIdentity/ValidatorTests.cs @@ -1,7 +1,7 @@ -using DeleteIdentitySlice = Backbone.Modules.Devices.Module.Features.Identities.DeleteIdentity; using Backbone.Modules.Devices.Module.Features.Identities.DeleteIdentity; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; +using DeleteIdentitySlice = Backbone.Modules.Devices.Module.Features.Identities.DeleteIdentity; namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.DeleteIdentity; diff --git a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/GetDeletionProcessAsOwner/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/GetDeletionProcessAsOwner/ValidatorTests.cs index 7bfd80147f..3d62272b92 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/GetDeletionProcessAsOwner/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/GetDeletionProcessAsOwner/ValidatorTests.cs @@ -1,8 +1,8 @@ -using GetDeletionProcessAsOwnerSlice = Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsOwner; -using Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsOwner; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsOwner; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; +using GetDeletionProcessAsOwnerSlice = Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsOwner; namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.GetDeletionProcessAsOwner; diff --git a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/GetDeletionProcessAsSupport/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/GetDeletionProcessAsSupport/ValidatorTests.cs index 0ee550cd30..0abb0e460c 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/GetDeletionProcessAsSupport/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/GetDeletionProcessAsSupport/ValidatorTests.cs @@ -1,8 +1,8 @@ -using GetDeletionProcessAsSupportSlice = Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsSupport; -using Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsSupport; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsSupport; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; +using GetDeletionProcessAsSupportSlice = Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsSupport; namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.GetDeletionProcessAsSupport; diff --git a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/GetIdentity/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/GetIdentity/ValidatorTests.cs index bf5f400267..a6dfb190f5 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/GetIdentity/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/GetIdentity/ValidatorTests.cs @@ -1,7 +1,7 @@ -using GetIdentitySlice = Backbone.Modules.Devices.Module.Features.Identities.GetIdentity; using Backbone.Modules.Devices.Module.Features.Identities.GetIdentity; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; +using GetIdentitySlice = Backbone.Modules.Devices.Module.Features.Identities.GetIdentity; namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.GetIdentity; diff --git a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/ListDeletionProcessesAsSupport/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/ListDeletionProcessesAsSupport/ValidatorTests.cs index 50d4075ff2..f207c46d61 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/ListDeletionProcessesAsSupport/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/ListDeletionProcessesAsSupport/ValidatorTests.cs @@ -1,7 +1,7 @@ -using ListDeletionProcessesAsSupportSlice = Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsSupport; using Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsSupport; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; +using ListDeletionProcessesAsSupportSlice = Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsSupport; namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.ListDeletionProcessesAsSupport; diff --git a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/ListDeletionProcessesAuditLogs/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/ListDeletionProcessesAuditLogs/HandlerTests.cs index cd59993dc3..871e277080 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/ListDeletionProcessesAuditLogs/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/ListDeletionProcessesAuditLogs/HandlerTests.cs @@ -1,8 +1,7 @@ -using ListDeletionProcessesAuditLogsSlice = Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; -using Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; using Backbone.Modules.Devices.Domain.Entities.Identities; using Backbone.Modules.Devices.Infrastructure.Persistence.Database; using Backbone.Modules.Devices.Infrastructure.Persistence.Repository; +using Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; using Backbone.UnitTestTools.Extensions; using Backbone.UnitTestTools.Shouldly.Extensions; using Backbone.UnitTestTools.TestDoubles.Fakes; @@ -10,6 +9,7 @@ using Microsoft.AspNetCore.Identity; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; +using ListDeletionProcessesAuditLogsSlice = Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.ListDeletionProcessesAuditLogs; diff --git a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/ListDeletionProcessesAuditLogs/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/ListDeletionProcessesAuditLogs/ValidatorTests.cs index b39b766fb2..2545ef20d4 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/ListDeletionProcessesAuditLogs/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/ListDeletionProcessesAuditLogs/ValidatorTests.cs @@ -1,7 +1,7 @@ -using ListDeletionProcessesAuditLogsSlice = Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; using Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; +using ListDeletionProcessesAuditLogsSlice = Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.ListDeletionProcessesAuditLogs; diff --git a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/ListIdentities/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/ListIdentities/ValidatorTests.cs index 12bf796a11..26c8f4fe8b 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/ListIdentities/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/ListIdentities/ValidatorTests.cs @@ -1,8 +1,8 @@ -using ListIdentitiesSlice = Backbone.Modules.Devices.Module.Features.Identities.ListIdentities; -using Backbone.Modules.Devices.Module.Features.Identities.ListIdentities; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Module.Features.Identities.ListIdentities; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; +using ListIdentitiesSlice = Backbone.Modules.Devices.Module.Features.Identities.ListIdentities; namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.ListIdentities; diff --git a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/LogDeletionProcess/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/LogDeletionProcess/ValidatorTests.cs index ec3d1ad870..428ba6ea5e 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/LogDeletionProcess/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/LogDeletionProcess/ValidatorTests.cs @@ -1,7 +1,7 @@ -using LogDeletionProcessSlice = Backbone.Modules.Devices.Module.Features.Identities.LogDeletionProcess; using Backbone.Modules.Devices.Module.Features.Identities.LogDeletionProcess; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; +using LogDeletionProcessSlice = Backbone.Modules.Devices.Module.Features.Identities.LogDeletionProcess; namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.LogDeletionProcess; diff --git a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/SendDeletionProcessGracePeriodReminders/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/SendDeletionProcessGracePeriodReminders/HandlerTests.cs index fd574b1aea..e679aaf3b4 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/SendDeletionProcessGracePeriodReminders/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/SendDeletionProcessGracePeriodReminders/HandlerTests.cs @@ -1,12 +1,12 @@ -using SendDeletionProcessGracePeriodRemindersSlice = Backbone.Modules.Devices.Module.Features.Identities.SendDeletionProcessGracePeriodReminders; using Backbone.BuildingBlocks.Application.PushNotifications; -using Backbone.Modules.Devices.Module.Features.Identities.SendDeletionProcessGracePeriodReminders; using Backbone.Modules.Devices.Abstractions; -using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.DeletionProcess; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Module.Features.Identities.SendDeletionProcessGracePeriodReminders; +using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.DeletionProcess; using Backbone.Tooling; using FakeItEasy; using Microsoft.Extensions.Logging; +using SendDeletionProcessGracePeriodRemindersSlice = Backbone.Modules.Devices.Module.Features.Identities.SendDeletionProcessGracePeriodReminders; namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.SendDeletionProcessGracePeriodReminders; diff --git a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/StartDeletionProcess/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/StartDeletionProcess/HandlerTests.cs index dedbacfa78..c4f5eb2195 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/StartDeletionProcess/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/StartDeletionProcess/HandlerTests.cs @@ -1,13 +1,13 @@ -using StartDeletionProcessSlice = Backbone.Modules.Devices.Module.Features.Identities.StartDeletionProcess; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.BuildingBlocks.Application.PushNotifications; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Module.Features.Identities.StartDeletionProcess; using Backbone.Modules.Devices.Abstractions; -using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.DeletionProcess; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Module.Features.Identities.StartDeletionProcess; +using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared.DeletionProcess; using FakeItEasy; +using StartDeletionProcessSlice = Backbone.Modules.Devices.Module.Features.Identities.StartDeletionProcess; namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.StartDeletionProcess; diff --git a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/TriggerRipeDeletionProcesses/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/TriggerRipeDeletionProcesses/HandlerTests.cs index d50aaf6d58..305aa19530 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/TriggerRipeDeletionProcesses/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/TriggerRipeDeletionProcesses/HandlerTests.cs @@ -1,11 +1,11 @@ -using TriggerRipeDeletionProcessesSlice = Backbone.Modules.Devices.Module.Features.Identities.TriggerRipeDeletionProcesses; using System.Linq.Expressions; -using Backbone.Modules.Devices.Module.Features.Identities.TriggerRipeDeletionProcesses; using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Module.Features.Identities.TriggerRipeDeletionProcesses; using Backbone.Tooling; using Backbone.UnitTestTools.Shouldly.Extensions; using FakeItEasy; +using TriggerRipeDeletionProcessesSlice = Backbone.Modules.Devices.Module.Features.Identities.TriggerRipeDeletionProcesses; namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.TriggerRipeDeletionProcesses; diff --git a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/UpdateIdentity/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/UpdateIdentity/HandlerTests.cs index 4548ffc394..4e9adefb06 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/UpdateIdentity/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/UpdateIdentity/HandlerTests.cs @@ -1,12 +1,12 @@ -using UpdateIdentitySlice = Backbone.Modules.Devices.Module.Features.Identities.UpdateIdentity; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Domain.Exceptions; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Module.Features.Identities.UpdateIdentity; using Backbone.Modules.Devices.Abstractions; using Backbone.Modules.Devices.Domain.Aggregates.Tier; using Backbone.Modules.Devices.Domain.Entities.Identities; +using Backbone.Modules.Devices.Module.Features.Identities.UpdateIdentity; using FakeItEasy; +using UpdateIdentitySlice = Backbone.Modules.Devices.Module.Features.Identities.UpdateIdentity; namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.UpdateIdentity; diff --git a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/UpdateIdentity/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/UpdateIdentity/ValidatorTests.cs index 8a987c6e34..df04ba32f3 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Features/Identities/UpdateIdentity/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Identities/UpdateIdentity/ValidatorTests.cs @@ -1,8 +1,8 @@ -using UpdateIdentitySlice = Backbone.Modules.Devices.Module.Features.Identities.UpdateIdentity; -using Backbone.Modules.Devices.Module.Features.Identities.UpdateIdentity; using Backbone.Modules.Devices.Domain.Aggregates.Tier; +using Backbone.Modules.Devices.Module.Features.Identities.UpdateIdentity; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; +using UpdateIdentitySlice = Backbone.Modules.Devices.Module.Features.Identities.UpdateIdentity; namespace Backbone.Modules.Devices.Module.Tests.Features.Identities.UpdateIdentity; diff --git a/Modules/Devices/test/Devices.Module.Tests/Features/PushNotifications/DeletePnsRegistrationsOfIdentity/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/PushNotifications/DeletePnsRegistrationsOfIdentity/ValidatorTests.cs index 7081055d47..b3390fd512 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Features/PushNotifications/DeletePnsRegistrationsOfIdentity/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/PushNotifications/DeletePnsRegistrationsOfIdentity/ValidatorTests.cs @@ -1,7 +1,7 @@ -using DeletePnsRegistrationsOfIdentitySlice = Backbone.Modules.Devices.Module.Features.PushNotifications.DeletePnsRegistrationsOfIdentity; using Backbone.Modules.Devices.Module.Features.PushNotifications.DeletePnsRegistrationsOfIdentity; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; +using DeletePnsRegistrationsOfIdentitySlice = Backbone.Modules.Devices.Module.Features.PushNotifications.DeletePnsRegistrationsOfIdentity; namespace Backbone.Modules.Devices.Module.Tests.Features.PushNotifications.DeletePnsRegistrationsOfIdentity; diff --git a/Modules/Devices/test/Devices.Module.Tests/Features/PushNotifications/UpdateDeviceRegistration/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/PushNotifications/UpdateDeviceRegistration/HandlerTests.cs index faf01d9c91..3922b508be 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Features/PushNotifications/UpdateDeviceRegistration/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/PushNotifications/UpdateDeviceRegistration/HandlerTests.cs @@ -1,12 +1,12 @@ -using UpdateDeviceRegistrationSlice = Backbone.Modules.Devices.Module.Features.PushNotifications.UpdateDeviceRegistration; -using Backbone.Modules.Devices.Abstractions.PushNotifications; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared; -using Backbone.Modules.Devices.Module.Features.PushNotifications.UpdateDeviceRegistration; +using Backbone.Modules.Devices.Abstractions.PushNotifications; using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications; using Backbone.Modules.Devices.Domain.Aggregates.PushNotifications.Handles; +using Backbone.Modules.Devices.Module.Features.PushNotifications.Shared; +using Backbone.Modules.Devices.Module.Features.PushNotifications.UpdateDeviceRegistration; using FakeItEasy; +using UpdateDeviceRegistrationSlice = Backbone.Modules.Devices.Module.Features.PushNotifications.UpdateDeviceRegistration; namespace Backbone.Modules.Devices.Module.Tests.Features.PushNotifications.UpdateDeviceRegistration; diff --git a/Modules/Devices/test/Devices.Module.Tests/Features/Tiers/CreateTier/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Tiers/CreateTier/ValidatorTests.cs index 490be41bbd..440ed01859 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Features/Tiers/CreateTier/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Tiers/CreateTier/ValidatorTests.cs @@ -1,8 +1,8 @@ -using CreateTierSlice = Backbone.Modules.Devices.Module.Features.Tiers.CreateTier; -using Backbone.Modules.Devices.Module.Features.Tiers.CreateTier; using Backbone.Modules.Devices.Domain.Aggregates.Tier; +using Backbone.Modules.Devices.Module.Features.Tiers.CreateTier; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; +using CreateTierSlice = Backbone.Modules.Devices.Module.Features.Tiers.CreateTier; using Validator = Backbone.Modules.Devices.Module.Features.Tiers.CreateTier.Validator; namespace Backbone.Modules.Devices.Module.Tests.Features.Tiers.CreateTier; diff --git a/Modules/Devices/test/Devices.Module.Tests/Features/Tiers/DeleteTier/HandlerTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Tiers/DeleteTier/HandlerTests.cs index 7c6def40a6..9ac1c649cc 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Features/Tiers/DeleteTier/HandlerTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Tiers/DeleteTier/HandlerTests.cs @@ -1,11 +1,11 @@ -using DeleteTierSlice = Backbone.Modules.Devices.Module.Features.Tiers.DeleteTier; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Domain.Exceptions; using Backbone.Modules.Devices.Abstractions; -using Backbone.Modules.Devices.Module.Features.Tiers.DeleteTier; using Backbone.Modules.Devices.Contracts.DomainEvents; using Backbone.Modules.Devices.Domain.Aggregates.Tier; +using Backbone.Modules.Devices.Module.Features.Tiers.DeleteTier; using FakeItEasy; +using DeleteTierSlice = Backbone.Modules.Devices.Module.Features.Tiers.DeleteTier; namespace Backbone.Modules.Devices.Module.Tests.Features.Tiers.DeleteTier; diff --git a/Modules/Devices/test/Devices.Module.Tests/Features/Tiers/DeleteTier/ValidatorTests.cs b/Modules/Devices/test/Devices.Module.Tests/Features/Tiers/DeleteTier/ValidatorTests.cs index c8eaca4d10..faa1bd3d02 100644 --- a/Modules/Devices/test/Devices.Module.Tests/Features/Tiers/DeleteTier/ValidatorTests.cs +++ b/Modules/Devices/test/Devices.Module.Tests/Features/Tiers/DeleteTier/ValidatorTests.cs @@ -1,8 +1,8 @@ -using DeleteTierSlice = Backbone.Modules.Devices.Module.Features.Tiers.DeleteTier; -using Backbone.Modules.Devices.Module.Features.Tiers.DeleteTier; using Backbone.Modules.Devices.Domain.Aggregates.Tier; +using Backbone.Modules.Devices.Module.Features.Tiers.DeleteTier; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; +using DeleteTierSlice = Backbone.Modules.Devices.Module.Features.Tiers.DeleteTier; namespace Backbone.Modules.Devices.Module.Tests.Features.Tiers.DeleteTier; diff --git a/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Endpoint.cs b/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Endpoint.cs index c1af232e56..115ebc5cd7 100644 --- a/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Endpoint.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; @@ -27,6 +27,7 @@ private static async Task Handle([FromRoute] string fileId, [FromBody] } } +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ClaimFileRequest")] public class RequestBody { public required string OwnershipToken { get; init; } diff --git a/Modules/Files/src/Files.Module/Features/Files/CreateFile/Endpoint.cs b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Endpoint.cs index 5651bedebe..ade1ad3b2c 100644 --- a/Modules/Files/src/Files.Module/Features/Files/CreateFile/Endpoint.cs +++ b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Endpoint.cs @@ -1,9 +1,9 @@ -using FluentValidation; -using Backbone.Tooling.Extensions; -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.Tooling; +using Backbone.Tooling.Extensions; +using FluentValidation; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; diff --git a/Modules/Files/src/Files.Module/Features/Files/DeleteFile/Endpoint.cs b/Modules/Files/src/Files.Module/Features/Files/DeleteFile/Endpoint.cs index 779593ebd0..173d242c77 100644 --- a/Modules/Files/src/Files.Module/Features/Files/DeleteFile/Endpoint.cs +++ b/Modules/Files/src/Files.Module/Features/Files/DeleteFile/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; diff --git a/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Endpoint.cs b/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Endpoint.cs index a17cb7a10f..43a0b044d9 100644 --- a/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Endpoint.cs +++ b/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Endpoint.cs @@ -1,11 +1,11 @@ -using Backbone.BuildingBlocks.API.MinimalApi; +using System.Net.Mime; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Routing; -using System.Net.Mime; namespace Backbone.Modules.Files.Module.Features.Files.GetFileContent; diff --git a/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Endpoint.cs b/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Endpoint.cs index 2e71514115..2530e294c8 100644 --- a/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Endpoint.cs +++ b/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.Modules.Files.Module.Features.Files.Shared; using MediatR; using Microsoft.AspNetCore.Builder; diff --git a/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Handler.cs b/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Handler.cs index 300c762a06..6364c44c73 100644 --- a/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Handler.cs +++ b/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Handler.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.Modules.Files.Module.Features.Files.Shared; using Backbone.Modules.Files.Abstractions; using Backbone.Modules.Files.Domain.Entities; +using Backbone.Modules.Files.Module.Features.Files.Shared; using MediatR; using File = Backbone.Modules.Files.Domain.Entities.File; diff --git a/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Endpoint.cs b/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Endpoint.cs index 416a328716..0c2f14a586 100644 --- a/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Endpoint.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Endpoint.cs @@ -1,6 +1,5 @@ -using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Pagination; using MediatR; @@ -9,6 +8,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Routing; using Microsoft.Extensions.Options; +using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; namespace Backbone.Modules.Files.Module.Features.Files.ListFileMetadata; diff --git a/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Endpoint.cs b/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Endpoint.cs index 8981c79126..3d37bc1f89 100644 --- a/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Endpoint.cs +++ b/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; diff --git a/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Endpoint.cs b/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Endpoint.cs index 32b02219b3..cd185bf84c 100644 --- a/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Endpoint.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; @@ -26,6 +26,7 @@ private static async Task Handle([FromRoute] string fileId, [FromBody] return EnvelopeHttpResults.Ok(response); } + [Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ValidateFileOwnershipTokenRequest")] private class RequestBody { public required string OwnershipToken { get; init; } diff --git a/Modules/Files/src/Files.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs b/Modules/Files/src/Files.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs index 7d4dec01c6..ba869dff73 100644 --- a/Modules/Files/src/Files.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs +++ b/Modules/Files/src/Files.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs @@ -1,8 +1,8 @@ -using AnonymizeCreatedByOfFiles = Backbone.Modules.Files.Module.Features.Identities.AnonymizeCreatedByOfFiles; -using DeleteFilesOfIdentity = Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; -using Backbone.BuildingBlocks.Application.Identities; +using Backbone.BuildingBlocks.Application.Identities; using Backbone.DevelopmentKit.Identity.ValueObjects; using MediatR; +using AnonymizeCreatedByOfFiles = Backbone.Modules.Files.Module.Features.Identities.AnonymizeCreatedByOfFiles; +using DeleteFilesOfIdentity = Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; namespace Backbone.Modules.Files.Module.Features.Identities.DeleteIdentity; diff --git a/Modules/Files/src/Files.Module/FilesEndpointExtensions.cs b/Modules/Files/src/Files.Module/FilesEndpointExtensions.cs index fee4e7d20a..529cd597bf 100644 --- a/Modules/Files/src/Files.Module/FilesEndpointExtensions.cs +++ b/Modules/Files/src/Files.Module/FilesEndpointExtensions.cs @@ -1,12 +1,12 @@ using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.Modules.Files.Module.Features.Files.ClaimFileOwnership; using Backbone.Modules.Files.Module.Features.Files.CreateFile; +using Backbone.Modules.Files.Module.Features.Files.DeleteFile; using Backbone.Modules.Files.Module.Features.Files.GetFileContent; using Backbone.Modules.Files.Module.Features.Files.GetFileMetadata; +using Backbone.Modules.Files.Module.Features.Files.ListFileMetadata; using Backbone.Modules.Files.Module.Features.Files.RegenerateFileOwnershipToken; -using Backbone.Modules.Files.Module.Features.Files.ClaimFileOwnership; using Backbone.Modules.Files.Module.Features.Files.ValidateFileOwnershipToken; -using Backbone.Modules.Files.Module.Features.Files.DeleteFile; -using Backbone.Modules.Files.Module.Features.Files.ListFileMetadata; using Microsoft.AspNetCore.Routing; using OpenIddict.Validation.AspNetCore; diff --git a/Modules/Files/src/Files.Module/FilesModule.cs b/Modules/Files/src/Files.Module/FilesModule.cs index 8ce78c1995..4a00b34fca 100644 --- a/Modules/Files/src/Files.Module/FilesModule.cs +++ b/Modules/Files/src/Files.Module/FilesModule.cs @@ -2,8 +2,8 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Application.MediatR; using Backbone.BuildingBlocks.Module; -using Backbone.Modules.Files.Infrastructure.Persistence; using Backbone.Modules.Files.Infrastructure; +using Backbone.Modules.Files.Infrastructure.Persistence; using FluentValidation; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; diff --git a/Modules/Files/test/Files.Module.Tests/Features/Files/GetFileContent/ValidatorTests.cs b/Modules/Files/test/Files.Module.Tests/Features/Files/GetFileContent/ValidatorTests.cs index 37f46628e6..2f0fcc555e 100644 --- a/Modules/Files/test/Files.Module.Tests/Features/Files/GetFileContent/ValidatorTests.cs +++ b/Modules/Files/test/Files.Module.Tests/Features/Files/GetFileContent/ValidatorTests.cs @@ -1,8 +1,8 @@ -using GetFileContentSlice = Backbone.Modules.Files.Module.Features.Files.GetFileContent; +using Backbone.Modules.Files.Domain.Entities; using Backbone.Modules.Files.Module.Features.Files.GetFileContent; -using Backbone.Modules.Files.Domain.Entities; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; +using GetFileContentSlice = Backbone.Modules.Files.Module.Features.Files.GetFileContent; namespace Backbone.Modules.Files.Module.Tests.Features.Files.GetFileContent; diff --git a/Modules/Files/test/Files.Module.Tests/Features/Files/GetFileMetadata/ValidatorTests.cs b/Modules/Files/test/Files.Module.Tests/Features/Files/GetFileMetadata/ValidatorTests.cs index 211a79e7cb..d73e3a4bf2 100644 --- a/Modules/Files/test/Files.Module.Tests/Features/Files/GetFileMetadata/ValidatorTests.cs +++ b/Modules/Files/test/Files.Module.Tests/Features/Files/GetFileMetadata/ValidatorTests.cs @@ -1,8 +1,8 @@ -using GetFileMetadataSlice = Backbone.Modules.Files.Module.Features.Files.GetFileMetadata; +using Backbone.Modules.Files.Domain.Entities; using Backbone.Modules.Files.Module.Features.Files.GetFileMetadata; -using Backbone.Modules.Files.Domain.Entities; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; +using GetFileMetadataSlice = Backbone.Modules.Files.Module.Features.Files.GetFileMetadata; namespace Backbone.Modules.Files.Module.Tests.Features.Files.GetFileMetadata; diff --git a/Modules/Files/test/Files.Module.Tests/Features/Files/ListFileMetadata/ValidatorTests.cs b/Modules/Files/test/Files.Module.Tests/Features/Files/ListFileMetadata/ValidatorTests.cs index e987ec1fdf..7d6adc74fa 100644 --- a/Modules/Files/test/Files.Module.Tests/Features/Files/ListFileMetadata/ValidatorTests.cs +++ b/Modules/Files/test/Files.Module.Tests/Features/Files/ListFileMetadata/ValidatorTests.cs @@ -1,9 +1,9 @@ -using ListFileMetadataSlice = Backbone.Modules.Files.Module.Features.Files.ListFileMetadata; -using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.Modules.Files.Module.Features.Files.ListFileMetadata; +using Backbone.BuildingBlocks.Application.Pagination; using Backbone.Modules.Files.Domain.Entities; +using Backbone.Modules.Files.Module.Features.Files.ListFileMetadata; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; +using ListFileMetadataSlice = Backbone.Modules.Files.Module.Features.Files.ListFileMetadata; namespace Backbone.Modules.Files.Module.Tests.Features.Files.ListFileMetadata; diff --git a/Modules/Files/test/Files.Module.Tests/Features/Identities/DeleteFilesOfIdentity/HandlerTests.cs b/Modules/Files/test/Files.Module.Tests/Features/Identities/DeleteFilesOfIdentity/HandlerTests.cs index 2aa56d4040..18e2b04996 100644 --- a/Modules/Files/test/Files.Module.Tests/Features/Identities/DeleteFilesOfIdentity/HandlerTests.cs +++ b/Modules/Files/test/Files.Module.Tests/Features/Identities/DeleteFilesOfIdentity/HandlerTests.cs @@ -1,8 +1,8 @@ -using DeleteFilesOfIdentitySlice = Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; -using System.Linq.Expressions; -using Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; +using System.Linq.Expressions; using Backbone.Modules.Files.Abstractions; +using Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; using FakeItEasy; +using DeleteFilesOfIdentitySlice = Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; using File = Backbone.Modules.Files.Domain.Entities.File; namespace Backbone.Modules.Files.Module.Tests.Features.Identities.DeleteFilesOfIdentity; diff --git a/Modules/Files/test/Files.Module.Tests/Features/Identities/DeleteFilesOfIdentity/ValidatorTests.cs b/Modules/Files/test/Files.Module.Tests/Features/Identities/DeleteFilesOfIdentity/ValidatorTests.cs index 673b709db6..ec2c386473 100644 --- a/Modules/Files/test/Files.Module.Tests/Features/Identities/DeleteFilesOfIdentity/ValidatorTests.cs +++ b/Modules/Files/test/Files.Module.Tests/Features/Identities/DeleteFilesOfIdentity/ValidatorTests.cs @@ -1,7 +1,7 @@ -using DeleteFilesOfIdentitySlice = Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; -using Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; +using Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; +using DeleteFilesOfIdentitySlice = Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; namespace Backbone.Modules.Files.Module.Tests.Features.Identities.DeleteFilesOfIdentity; diff --git a/Modules/Files/test/Files.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs b/Modules/Files/test/Files.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs index 701fd0427f..953cd265f2 100644 --- a/Modules/Files/test/Files.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs +++ b/Modules/Files/test/Files.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs @@ -1,8 +1,8 @@ -using DeleteFilesOfIdentitySlice = Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; -using Backbone.BuildingBlocks.Application.Identities; +using Backbone.BuildingBlocks.Application.Identities; using Backbone.Modules.Files.Module.Features.Identities.DeleteIdentity; using FakeItEasy; using MediatR; +using DeleteFilesOfIdentitySlice = Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; namespace Backbone.Modules.Files.Module.Tests.Features.Identities.DeleteIdentity; diff --git a/Modules/Messages/src/Messages.Module/MessagesModule.cs b/Modules/Messages/src/Messages.Module/MessagesModule.cs index c9f9c6576b..068cc1a87a 100644 --- a/Modules/Messages/src/Messages.Module/MessagesModule.cs +++ b/Modules/Messages/src/Messages.Module/MessagesModule.cs @@ -3,8 +3,8 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Application.MediatR; using Backbone.BuildingBlocks.Module; -using Backbone.Modules.Messages.Infrastructure.Persistence; using Backbone.Modules.Messages.Infrastructure; +using Backbone.Modules.Messages.Infrastructure.Persistence; using FluentValidation; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; diff --git a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/FileUploaded/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/FileUploaded/Handler.cs index 42d7940434..9dbecbbd95 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/FileUploaded/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/FileUploaded/Handler.cs @@ -1,8 +1,8 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.Modules.Files.Contracts.DomainEvents; -using Backbone.Modules.Quotas.Module.Features.Metrics.Shared; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.Modules.Quotas.Domain.Aggregates.Metrics; +using Backbone.Modules.Quotas.Module.Features.Metrics.Shared; namespace Backbone.Modules.Quotas.Module.Features.DomainEvents.FileUploaded; diff --git a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/MessageCreated/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/MessageCreated/Handler.cs index 0a44d22cb7..57353ea06a 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/MessageCreated/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/MessageCreated/Handler.cs @@ -1,8 +1,8 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.Modules.Messages.Contracts.DomainEvents; -using Backbone.Modules.Quotas.Module.Features.Metrics.Shared; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.Modules.Quotas.Domain.Aggregates.Metrics; +using Backbone.Modules.Quotas.Module.Features.Metrics.Shared; namespace Backbone.Modules.Quotas.Module.Features.DomainEvents.MessageCreated; diff --git a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/RelationshipStatusChanged/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/RelationshipStatusChanged/Handler.cs index c498bde540..fa28401b33 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/RelationshipStatusChanged/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/RelationshipStatusChanged/Handler.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; -using Backbone.Modules.Quotas.Module.Features.Metrics.Shared; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.Modules.Quotas.Domain.Aggregates.Metrics; +using Backbone.Modules.Quotas.Module.Features.Metrics.Shared; using Backbone.Modules.Relationships.Contracts.DomainEvents; namespace Backbone.Modules.Quotas.Module.Features.DomainEvents.RelationshipStatusChanged; diff --git a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/RelationshipTemplateCreated/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/RelationshipTemplateCreated/Handler.cs index 2a42ed4dd3..04d67cb0bd 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/RelationshipTemplateCreated/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/RelationshipTemplateCreated/Handler.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; -using Backbone.Modules.Quotas.Module.Features.Metrics.Shared; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.Modules.Quotas.Domain.Aggregates.Metrics; +using Backbone.Modules.Quotas.Module.Features.Metrics.Shared; using Backbone.Modules.Relationships.Contracts.DomainEvents; namespace Backbone.Modules.Quotas.Module.Features.DomainEvents.RelationshipTemplateCreated; diff --git a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierQuotaDefinitionDeleted/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierQuotaDefinitionDeleted/Handler.cs index 0c687dfd06..717bbef82a 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierQuotaDefinitionDeleted/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TierQuotaDefinitionDeleted/Handler.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.Modules.Quotas.Abstractions; -using Backbone.Modules.Quotas.Module.Features.Metrics.Shared; using Backbone.Modules.Quotas.Contracts.DomainEvents; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.Modules.Quotas.Domain.Aggregates.Metrics; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; +using Backbone.Modules.Quotas.Module.Features.Metrics.Shared; using Microsoft.Extensions.Logging; namespace Backbone.Modules.Quotas.Module.Features.DomainEvents.TierQuotaDefinitionDeleted; diff --git a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TokenCreated/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TokenCreated/Handler.cs index 9192f95ba5..6e92b25e47 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TokenCreated/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/DomainEvents/TokenCreated/Handler.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; -using Backbone.Modules.Quotas.Module.Features.Metrics.Shared; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.Modules.Quotas.Domain.Aggregates.Metrics; +using Backbone.Modules.Quotas.Module.Features.Metrics.Shared; using Backbone.Modules.Tokens.Contracts.DomainEvents; namespace Backbone.Modules.Quotas.Module.Features.DomainEvents.TokenCreated; diff --git a/Modules/Quotas/src/Quotas.Module/Features/Identities/CreateQuotaForIdentity/Command.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/CreateQuotaForIdentity/Command.cs index e8f8fe5fc2..2e0ed2b00c 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Identities/CreateQuotaForIdentity/Command.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/CreateQuotaForIdentity/Command.cs @@ -1,5 +1,5 @@ -using Backbone.Modules.Quotas.Module.Features.Shared; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; +using Backbone.Modules.Quotas.Module.Features.Shared; using MediatR; namespace Backbone.Modules.Quotas.Module.Features.Identities.CreateQuotaForIdentity; diff --git a/Modules/Quotas/src/Quotas.Module/Features/Identities/CreateQuotaForIdentity/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/CreateQuotaForIdentity/Handler.cs index ee2602be2e..d1e404d7e6 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Identities/CreateQuotaForIdentity/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/CreateQuotaForIdentity/Handler.cs @@ -1,9 +1,9 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Domain.Exceptions; -using Backbone.Modules.Quotas.Module.Features.Shared; using Backbone.Modules.Quotas.Abstractions; -using Backbone.Modules.Quotas.Module.Features.Metrics.Shared; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; +using Backbone.Modules.Quotas.Module.Features.Metrics.Shared; +using Backbone.Modules.Quotas.Module.Features.Shared; using MediatR; using Microsoft.Extensions.Logging; using MetricKey = Backbone.Modules.Quotas.Domain.Aggregates.Metrics.MetricKey; diff --git a/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Response.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Response.cs index 950a585b3c..a549abce06 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Response.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Response.cs @@ -1,7 +1,7 @@ -using Backbone.Modules.Quotas.Module.Features.Shared; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.Modules.Quotas.Domain.Aggregates.Metrics; using Backbone.Modules.Quotas.Domain.Metrics; +using Backbone.Modules.Quotas.Module.Features.Shared; using Backbone.Tooling; namespace Backbone.Modules.Quotas.Module.Features.Identities.GetIdentity; diff --git a/Modules/Quotas/src/Quotas.Module/Features/Metrics/ListMetrics/Response.cs b/Modules/Quotas/src/Quotas.Module/Features/Metrics/ListMetrics/Response.cs index 647e544732..7563ebcc21 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Metrics/ListMetrics/Response.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Metrics/ListMetrics/Response.cs @@ -1,6 +1,6 @@ using Backbone.BuildingBlocks.Application.CQRS.BaseClasses; -using Backbone.Modules.Quotas.Module.Features.Shared; using Backbone.Modules.Quotas.Domain.Aggregates.Metrics; +using Backbone.Modules.Quotas.Module.Features.Shared; namespace Backbone.Modules.Quotas.Module.Features.Metrics.ListMetrics; diff --git a/Modules/Quotas/src/Quotas.Module/Features/Tiers/CreateQuotaForTier/Command.cs b/Modules/Quotas/src/Quotas.Module/Features/Tiers/CreateQuotaForTier/Command.cs index 8e47d49ec6..caaa053a30 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Tiers/CreateQuotaForTier/Command.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Tiers/CreateQuotaForTier/Command.cs @@ -1,5 +1,5 @@ -using Backbone.Modules.Quotas.Module.Features.Shared; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; +using Backbone.Modules.Quotas.Module.Features.Shared; using MediatR; namespace Backbone.Modules.Quotas.Module.Features.Tiers.CreateQuotaForTier; diff --git a/Modules/Quotas/src/Quotas.Module/Features/Tiers/CreateQuotaForTier/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/Tiers/CreateQuotaForTier/Handler.cs index e4814b9e73..b49c27de94 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Tiers/CreateQuotaForTier/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Tiers/CreateQuotaForTier/Handler.cs @@ -1,8 +1,8 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Domain.Exceptions; -using Backbone.Modules.Quotas.Module.Features.Shared; using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; +using Backbone.Modules.Quotas.Module.Features.Shared; using MediatR; using Microsoft.Extensions.Logging; using MetricKey = Backbone.Modules.Quotas.Domain.Aggregates.Metrics.MetricKey; diff --git a/Modules/Quotas/src/Quotas.Module/Features/Tiers/GetTier/Handler.cs b/Modules/Quotas/src/Quotas.Module/Features/Tiers/GetTier/Handler.cs index 282a7f951f..54d56eb74c 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Tiers/GetTier/Handler.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Tiers/GetTier/Handler.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.Modules.Quotas.Module.Features.Shared; using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; +using Backbone.Modules.Quotas.Module.Features.Shared; using MediatR; namespace Backbone.Modules.Quotas.Module.Features.Tiers.GetTier; diff --git a/Modules/Quotas/src/Quotas.Module/QuotasEventBusExtensions.cs b/Modules/Quotas/src/Quotas.Module/QuotasEventBusExtensions.cs index eccc2a846f..bbdc5350d9 100644 --- a/Modules/Quotas/src/Quotas.Module/QuotasEventBusExtensions.cs +++ b/Modules/Quotas/src/Quotas.Module/QuotasEventBusExtensions.cs @@ -1,3 +1,10 @@ +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; +using Backbone.Modules.Devices.Contracts.DomainEvents; +using Backbone.Modules.Files.Contracts.DomainEvents; +using Backbone.Modules.Messages.Contracts.DomainEvents; +using Backbone.Modules.Quotas.Contracts.DomainEvents; +using Backbone.Modules.Relationships.Contracts.DomainEvents; +using Backbone.Modules.Tokens.Contracts.DomainEvents; using FileUploaded = Backbone.Modules.Quotas.Module.Features.DomainEvents.FileUploaded; using IdentityCreated = Backbone.Modules.Quotas.Module.Features.DomainEvents.IdentityCreated; using MessageCreated = Backbone.Modules.Quotas.Module.Features.DomainEvents.MessageCreated; @@ -9,13 +16,6 @@ using TierQuotaDefinitionCreated = Backbone.Modules.Quotas.Module.Features.DomainEvents.TierQuotaDefinitionCreated; using TierQuotaDefinitionDeleted = Backbone.Modules.Quotas.Module.Features.DomainEvents.TierQuotaDefinitionDeleted; using TokenCreated = Backbone.Modules.Quotas.Module.Features.DomainEvents.TokenCreated; -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; -using Backbone.Modules.Devices.Contracts.DomainEvents; -using Backbone.Modules.Files.Contracts.DomainEvents; -using Backbone.Modules.Messages.Contracts.DomainEvents; -using Backbone.Modules.Quotas.Contracts.DomainEvents; -using Backbone.Modules.Relationships.Contracts.DomainEvents; -using Backbone.Modules.Tokens.Contracts.DomainEvents; namespace Backbone.Modules.Quotas.Module; diff --git a/Modules/Quotas/src/Quotas.Module/QuotasModule.cs b/Modules/Quotas/src/Quotas.Module/QuotasModule.cs index dd4d130a10..d2d5a3090f 100644 --- a/Modules/Quotas/src/Quotas.Module/QuotasModule.cs +++ b/Modules/Quotas/src/Quotas.Module/QuotasModule.cs @@ -3,10 +3,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Application.MediatR; using Backbone.BuildingBlocks.Module; -using Backbone.Modules.Quotas.Domain.Metrics; using Backbone.Modules.Quotas.Domain; -using Backbone.Modules.Quotas.Infrastructure.Persistence.Database; +using Backbone.Modules.Quotas.Domain.Metrics; using Backbone.Modules.Quotas.Infrastructure; +using Backbone.Modules.Quotas.Infrastructure.Persistence.Database; using Backbone.Modules.Quotas.Module.Features.Metrics.Shared; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; diff --git a/Modules/Quotas/test/Quotas.Module.Tests/Features/DomainEvents/IdentityCreated/HandlerTests.cs b/Modules/Quotas/test/Quotas.Module.Tests/Features/DomainEvents/IdentityCreated/HandlerTests.cs index 7cdf65be7c..a8fc963418 100644 --- a/Modules/Quotas/test/Quotas.Module.Tests/Features/DomainEvents/IdentityCreated/HandlerTests.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/Features/DomainEvents/IdentityCreated/HandlerTests.cs @@ -1,13 +1,13 @@ -using IdentityCreatedSlice = Backbone.Modules.Quotas.Module.Features.DomainEvents.IdentityCreated; using Backbone.Modules.Devices.Contracts.DomainEvents; using Backbone.Modules.Quotas.Abstractions; -using Backbone.Modules.Quotas.Module.Tests.TestDoubles; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.Modules.Quotas.Domain.Aggregates.Metrics; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; using Backbone.Modules.Quotas.Domain.Metrics; +using Backbone.Modules.Quotas.Module.Tests.TestDoubles; using FakeItEasy; using Microsoft.Extensions.Logging; +using IdentityCreatedSlice = Backbone.Modules.Quotas.Module.Features.DomainEvents.IdentityCreated; namespace Backbone.Modules.Quotas.Module.Tests.Features.DomainEvents.IdentityCreated; diff --git a/Modules/Quotas/test/Quotas.Module.Tests/Features/DomainEvents/TierCreated/HandlerTests.cs b/Modules/Quotas/test/Quotas.Module.Tests/Features/DomainEvents/TierCreated/HandlerTests.cs index 31768c05dc..eedff78729 100644 --- a/Modules/Quotas/test/Quotas.Module.Tests/Features/DomainEvents/TierCreated/HandlerTests.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/Features/DomainEvents/TierCreated/HandlerTests.cs @@ -1,9 +1,9 @@ -using TierCreatedSlice = Backbone.Modules.Quotas.Module.Features.DomainEvents.TierCreated; using Backbone.Modules.Devices.Contracts.DomainEvents; -using Backbone.Modules.Quotas.Module.Tests.TestDoubles; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; +using Backbone.Modules.Quotas.Module.Tests.TestDoubles; using FakeItEasy; using Microsoft.Extensions.Logging; +using TierCreatedSlice = Backbone.Modules.Quotas.Module.Features.DomainEvents.TierCreated; namespace Backbone.Modules.Quotas.Module.Tests.Features.DomainEvents.TierCreated; diff --git a/Modules/Quotas/test/Quotas.Module.Tests/Features/DomainEvents/TierDeleted/HandlerTests.cs b/Modules/Quotas/test/Quotas.Module.Tests/Features/DomainEvents/TierDeleted/HandlerTests.cs index 097f97ab5d..305d702600 100644 --- a/Modules/Quotas/test/Quotas.Module.Tests/Features/DomainEvents/TierDeleted/HandlerTests.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/Features/DomainEvents/TierDeleted/HandlerTests.cs @@ -1,9 +1,9 @@ -using TierDeletedSlice = Backbone.Modules.Quotas.Module.Features.DomainEvents.TierDeleted; using Backbone.Modules.Devices.Contracts.DomainEvents; using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; using FakeItEasy; using Microsoft.Extensions.Logging; +using TierDeletedSlice = Backbone.Modules.Quotas.Module.Features.DomainEvents.TierDeleted; namespace Backbone.Modules.Quotas.Module.Tests.Features.DomainEvents.TierDeleted; diff --git a/Modules/Quotas/test/Quotas.Module.Tests/Features/DomainEvents/TierQuotaDefinitionCreated/HandlerTests.cs b/Modules/Quotas/test/Quotas.Module.Tests/Features/DomainEvents/TierQuotaDefinitionCreated/HandlerTests.cs index eec904c686..c3d786a928 100644 --- a/Modules/Quotas/test/Quotas.Module.Tests/Features/DomainEvents/TierQuotaDefinitionCreated/HandlerTests.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/Features/DomainEvents/TierQuotaDefinitionCreated/HandlerTests.cs @@ -1,13 +1,13 @@ -using TierQuotaDefinitionCreatedSlice = Backbone.Modules.Quotas.Module.Features.DomainEvents.TierQuotaDefinitionCreated; using Backbone.Modules.Quotas.Abstractions; -using Backbone.Modules.Quotas.Module.Tests.TestDoubles; using Backbone.Modules.Quotas.Contracts.DomainEvents; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.Modules.Quotas.Domain.Aggregates.Metrics; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; using Backbone.Modules.Quotas.Domain.DomainEvents; +using Backbone.Modules.Quotas.Module.Tests.TestDoubles; using FakeItEasy; using Microsoft.Extensions.Logging; +using TierQuotaDefinitionCreatedSlice = Backbone.Modules.Quotas.Module.Features.DomainEvents.TierQuotaDefinitionCreated; namespace Backbone.Modules.Quotas.Module.Tests.Features.DomainEvents.TierQuotaDefinitionCreated; diff --git a/Modules/Quotas/test/Quotas.Module.Tests/Features/Identities/CreateQuotaForIdentity/HandlerTests.cs b/Modules/Quotas/test/Quotas.Module.Tests/Features/Identities/CreateQuotaForIdentity/HandlerTests.cs index 5008c8b606..8cc379c238 100644 --- a/Modules/Quotas/test/Quotas.Module.Tests/Features/Identities/CreateQuotaForIdentity/HandlerTests.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/Features/Identities/CreateQuotaForIdentity/HandlerTests.cs @@ -1,13 +1,13 @@ -using CreateQuotaForIdentitySlice = Backbone.Modules.Quotas.Module.Features.Identities.CreateQuotaForIdentity; -using Backbone.Modules.Quotas.Module.Features.Identities.CreateQuotaForIdentity; -using Backbone.Modules.Quotas.Abstractions; -using Backbone.Modules.Quotas.Module.Features.Metrics.Shared; -using Backbone.Modules.Quotas.Module.Tests.TestDoubles; +using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.Modules.Quotas.Domain.Aggregates.Metrics; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; +using Backbone.Modules.Quotas.Module.Features.Identities.CreateQuotaForIdentity; +using Backbone.Modules.Quotas.Module.Features.Metrics.Shared; +using Backbone.Modules.Quotas.Module.Tests.TestDoubles; using FakeItEasy; using Microsoft.Extensions.Logging; +using CreateQuotaForIdentitySlice = Backbone.Modules.Quotas.Module.Features.Identities.CreateQuotaForIdentity; using MetricKey = Backbone.Modules.Quotas.Domain.Aggregates.Metrics.MetricKey; namespace Backbone.Modules.Quotas.Module.Tests.Features.Identities.CreateQuotaForIdentity; diff --git a/Modules/Quotas/test/Quotas.Module.Tests/Features/Identities/DeleteIdentity/HandlerTests.cs b/Modules/Quotas/test/Quotas.Module.Tests/Features/Identities/DeleteIdentity/HandlerTests.cs index 9bea8b81af..3a725699ea 100644 --- a/Modules/Quotas/test/Quotas.Module.Tests/Features/Identities/DeleteIdentity/HandlerTests.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/Features/Identities/DeleteIdentity/HandlerTests.cs @@ -1,10 +1,10 @@ -using DeleteIdentitySlice = Backbone.Modules.Quotas.Module.Features.Identities.DeleteIdentity; -using System.Linq.Expressions; -using Backbone.Modules.Quotas.Module.Features.Identities.DeleteIdentity; +using System.Linq.Expressions; using Backbone.Modules.Quotas.Abstractions; using Backbone.Modules.Quotas.Domain.Aggregates.Identities; using Backbone.Modules.Quotas.Domain.Aggregates.Tiers; +using Backbone.Modules.Quotas.Module.Features.Identities.DeleteIdentity; using FakeItEasy; +using DeleteIdentitySlice = Backbone.Modules.Quotas.Module.Features.Identities.DeleteIdentity; namespace Backbone.Modules.Quotas.Module.Tests.Features.Identities.DeleteIdentity; diff --git a/Modules/Quotas/test/Quotas.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs b/Modules/Quotas/test/Quotas.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs index ae4c105c80..6cd5b720af 100644 --- a/Modules/Quotas/test/Quotas.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs +++ b/Modules/Quotas/test/Quotas.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs @@ -1,8 +1,8 @@ -using DeleteIdentitySlice = Backbone.Modules.Quotas.Module.Features.Identities.DeleteIdentity; -using Backbone.BuildingBlocks.Application.Identities; +using Backbone.BuildingBlocks.Application.Identities; using Backbone.Modules.Quotas.Module.Features.Identities.DeleteIdentity; using FakeItEasy; using MediatR; +using DeleteIdentitySlice = Backbone.Modules.Quotas.Module.Features.Identities.DeleteIdentity; namespace Backbone.Modules.Quotas.Module.Tests.Features.Identities.DeleteIdentity; diff --git a/Modules/Relationships/src/Relationships.Infrastructure/Persistence/Database/Repository/RelationshipsRepository.cs b/Modules/Relationships/src/Relationships.Infrastructure/Persistence/Database/Repository/RelationshipsRepository.cs index 8ccca1f141..ce6206659b 100644 --- a/Modules/Relationships/src/Relationships.Infrastructure/Persistence/Database/Repository/RelationshipsRepository.cs +++ b/Modules/Relationships/src/Relationships.Infrastructure/Persistence/Database/Repository/RelationshipsRepository.cs @@ -1,4 +1,3 @@ -using Backbone.Modules.Relationships.Infrastructure.Persistence; using System.Linq.Expressions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.Persistence.Database; using Backbone.BuildingBlocks.Application.Extensions; @@ -9,6 +8,7 @@ using Backbone.Modules.Relationships.Domain; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; using Backbone.Modules.Relationships.Infrastructure.Extensions; +using Backbone.Modules.Relationships.Infrastructure.Persistence; using EFCore.BulkExtensions; using Microsoft.EntityFrameworkCore; diff --git a/Modules/Relationships/src/Relationships.Module/Features/DomainEvents/FeatureFlagsOfIdentityChanged/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/DomainEvents/FeatureFlagsOfIdentityChanged/Handler.cs index 6298ce68c5..8631ffde8b 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/DomainEvents/FeatureFlagsOfIdentityChanged/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/DomainEvents/FeatureFlagsOfIdentityChanged/Handler.cs @@ -3,8 +3,8 @@ using Backbone.Modules.Devices.Contracts.DomainEvents; using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Contracts.DomainEvents; -using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; +using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; using Backbone.Modules.Relationships.Domain.DomainEvents; using Backbone.Tooling.Extensions; diff --git a/Modules/Relationships/src/Relationships.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs b/Modules/Relationships/src/Relationships.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs index 43bb3158ff..8cf529b78b 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs @@ -1,10 +1,10 @@ +using Backbone.BuildingBlocks.Application.Identities; +using Backbone.DevelopmentKit.Identity.ValueObjects; +using MediatR; using AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity; using AnonymizeRelationshipTemplatesForIdentity = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplatesForIdentity; using DecomposeAndAnonymizeRelationshipsOfIdentity = Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeAndAnonymizeRelationshipsOfIdentity; using DeleteRelationshipTemplatesOfIdentity = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplatesOfIdentity; -using Backbone.BuildingBlocks.Application.Identities; -using Backbone.DevelopmentKit.Identity.ValueObjects; -using MediatR; namespace Backbone.Modules.Relationships.Module.Features.Identities.DeleteIdentity; diff --git a/Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Endpoint.cs index 40b84e8d4a..89e96c6903 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Endpoint.cs index 438199ad0a..033134747d 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Validator.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Validator.cs index 396a822d3f..0007a07013 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Validator.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Validator.cs @@ -3,8 +3,8 @@ using Backbone.BuildingBlocks.Application.FluentValidation; using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; -using Backbone.Tooling.Extensions; using Backbone.Tooling; +using Backbone.Tooling.Extensions; using FluentValidation; namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.CreateRelationshipTemplate; diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Endpoint.cs index 46b8a06b8c..aad2ba346b 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Endpoint.cs index 844c98baad..aa00b64faa 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.Modules.Relationships.Module.Features.Shared; using MediatR; using Microsoft.AspNetCore.Builder; diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Endpoint.cs index a985c43d29..856502d8e0 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Pagination; using MediatR; diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Endpoint.cs index a8799b96f0..f017aadb49 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; @@ -26,6 +26,7 @@ private static async Task Handle([FromRoute] string id, [FromBody] Requ } } +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("AcceptRelationshipRequest")] public class RequestBody { public byte[]? CreationResponseContent { get; set; } = []; diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Endpoint.cs index cd51249a11..5ac8a0995e 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Endpoint.cs index 31842ee2d7..c97dc94496 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.Modules.Devices.Contracts; using MediatR; using Microsoft.AspNetCore.Builder; diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Endpoint.cs index d6c5f1ebaa..e7d9e7592d 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Endpoint.cs @@ -1,6 +1,5 @@ -using GetRelationshipTemplate = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.GetRelationshipTemplate; -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.Modules.Devices.Contracts; using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.GetRelationshipTemplate; using MediatR; @@ -9,6 +8,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Routing; using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; +using GetRelationshipTemplate = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.GetRelationshipTemplate; namespace Backbone.Modules.Relationships.Module.Features.Relationships.CreateRelationship; diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Handler.cs index 5f7ac37aa0..10be6208a9 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Handler.cs @@ -2,8 +2,8 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Relationships.Abstractions; -using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; +using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; using MediatR; namespace Backbone.Modules.Relationships.Module.Features.Relationships.CreateRelationship; diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Endpoint.cs index 019c7f9b0f..d33ff116f3 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ExecuteHousekeeping/Handler.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ExecuteHousekeeping/Handler.cs index 628e720dde..d5c7b232c6 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ExecuteHousekeeping/Handler.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ExecuteHousekeeping/Handler.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.Housekeeping; using Backbone.Modules.Relationships.Abstractions; -using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; +using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; using MediatR; namespace Backbone.Modules.Relationships.Module.Features.Relationships.ExecuteHousekeeping; diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Endpoint.cs index a4c63f56cc..4f6901a691 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.Modules.Relationships.Module.Features.Shared; using MediatR; using Microsoft.AspNetCore.Builder; diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Endpoint.cs index ca61934629..16c5a9986c 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Pagination; using MediatR; diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Endpoint.cs index 2de83056fb..f96cd7c2d0 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; @@ -26,6 +26,7 @@ private static async Task Handle([FromRoute] string id, [FromBody] Requ } } +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RejectRelationshipRequest")] public class RequestBody { public byte[]? CreationResponseContent { get; set; } = []; diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Endpoint.cs index 468fc79652..c7be0776c4 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Endpoint.cs index f9d250936d..b737ab3ef5 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Endpoint.cs index 05608e15f3..5b4e239da6 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; @@ -26,6 +26,7 @@ private static async Task Handle([FromRoute] string id, [FromBody] Requ } } +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RevokeRelationshipRequest")] public class RequestBody { public byte[]? CreationResponseContent { get; set; } = []; diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Endpoint.cs index 7fc2635020..39e421e02c 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Endpoint.cs index 87931d65d4..3d634e687c 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.Modules.Relationships.Module.Features.Shared; using MediatR; using Microsoft.AspNetCore.Builder; diff --git a/Modules/Relationships/src/Relationships.Module/RelationshipsEndpointExtensions.cs b/Modules/Relationships/src/Relationships.Module/RelationshipsEndpointExtensions.cs index bd31d0ccbe..ac5537710d 100644 --- a/Modules/Relationships/src/Relationships.Module/RelationshipsEndpointExtensions.cs +++ b/Modules/Relationships/src/Relationships.Module/RelationshipsEndpointExtensions.cs @@ -1,9 +1,5 @@ using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.Modules.Relationships.Module.Features.PublicRelationshipTemplateReferences.ListPublicRelationshipTemplateReferences; -using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.CreateRelationshipTemplate; -using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplate; -using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.GetRelationshipTemplate; -using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.ListRelationshipTemplates; using Backbone.Modules.Relationships.Module.Features.Relationships.AcceptRelationship; using Backbone.Modules.Relationships.Module.Features.Relationships.AcceptRelationshipReactivation; using Backbone.Modules.Relationships.Module.Features.Relationships.CanEstablishRelationship; @@ -17,6 +13,10 @@ using Backbone.Modules.Relationships.Module.Features.Relationships.RevokeRelationship; using Backbone.Modules.Relationships.Module.Features.Relationships.RevokeRelationshipReactivation; using Backbone.Modules.Relationships.Module.Features.Relationships.TerminateRelationship; +using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.CreateRelationshipTemplate; +using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplate; +using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.GetRelationshipTemplate; +using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.ListRelationshipTemplates; using Microsoft.AspNetCore.Routing; using OpenIddict.Validation.AspNetCore; diff --git a/Modules/Relationships/src/Relationships.Module/RelationshipsEventBusExtensions.cs b/Modules/Relationships/src/Relationships.Module/RelationshipsEventBusExtensions.cs index be3cca77fa..c8d8f8c7f7 100644 --- a/Modules/Relationships/src/Relationships.Module/RelationshipsEventBusExtensions.cs +++ b/Modules/Relationships/src/Relationships.Module/RelationshipsEventBusExtensions.cs @@ -1,9 +1,9 @@ +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; +using Backbone.Modules.Devices.Contracts.DomainEvents; using FeatureFlagsOfIdentityChanged = Backbone.Modules.Relationships.Module.Features.DomainEvents.FeatureFlagsOfIdentityChanged; using IdentityDeleted = Backbone.Modules.Relationships.Module.Features.DomainEvents.IdentityDeleted; using IdentityDeletionCancelled = Backbone.Modules.Relationships.Module.Features.DomainEvents.IdentityDeletionCancelled; using IdentityToBeDeleted = Backbone.Modules.Relationships.Module.Features.DomainEvents.IdentityToBeDeleted; -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; -using Backbone.Modules.Devices.Contracts.DomainEvents; namespace Backbone.Modules.Relationships.Module; diff --git a/Modules/Relationships/src/Relationships.Module/RelationshipsModule.cs b/Modules/Relationships/src/Relationships.Module/RelationshipsModule.cs index 6e9f6e22a8..4bb8624526 100644 --- a/Modules/Relationships/src/Relationships.Module/RelationshipsModule.cs +++ b/Modules/Relationships/src/Relationships.Module/RelationshipsModule.cs @@ -3,8 +3,8 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Application.MediatR; using Backbone.BuildingBlocks.Module; -using Backbone.Modules.Relationships.Infrastructure.Persistence; using Backbone.Modules.Relationships.Infrastructure; +using Backbone.Modules.Relationships.Infrastructure.Persistence; using FluentValidation; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; diff --git a/Modules/Relationships/test/Relationships.Module.Tests/Features/DomainEvents/IdentityDeleted/HandlerTests.cs b/Modules/Relationships/test/Relationships.Module.Tests/Features/DomainEvents/IdentityDeleted/HandlerTests.cs index 9be93a00c8..1de3adb951 100644 --- a/Modules/Relationships/test/Relationships.Module.Tests/Features/DomainEvents/IdentityDeleted/HandlerTests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/Features/DomainEvents/IdentityDeleted/HandlerTests.cs @@ -1,12 +1,12 @@ -using IdentityDeletedSlice = Backbone.Modules.Relationships.Module.Features.DomainEvents.IdentityDeleted; -using System.Linq.Expressions; +using System.Linq.Expressions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.Modules.Devices.Contracts.DomainEvents; using Backbone.Modules.Relationships.Abstractions; -using Backbone.Modules.Relationships.Module.Tests.TestHelpers; using Backbone.Modules.Relationships.Contracts.DomainEvents; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; +using Backbone.Modules.Relationships.Module.Tests.TestHelpers; using FakeItEasy; +using IdentityDeletedSlice = Backbone.Modules.Relationships.Module.Features.DomainEvents.IdentityDeleted; namespace Backbone.Modules.Relationships.Module.Tests.Features.DomainEvents.IdentityDeleted; diff --git a/Modules/Relationships/test/Relationships.Module.Tests/Features/DomainEvents/IdentityDeletionCancelled/HandlerTests.cs b/Modules/Relationships/test/Relationships.Module.Tests/Features/DomainEvents/IdentityDeletionCancelled/HandlerTests.cs index f8c690066e..c8ebba76eb 100644 --- a/Modules/Relationships/test/Relationships.Module.Tests/Features/DomainEvents/IdentityDeletionCancelled/HandlerTests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/Features/DomainEvents/IdentityDeletionCancelled/HandlerTests.cs @@ -1,12 +1,12 @@ -using IdentityDeletionCancelledSlice = Backbone.Modules.Relationships.Module.Features.DomainEvents.IdentityDeletionCancelled; -using System.Linq.Expressions; +using System.Linq.Expressions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.Modules.Devices.Contracts.DomainEvents; using Backbone.Modules.Relationships.Abstractions; -using Backbone.Modules.Relationships.Module.Tests.TestHelpers; using Backbone.Modules.Relationships.Contracts.DomainEvents; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; +using Backbone.Modules.Relationships.Module.Tests.TestHelpers; using FakeItEasy; +using IdentityDeletionCancelledSlice = Backbone.Modules.Relationships.Module.Features.DomainEvents.IdentityDeletionCancelled; namespace Backbone.Modules.Relationships.Module.Tests.Features.DomainEvents.IdentityDeletionCancelled; diff --git a/Modules/Relationships/test/Relationships.Module.Tests/Features/DomainEvents/IdentityToBeDeleted/HandlerTests.cs b/Modules/Relationships/test/Relationships.Module.Tests/Features/DomainEvents/IdentityToBeDeleted/HandlerTests.cs index 8280b16cea..1cd19b6448 100644 --- a/Modules/Relationships/test/Relationships.Module.Tests/Features/DomainEvents/IdentityToBeDeleted/HandlerTests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/Features/DomainEvents/IdentityToBeDeleted/HandlerTests.cs @@ -1,12 +1,12 @@ -using IdentityToBeDeletedSlice = Backbone.Modules.Relationships.Module.Features.DomainEvents.IdentityToBeDeleted; -using System.Linq.Expressions; +using System.Linq.Expressions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.Modules.Devices.Contracts.DomainEvents; using Backbone.Modules.Relationships.Abstractions; -using Backbone.Modules.Relationships.Module.Tests.TestHelpers; using Backbone.Modules.Relationships.Contracts.DomainEvents; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; +using Backbone.Modules.Relationships.Module.Tests.TestHelpers; using FakeItEasy; +using IdentityToBeDeletedSlice = Backbone.Modules.Relationships.Module.Features.DomainEvents.IdentityToBeDeleted; namespace Backbone.Modules.Relationships.Module.Tests.Features.DomainEvents.IdentityToBeDeleted; diff --git a/Modules/Relationships/test/Relationships.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs b/Modules/Relationships/test/Relationships.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs index 33613b52e6..01e2a1c37a 100644 --- a/Modules/Relationships/test/Relationships.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs @@ -1,11 +1,11 @@ -using AnonymizeRelationshipTemplateAllocationsAllocatedByIdentitySlice = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity; -using AnonymizeRelationshipTemplatesForIdentitySlice = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplatesForIdentity; -using DecomposeAndAnonymizeRelationshipsOfIdentitySlice = Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeAndAnonymizeRelationshipsOfIdentity; -using DeleteRelationshipTemplatesOfIdentitySlice = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplatesOfIdentity; -using Backbone.BuildingBlocks.Application.Identities; +using Backbone.BuildingBlocks.Application.Identities; using Backbone.Modules.Relationships.Module.Features.Identities.DeleteIdentity; using FakeItEasy; using MediatR; +using AnonymizeRelationshipTemplateAllocationsAllocatedByIdentitySlice = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity; +using AnonymizeRelationshipTemplatesForIdentitySlice = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplatesForIdentity; +using DecomposeAndAnonymizeRelationshipsOfIdentitySlice = Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeAndAnonymizeRelationshipsOfIdentity; +using DeleteRelationshipTemplatesOfIdentitySlice = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplatesOfIdentity; namespace Backbone.Modules.Relationships.Module.Tests.Features.Identities.DeleteIdentity; diff --git a/Modules/Relationships/test/Relationships.Module.Tests/Features/RelationshipTemplates/CreateRelationshipTemplate/ValidatorTests.cs b/Modules/Relationships/test/Relationships.Module.Tests/Features/RelationshipTemplates/CreateRelationshipTemplate/ValidatorTests.cs index 54d80447fc..80ff912d75 100644 --- a/Modules/Relationships/test/Relationships.Module.Tests/Features/RelationshipTemplates/CreateRelationshipTemplate/ValidatorTests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/Features/RelationshipTemplates/CreateRelationshipTemplate/ValidatorTests.cs @@ -1,7 +1,7 @@ -using CreateRelationshipTemplateSlice = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.CreateRelationshipTemplate; -using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.CreateRelationshipTemplate; +using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.CreateRelationshipTemplate; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; +using CreateRelationshipTemplateSlice = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.CreateRelationshipTemplate; namespace Backbone.Modules.Relationships.Module.Tests.Features.RelationshipTemplates.CreateRelationshipTemplate; diff --git a/Modules/Relationships/test/Relationships.Module.Tests/Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/HandlerTests.cs b/Modules/Relationships/test/Relationships.Module.Tests/Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/HandlerTests.cs index 5addd69cec..b9e15745c2 100644 --- a/Modules/Relationships/test/Relationships.Module.Tests/Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/HandlerTests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/HandlerTests.cs @@ -1,9 +1,9 @@ -using DeleteRelationshipTemplatesOfIdentitySlice = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplatesOfIdentity; -using System.Linq.Expressions; +using System.Linq.Expressions; using Backbone.Modules.Relationships.Abstractions; -using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplatesOfIdentity; using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; +using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplatesOfIdentity; using FakeItEasy; +using DeleteRelationshipTemplatesOfIdentitySlice = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplatesOfIdentity; namespace Backbone.Modules.Relationships.Module.Tests.Features.RelationshipTemplates.DeleteRelationshipTemplatesOfIdentity; diff --git a/Modules/Relationships/test/Relationships.Module.Tests/Features/RelationshipTemplates/ListRelationshipTemplates/ValidatorTests.cs b/Modules/Relationships/test/Relationships.Module.Tests/Features/RelationshipTemplates/ListRelationshipTemplates/ValidatorTests.cs index cb98c0e8b9..9848cdd80f 100644 --- a/Modules/Relationships/test/Relationships.Module.Tests/Features/RelationshipTemplates/ListRelationshipTemplates/ValidatorTests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/Features/RelationshipTemplates/ListRelationshipTemplates/ValidatorTests.cs @@ -1,9 +1,9 @@ -using ListRelationshipTemplatesSlice = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.ListRelationshipTemplates; using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.ListRelationshipTemplates; using Backbone.Modules.Relationships.Domain.Aggregates.RelationshipTemplates; +using Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.ListRelationshipTemplates; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; +using ListRelationshipTemplatesSlice = Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.ListRelationshipTemplates; namespace Backbone.Modules.Relationships.Module.Tests.Features.RelationshipTemplates.ListRelationshipTemplates; diff --git a/Modules/Relationships/test/Relationships.Module.Tests/Features/Relationships/DecomposeAndAnonymizeRelationshipsOfIdentity/HandlerTests.cs b/Modules/Relationships/test/Relationships.Module.Tests/Features/Relationships/DecomposeAndAnonymizeRelationshipsOfIdentity/HandlerTests.cs index 59a9e6525b..9e261dfe02 100644 --- a/Modules/Relationships/test/Relationships.Module.Tests/Features/Relationships/DecomposeAndAnonymizeRelationshipsOfIdentity/HandlerTests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/Features/Relationships/DecomposeAndAnonymizeRelationshipsOfIdentity/HandlerTests.cs @@ -1,9 +1,9 @@ -using DecomposeAndAnonymizeRelationshipsOfIdentitySlice = Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeAndAnonymizeRelationshipsOfIdentity; -using Backbone.Modules.Relationships.Abstractions; -using Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeAndAnonymizeRelationshipsOfIdentity; +using Backbone.Modules.Relationships.Abstractions; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; +using Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeAndAnonymizeRelationshipsOfIdentity; using FakeItEasy; using Microsoft.Extensions.Options; +using DecomposeAndAnonymizeRelationshipsOfIdentitySlice = Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeAndAnonymizeRelationshipsOfIdentity; namespace Backbone.Modules.Relationships.Module.Tests.Features.Relationships.DecomposeAndAnonymizeRelationshipsOfIdentity; diff --git a/Modules/Relationships/test/Relationships.Module.Tests/Features/Relationships/ListRelationships/ListRelationshipsValidatorTests.cs b/Modules/Relationships/test/Relationships.Module.Tests/Features/Relationships/ListRelationships/ListRelationshipsValidatorTests.cs index da87838e8b..f977aae535 100644 --- a/Modules/Relationships/test/Relationships.Module.Tests/Features/Relationships/ListRelationships/ListRelationshipsValidatorTests.cs +++ b/Modules/Relationships/test/Relationships.Module.Tests/Features/Relationships/ListRelationships/ListRelationshipsValidatorTests.cs @@ -1,9 +1,9 @@ -using ListRelationshipsSlice = Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationships; using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationships; using Backbone.Modules.Relationships.Domain.Aggregates.Relationships; +using Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationships; using Backbone.UnitTestTools.FluentValidation; using FluentValidation.TestHelper; +using ListRelationshipsSlice = Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationships; namespace Backbone.Modules.Relationships.Module.Tests.Features.Relationships.ListRelationships; diff --git a/Modules/Synchronization/src/Synchronization.Infrastructure/Persistence/Database/SynchronizationDbContext.cs b/Modules/Synchronization/src/Synchronization.Infrastructure/Persistence/Database/SynchronizationDbContext.cs index bbea0e47a6..90d51288cd 100644 --- a/Modules/Synchronization/src/Synchronization.Infrastructure/Persistence/Database/SynchronizationDbContext.cs +++ b/Modules/Synchronization/src/Synchronization.Infrastructure/Persistence/Database/SynchronizationDbContext.cs @@ -6,11 +6,11 @@ using Backbone.BuildingBlocks.Application.Pagination; using Backbone.BuildingBlocks.Infrastructure.Persistence.Database; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Synchronization.Infrastructure.Persistence.Database.Extensions; using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities; using Backbone.Modules.Synchronization.Domain.Entities.Relationships; using Backbone.Modules.Synchronization.Domain.Entities.Sync; +using Backbone.Modules.Synchronization.Infrastructure.Persistence.Database.Extensions; using Backbone.Modules.Synchronization.Infrastructure.Persistence.Database.ValueConverters; using Microsoft.Data.SqlClient; using Microsoft.Data.Sqlite; diff --git a/Modules/Synchronization/src/Synchronization.Module/EventBusExtensions.cs b/Modules/Synchronization/src/Synchronization.Module/EventBusExtensions.cs index c0c18900cf..ca8779b691 100644 --- a/Modules/Synchronization/src/Synchronization.Module/EventBusExtensions.cs +++ b/Modules/Synchronization/src/Synchronization.Module/EventBusExtensions.cs @@ -1,3 +1,9 @@ +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; +using Backbone.Modules.Devices.Contracts.DomainEvents; +using Backbone.Modules.Files.Contracts.DomainEvents; +using Backbone.Modules.Messages.Contracts.DomainEvents; +using Backbone.Modules.Relationships.Contracts.DomainEvents; +using Backbone.Modules.Tokens.Contracts.DomainEvents; using FileOwnershipClaimed = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.FileOwnershipClaimed; using FileOwnershipLocked = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.FileOwnershipLocked; using IdentityDeletionProcessStarted = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.IdentityDeletionProcessStarted; @@ -12,12 +18,6 @@ using RelationshipStatusChanged = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipStatusChanged; using RelationshipTemplateAllocationsExhausted = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipTemplateAllocationsExhausted; using TokenLocked = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.TokenLocked; -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; -using Backbone.Modules.Devices.Contracts.DomainEvents; -using Backbone.Modules.Files.Contracts.DomainEvents; -using Backbone.Modules.Messages.Contracts.DomainEvents; -using Backbone.Modules.Relationships.Contracts.DomainEvents; -using Backbone.Modules.Tokens.Contracts.DomainEvents; namespace Backbone.Modules.Synchronization.Module; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/Endpoint.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/Endpoint.cs index cd56354cb0..13539df14c 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/Endpoint.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/Endpoint.cs @@ -1,11 +1,11 @@ using Backbone.BuildingBlocks.API; using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Routing; -using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.GetDatawallet; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/Handler.cs index 355c73a802..68c30058c5 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/Handler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/Handler.cs @@ -1,9 +1,9 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; using MediatR; namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.GetDatawallet; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Endpoint.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Endpoint.cs index f2e86639c2..936ea6dd58 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Endpoint.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Endpoint.cs @@ -1,12 +1,12 @@ using Backbone.BuildingBlocks.API; using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; +using Backbone.BuildingBlocks.Application.Pagination; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Routing; -using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.BuildingBlocks.Application.Pagination; using Microsoft.Extensions.Options; using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Handler.cs index cc5292b081..35d36df470 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Handler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Handler.cs @@ -1,9 +1,9 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; using MediatR; namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.ListModifications; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Endpoint.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Endpoint.cs index 65eca93c37..3f2e295785 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Endpoint.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Endpoint.cs @@ -1,11 +1,11 @@ using Backbone.BuildingBlocks.API; using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Routing; -using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.PushDatawalletModifications; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Handler.cs index 843215ed4b..3f5421d75f 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Handler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Handler.cs @@ -2,9 +2,9 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.BuildingBlocks.Application.Extensions; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; using MediatR; using Microsoft.EntityFrameworkCore; using static Backbone.Modules.Synchronization.Domain.Entities.Datawallet; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs index 659e3c26d6..3e70d005c2 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs @@ -1,9 +1,9 @@ -using DeleteDatawalletsOfIdentity = Backbone.Modules.Synchronization.Module.Features.Datawallets.DeleteDatawalletsOfIdentity; -using DeleteExternalEventsOfIdentity = Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteExternalEventsOfIdentity; -using DeleteSyncRunsOfIdentity = Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteSyncRunsOfIdentity; using Backbone.BuildingBlocks.Application.Identities; using Backbone.DevelopmentKit.Identity.ValueObjects; using MediatR; +using DeleteDatawalletsOfIdentity = Backbone.Modules.Synchronization.Module.Features.Datawallets.DeleteDatawalletsOfIdentity; +using DeleteExternalEventsOfIdentity = Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteExternalEventsOfIdentity; +using DeleteSyncRunsOfIdentity = Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteSyncRunsOfIdentity; namespace Backbone.Modules.Synchronization.Module.Features.Identities.DeleteIdentity; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Endpoint.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Endpoint.cs index 2597efab43..d183937aaa 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Endpoint.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Endpoint.cs @@ -1,13 +1,13 @@ -using FinalizeExternalEventSync = Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeExternalEventSync; using Backbone.BuildingBlocks.API; using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeExternalEventSync; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Routing; -using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; -using Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeExternalEventSync; +using FinalizeExternalEventSync = Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeExternalEventSync; namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeDatawalletVersionUpgrade; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Handler.cs index 4bcc697063..11e5af4d30 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Handler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Handler.cs @@ -1,9 +1,9 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; -using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities; using Backbone.Modules.Synchronization.Domain.Entities.Sync; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; using MediatR; using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Validator.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Validator.cs index c1e84af84f..5ab0d20d92 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Validator.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Validator.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.Extensions; using Backbone.BuildingBlocks.Application.FluentValidation; -using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; using Backbone.Modules.Synchronization.Domain.Entities.Sync; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; using FluentValidation; namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeDatawalletVersionUpgrade; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Endpoint.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Endpoint.cs index 26e7b9790e..230895b600 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Endpoint.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Endpoint.cs @@ -1,11 +1,11 @@ using Backbone.BuildingBlocks.API; using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Routing; -using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeExternalEventSync; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Handler.cs index 900bc61578..a0df616b8a 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Handler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Handler.cs @@ -1,9 +1,9 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; -using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities; using Backbone.Modules.Synchronization.Domain.Entities.Sync; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; using MediatR; using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Validator.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Validator.cs index 67dcc010f0..35e6d6da33 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Validator.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Validator.cs @@ -1,6 +1,6 @@ using Backbone.BuildingBlocks.Application.Extensions; -using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; using Backbone.Modules.Synchronization.Domain.Entities.Sync; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; using FluentValidation; namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeExternalEventSync; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Endpoint.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Endpoint.cs index cd84f6aeff..1c467fe11e 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Endpoint.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Endpoint.cs @@ -1,11 +1,11 @@ using Backbone.BuildingBlocks.API; using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Routing; -using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.GetSyncRunById; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Handler.cs index 013be57db8..73f3d67b9d 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Handler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Handler.cs @@ -1,8 +1,8 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Synchronization.Abstractions; -using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; using Backbone.Modules.Synchronization.Domain.Entities.Sync; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; using MediatR; namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.GetSyncRunById; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Endpoint.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Endpoint.cs index 5f0a6bd6db..ac40746f1e 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Endpoint.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Endpoint.cs @@ -1,12 +1,12 @@ using Backbone.BuildingBlocks.API; using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; +using Backbone.BuildingBlocks.Application.Pagination; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Routing; -using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; -using Backbone.BuildingBlocks.Application.Pagination; using Microsoft.Extensions.Options; using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Handler.cs index b8aa086feb..850ada948b 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Handler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Handler.cs @@ -2,8 +2,8 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Synchronization.Abstractions; -using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; using Backbone.Modules.Synchronization.Domain.Entities.Sync; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; using MediatR; namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.ListExternalEventsOfSyncRun; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/Shared/SyncRunFinalization.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/Shared/SyncRunFinalization.cs index 6bd684dfda..e9d11484d1 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/Shared/SyncRunFinalization.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/Shared/SyncRunFinalization.cs @@ -1,10 +1,10 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities; using Backbone.Modules.Synchronization.Domain.Entities.Sync; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Endpoint.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Endpoint.cs index 78002335ee..588b7d67c3 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Endpoint.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Endpoint.cs @@ -1,13 +1,13 @@ using Backbone.BuildingBlocks.API; using Backbone.BuildingBlocks.API.MinimalApi; +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; +using Backbone.Modules.Devices.Contracts; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Routing; -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; -using Backbone.Modules.Devices.Contracts; -using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.StartSyncRun; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Handler.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Handler.cs index 9eeb29f122..15c5b36b85 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Handler.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Handler.cs @@ -3,9 +3,9 @@ using Backbone.BuildingBlocks.Application.Extensions; using Backbone.DevelopmentKit.Identity.ValueObjects; using Backbone.Modules.Synchronization.Abstractions; -using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; using Backbone.Modules.Synchronization.Domain.Entities; using Backbone.Modules.Synchronization.Domain.Entities.Sync; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; using MediatR; using Microsoft.EntityFrameworkCore; using static Backbone.Modules.Synchronization.Domain.Entities.Datawallet; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Response.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Response.cs index 1c005d64f6..9b11c6d01d 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Response.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Response.cs @@ -1,6 +1,6 @@ using System.Text.Json.Serialization; -using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; using Backbone.Modules.Synchronization.Domain.Entities.Sync; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.StartSyncRun; diff --git a/Modules/Synchronization/src/Synchronization.Module/SynchronizationEndpointExtensions.cs b/Modules/Synchronization/src/Synchronization.Module/SynchronizationEndpointExtensions.cs index 7bfc55aa6e..e375b1b222 100644 --- a/Modules/Synchronization/src/Synchronization.Module/SynchronizationEndpointExtensions.cs +++ b/Modules/Synchronization/src/Synchronization.Module/SynchronizationEndpointExtensions.cs @@ -2,12 +2,12 @@ using Backbone.Modules.Synchronization.Module.Features.Datawallets.GetDatawallet; using Backbone.Modules.Synchronization.Module.Features.Datawallets.ListModifications; using Backbone.Modules.Synchronization.Module.Features.Datawallets.PushDatawalletModifications; -using Backbone.Modules.Synchronization.Module.Features.SyncRuns.StartSyncRun; -using Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeExternalEventSync; using Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeDatawalletVersionUpgrade; -using Backbone.Modules.Synchronization.Module.Features.SyncRuns.ListExternalEventsOfSyncRun; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeExternalEventSync; using Backbone.Modules.Synchronization.Module.Features.SyncRuns.GetSyncRunById; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.ListExternalEventsOfSyncRun; using Backbone.Modules.Synchronization.Module.Features.SyncRuns.RefreshExpirationTimeOfSyncRun; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.StartSyncRun; using Microsoft.AspNetCore.Routing; using OpenIddict.Validation.AspNetCore; diff --git a/Modules/Synchronization/src/Synchronization.Module/SynchronizationModule.cs b/Modules/Synchronization/src/Synchronization.Module/SynchronizationModule.cs index bc297077a0..d14b8bd95b 100644 --- a/Modules/Synchronization/src/Synchronization.Module/SynchronizationModule.cs +++ b/Modules/Synchronization/src/Synchronization.Module/SynchronizationModule.cs @@ -3,8 +3,8 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Application.MediatR; using Backbone.BuildingBlocks.Module; -using Backbone.Modules.Synchronization.Infrastructure.Persistence; using Backbone.Modules.Synchronization.Infrastructure; +using Backbone.Modules.Synchronization.Infrastructure.Persistence; using FluentValidation; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/Datawallets/ListModifications/HandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/Datawallets/ListModifications/HandlerTests.cs index 0d7f501659..f6bbefb410 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/Datawallets/ListModifications/HandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/Datawallets/ListModifications/HandlerTests.cs @@ -1,13 +1,13 @@ -using ListModificationsSlice = Backbone.Modules.Synchronization.Module.Features.Datawallets.ListModifications; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.BuildingBlocks.Application.Pagination; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Synchronization.Module.Features.Datawallets.ListModifications; using Backbone.Modules.Synchronization.Domain.Entities; using Backbone.Modules.Synchronization.Infrastructure.Persistence.Database; +using Backbone.Modules.Synchronization.Module.Features.Datawallets.ListModifications; using Backbone.UnitTestTools.Shouldly.Extensions; using Backbone.UnitTestTools.TestDoubles.Fakes; using FakeItEasy; +using ListModificationsSlice = Backbone.Modules.Synchronization.Module.Features.Datawallets.ListModifications; namespace Backbone.Modules.Synchronization.Module.Tests.Features.Datawallets.ListModifications; diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/Datawallets/PushDatawalletModifications/HandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/Datawallets/PushDatawalletModifications/HandlerTests.cs index db4575b125..4c7269481e 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/Datawallets/PushDatawalletModifications/HandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/Datawallets/PushDatawalletModifications/HandlerTests.cs @@ -1,15 +1,15 @@ -using PushDatawalletModificationsSlice = Backbone.Modules.Synchronization.Module.Features.Datawallets.PushDatawalletModifications; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; +using Backbone.Modules.Synchronization.Infrastructure.Persistence.Database; using Backbone.Modules.Synchronization.Module.Features.Datawallets.PushDatawalletModifications; using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; -using Backbone.Modules.Synchronization.Infrastructure.Persistence.Database; using Backbone.UnitTestTools.Shouldly.Extensions; using FakeItEasy; using Microsoft.Data.Sqlite; using Microsoft.EntityFrameworkCore; +using PushDatawalletModificationsSlice = Backbone.Modules.Synchronization.Module.Features.Datawallets.PushDatawalletModifications; namespace Backbone.Modules.Synchronization.Module.Tests.Features.Datawallets.PushDatawalletModifications; diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/Datawallets/PushDatawalletModifications/PushDatawalletModificationsCommandValidatorTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/Datawallets/PushDatawalletModifications/PushDatawalletModificationsCommandValidatorTests.cs index a1c931098d..53219bc2c6 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/Datawallets/PushDatawalletModifications/PushDatawalletModificationsCommandValidatorTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/Datawallets/PushDatawalletModifications/PushDatawalletModificationsCommandValidatorTests.cs @@ -1,7 +1,7 @@ -using PushDatawalletModificationsSlice = Backbone.Modules.Synchronization.Module.Features.Datawallets.PushDatawalletModifications; using Backbone.Modules.Synchronization.Module.Features.Datawallets.PushDatawalletModifications; using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; using FluentValidation.TestHelper; +using PushDatawalletModificationsSlice = Backbone.Modules.Synchronization.Module.Features.Datawallets.PushDatawalletModifications; namespace Backbone.Modules.Synchronization.Module.Tests.Features.Datawallets.PushDatawalletModifications; diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/IdentityDeletionProcessStarted/HandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/IdentityDeletionProcessStarted/HandlerTests.cs index cede66d991..337530f821 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/IdentityDeletionProcessStarted/HandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/IdentityDeletionProcessStarted/HandlerTests.cs @@ -1,9 +1,9 @@ -using IdentityDeletionProcessStartedSlice = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.IdentityDeletionProcessStarted; using Backbone.Modules.Devices.Contracts.DomainEvents; using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using FakeItEasy; using Microsoft.Extensions.Logging; +using IdentityDeletionProcessStartedSlice = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.IdentityDeletionProcessStarted; namespace Backbone.Modules.Synchronization.Module.Tests.Features.ExternalEvents.IdentityDeletionProcessStarted; diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/IdentityDeletionProcessStatusChanged/HandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/IdentityDeletionProcessStatusChanged/HandlerTests.cs index e0f5626c55..6981aba9c2 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/IdentityDeletionProcessStatusChanged/HandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/IdentityDeletionProcessStatusChanged/HandlerTests.cs @@ -1,9 +1,9 @@ -using IdentityDeletionProcessStatusChangedSlice = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.IdentityDeletionProcessStatusChanged; -using Backbone.Modules.Devices.Contracts.DomainEvents; +using Backbone.Modules.Devices.Contracts.DomainEvents; using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using FakeItEasy; using Microsoft.Extensions.Logging; +using IdentityDeletionProcessStatusChangedSlice = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.IdentityDeletionProcessStatusChanged; namespace Backbone.Modules.Synchronization.Module.Tests.Features.ExternalEvents.IdentityDeletionProcessStatusChanged; diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/MessageCreated/HandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/MessageCreated/HandlerTests.cs index 268329922e..39fbb67620 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/MessageCreated/HandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/MessageCreated/HandlerTests.cs @@ -1,11 +1,11 @@ -using MessageCreatedSlice = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.MessageCreated; -using Backbone.Modules.Messages.Contracts.DomainEvents; +using Backbone.Modules.Messages.Contracts.DomainEvents; using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Relationships; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using Backbone.Tooling; using FakeItEasy; using Microsoft.Extensions.Logging; +using MessageCreatedSlice = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.MessageCreated; namespace Backbone.Modules.Synchronization.Module.Tests.Features.ExternalEvents.MessageCreated; diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/PeerDeleted/HandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/PeerDeleted/HandlerTests.cs index 64c13e720d..b4e0611904 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/PeerDeleted/HandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/PeerDeleted/HandlerTests.cs @@ -1,9 +1,9 @@ -using PeerDeletedSlice = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerDeleted; -using Backbone.Modules.Relationships.Contracts.DomainEvents; +using Backbone.Modules.Relationships.Contracts.DomainEvents; using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using FakeItEasy; using Microsoft.Extensions.Logging; +using PeerDeletedSlice = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerDeleted; namespace Backbone.Modules.Synchronization.Module.Tests.Features.ExternalEvents.PeerDeleted; diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/PeerDeletionCancelled/HandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/PeerDeletionCancelled/HandlerTests.cs index 15c2281877..5866d42e82 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/PeerDeletionCancelled/HandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/PeerDeletionCancelled/HandlerTests.cs @@ -1,9 +1,9 @@ -using PeerDeletionCancelledSlice = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerDeletionCancelled; -using Backbone.Modules.Relationships.Contracts.DomainEvents; +using Backbone.Modules.Relationships.Contracts.DomainEvents; using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using FakeItEasy; using Microsoft.Extensions.Logging; +using PeerDeletionCancelledSlice = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerDeletionCancelled; namespace Backbone.Modules.Synchronization.Module.Tests.Features.ExternalEvents.PeerDeletionCancelled; diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/PeerToBeDeleted/HandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/PeerToBeDeleted/HandlerTests.cs index 7509dd611a..d646df2e8b 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/PeerToBeDeleted/HandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/PeerToBeDeleted/HandlerTests.cs @@ -1,9 +1,9 @@ -using PeerToBeDeletedSlice = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerToBeDeleted; -using Backbone.Modules.Relationships.Contracts.DomainEvents; +using Backbone.Modules.Relationships.Contracts.DomainEvents; using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using FakeItEasy; using Microsoft.Extensions.Logging; +using PeerToBeDeletedSlice = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.PeerToBeDeleted; namespace Backbone.Modules.Synchronization.Module.Tests.Features.ExternalEvents.PeerToBeDeleted; diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/RelationshipReactivationCompleted/HandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/RelationshipReactivationCompleted/HandlerTests.cs index 907e7ce5f4..3fa083d126 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/RelationshipReactivationCompleted/HandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/RelationshipReactivationCompleted/HandlerTests.cs @@ -1,10 +1,10 @@ -using RelationshipReactivationCompletedSlice = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipReactivationCompleted; -using Backbone.Modules.Relationships.Contracts.DomainEvents; +using Backbone.Modules.Relationships.Contracts.DomainEvents; using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Relationships; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using FakeItEasy; using Microsoft.Extensions.Logging; +using RelationshipReactivationCompletedSlice = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipReactivationCompleted; namespace Backbone.Modules.Synchronization.Module.Tests.Features.ExternalEvents.RelationshipReactivationCompleted; diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/RelationshipStatusChanged/HandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/RelationshipStatusChanged/HandlerTests.cs index 853edefb2f..73087cb883 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/RelationshipStatusChanged/HandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/RelationshipStatusChanged/HandlerTests.cs @@ -1,10 +1,10 @@ -using RelationshipStatusChangedSlice = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipStatusChanged; -using Backbone.Modules.Relationships.Contracts.DomainEvents; +using Backbone.Modules.Relationships.Contracts.DomainEvents; using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Relationships; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using FakeItEasy; using Microsoft.Extensions.Logging; +using RelationshipStatusChangedSlice = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.RelationshipStatusChanged; namespace Backbone.Modules.Synchronization.Module.Tests.Features.ExternalEvents.RelationshipStatusChanged; diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/TokenLocked/HandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/TokenLocked/HandlerTests.cs index 61d5bc745d..71f37cd5f5 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/TokenLocked/HandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/ExternalEvents/TokenLocked/HandlerTests.cs @@ -1,8 +1,8 @@ -using TokenLockedSlice = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.TokenLocked; -using Backbone.Modules.Synchronization.Abstractions; +using Backbone.Modules.Synchronization.Abstractions; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using Backbone.Modules.Tokens.Contracts.DomainEvents; using FakeItEasy; +using TokenLockedSlice = Backbone.Modules.Synchronization.Module.Features.ExternalEvents.TokenLocked; namespace Backbone.Modules.Synchronization.Module.Tests.Features.ExternalEvents.TokenLocked; diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs index 24ec067ece..fb511743e3 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs @@ -1,10 +1,10 @@ -using DeleteDatawalletsOfIdentitySlice = Backbone.Modules.Synchronization.Module.Features.Datawallets.DeleteDatawalletsOfIdentity; -using DeleteExternalEventsOfIdentitySlice = Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteExternalEventsOfIdentity; -using DeleteSyncRunsOfIdentitySlice = Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteSyncRunsOfIdentity; -using Backbone.BuildingBlocks.Application.Identities; +using Backbone.BuildingBlocks.Application.Identities; using Backbone.Modules.Synchronization.Module.Features.Identities.DeleteIdentity; using FakeItEasy; using MediatR; +using DeleteDatawalletsOfIdentitySlice = Backbone.Modules.Synchronization.Module.Features.Datawallets.DeleteDatawalletsOfIdentity; +using DeleteExternalEventsOfIdentitySlice = Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteExternalEventsOfIdentity; +using DeleteSyncRunsOfIdentitySlice = Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteSyncRunsOfIdentity; namespace Backbone.Modules.Synchronization.Module.Tests.Features.Identities.DeleteIdentity; diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/SyncRuns/FinalizeExternalEventSync/HandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/SyncRuns/FinalizeExternalEventSync/HandlerTests.cs index 81bdf835c4..c499a052ab 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/SyncRuns/FinalizeExternalEventSync/HandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/SyncRuns/FinalizeExternalEventSync/HandlerTests.cs @@ -1,12 +1,12 @@ -using FinalizeExternalEventSyncSlice = Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeExternalEventSync; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; +using Backbone.Modules.Synchronization.Infrastructure.Persistence.Database; using Backbone.Modules.Synchronization.Module.Features.Datawallets.Shared; using Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeExternalEventSync; -using Backbone.Modules.Synchronization.Infrastructure.Persistence.Database; using Backbone.UnitTestTools.Shouldly.Extensions; using FakeItEasy; +using FinalizeExternalEventSyncSlice = Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeExternalEventSync; namespace Backbone.Modules.Synchronization.Module.Tests.Features.SyncRuns.FinalizeExternalEventSync; diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/HandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/HandlerTests.cs index 079aeeae80..276c2031b3 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/HandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/HandlerTests.cs @@ -1,12 +1,12 @@ -using RefreshExpirationTimeOfSyncRunSlice = Backbone.Modules.Synchronization.Module.Features.SyncRuns.RefreshExpirationTimeOfSyncRun; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Synchronization.Module.Features.SyncRuns.RefreshExpirationTimeOfSyncRun; using Backbone.Modules.Synchronization.Infrastructure.Persistence.Database; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.RefreshExpirationTimeOfSyncRun; using Backbone.Tooling; using Backbone.UnitTestTools.Shouldly.Extensions; using FakeItEasy; +using RefreshExpirationTimeOfSyncRunSlice = Backbone.Modules.Synchronization.Module.Features.SyncRuns.RefreshExpirationTimeOfSyncRun; namespace Backbone.Modules.Synchronization.Module.Tests.Features.SyncRuns.RefreshExpirationTimeOfSyncRun; diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/SyncRuns/StartSyncRun/HandlerTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/SyncRuns/StartSyncRun/HandlerTests.cs index ad4866f470..a5a63058ee 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/SyncRuns/StartSyncRun/HandlerTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/SyncRuns/StartSyncRun/HandlerTests.cs @@ -1,17 +1,17 @@ -using StartSyncRunSlice = Backbone.Modules.Synchronization.Module.Features.SyncRuns.StartSyncRun; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.DevelopmentKit.Identity.ValueObjects; -using Backbone.Modules.Synchronization.Module.Features.SyncRuns.StartSyncRun; -using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; using Backbone.Modules.Synchronization.Domain.Entities.Sync; using Backbone.Modules.Synchronization.Infrastructure.Persistence.Database; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.StartSyncRun; using Backbone.Tooling; using Backbone.UnitTestTools.Shouldly.Extensions; using FakeItEasy; using Microsoft.Data.Sqlite; using Microsoft.EntityFrameworkCore; +using StartSyncRunSlice = Backbone.Modules.Synchronization.Module.Features.SyncRuns.StartSyncRun; namespace Backbone.Modules.Synchronization.Module.Tests.Features.SyncRuns.StartSyncRun; diff --git a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/SyncRuns/StartSyncRun/StartSyncRunCommandValidatorTests.cs b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/SyncRuns/StartSyncRun/StartSyncRunCommandValidatorTests.cs index a985142989..015a1f7116 100644 --- a/Modules/Synchronization/test/Synchronization.Module.Tests/Features/SyncRuns/StartSyncRun/StartSyncRunCommandValidatorTests.cs +++ b/Modules/Synchronization/test/Synchronization.Module.Tests/Features/SyncRuns/StartSyncRun/StartSyncRunCommandValidatorTests.cs @@ -1,7 +1,7 @@ -using StartSyncRunSlice = Backbone.Modules.Synchronization.Module.Features.SyncRuns.StartSyncRun; -using Backbone.Modules.Synchronization.Module.Features.SyncRuns.StartSyncRun; using Backbone.Modules.Synchronization.Module.Features.SyncRuns.Shared; +using Backbone.Modules.Synchronization.Module.Features.SyncRuns.StartSyncRun; using FluentValidation.TestHelper; +using StartSyncRunSlice = Backbone.Modules.Synchronization.Module.Features.SyncRuns.StartSyncRun; namespace Backbone.Modules.Synchronization.Module.Tests.Features.SyncRuns.StartSyncRun; diff --git a/Modules/Tags/src/Tags.Module/TagsModule.cs b/Modules/Tags/src/Tags.Module/TagsModule.cs index 18193a1fab..8597b57513 100644 --- a/Modules/Tags/src/Tags.Module/TagsModule.cs +++ b/Modules/Tags/src/Tags.Module/TagsModule.cs @@ -1,8 +1,8 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Module; using Backbone.Modules.Tags.Abstractions; -using Backbone.Modules.Tags.Infrastructure.Persistence; using Backbone.Modules.Tags.Infrastructure; +using Backbone.Modules.Tags.Infrastructure.Persistence; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; diff --git a/Modules/Tokens/src/Tokens.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs b/Modules/Tokens/src/Tokens.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs index 6b0722b5d7..116c7d34ce 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Identities/DeleteIdentity/IdentityDeleter.cs @@ -1,9 +1,9 @@ -using AnonymizeTokenAllocationsOfIdentity = Backbone.Modules.Tokens.Module.Features.Tokens.AnonymizeTokenAllocationsOfIdentity; -using AnonymizeTokensForIdentity = Backbone.Modules.Tokens.Module.Features.Tokens.AnonymizeTokensForIdentity; -using DeleteTokensOfIdentity = Backbone.Modules.Tokens.Module.Features.Tokens.DeleteTokensOfIdentity; -using Backbone.BuildingBlocks.Application.Identities; +using Backbone.BuildingBlocks.Application.Identities; using Backbone.DevelopmentKit.Identity.ValueObjects; using MediatR; +using AnonymizeTokenAllocationsOfIdentity = Backbone.Modules.Tokens.Module.Features.Tokens.AnonymizeTokenAllocationsOfIdentity; +using AnonymizeTokensForIdentity = Backbone.Modules.Tokens.Module.Features.Tokens.AnonymizeTokensForIdentity; +using DeleteTokensOfIdentity = Backbone.Modules.Tokens.Module.Features.Tokens.DeleteTokensOfIdentity; namespace Backbone.Modules.Tokens.Module.Features.Identities.DeleteIdentity; diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Endpoint.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Endpoint.cs index c106ce73b5..6d0056b97b 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Endpoint.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Endpoint.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Endpoint.cs index e8abcd85bf..78a269fb22 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Endpoint.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Endpoint.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Endpoint.cs index b65adf49f2..97c3c84d1f 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Endpoint.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.Modules.Tokens.Module.Features.Tokens.Shared; using MediatR; using Microsoft.AspNetCore.Builder; diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Handler.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Handler.cs index 2c30179a6b..f7219bb7c4 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Handler.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Handler.cs @@ -1,8 +1,8 @@ using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.Modules.Tokens.Abstractions; -using Backbone.Modules.Tokens.Module.Features.Tokens.Shared; using Backbone.Modules.Tokens.Domain.Entities; +using Backbone.Modules.Tokens.Module.Features.Tokens.Shared; using MediatR; using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Endpoint.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Endpoint.cs index 9ff328f3e9..c9999a4e61 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Endpoint.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Endpoint.cs @@ -1,6 +1,5 @@ -using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.Application.Abstractions.Exceptions; using Backbone.BuildingBlocks.Application.Pagination; using Backbone.Modules.Tokens.Module.Features.Tokens.Shared; @@ -10,6 +9,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Routing; using Microsoft.Extensions.Options; +using ApplicationException = Backbone.BuildingBlocks.Application.Abstractions.Exceptions.ApplicationException; namespace Backbone.Modules.Tokens.Module.Features.Tokens.ListTokens; diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokensByIdentity/Handler.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokensByIdentity/Handler.cs index a429c576e7..65b0f49686 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokensByIdentity/Handler.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokensByIdentity/Handler.cs @@ -1,6 +1,6 @@ using Backbone.Modules.Tokens.Abstractions; -using Backbone.Modules.Tokens.Module.Features.Tokens.Shared; using Backbone.Modules.Tokens.Domain.Entities; +using Backbone.Modules.Tokens.Module.Features.Tokens.Shared; using MediatR; namespace Backbone.Modules.Tokens.Module.Features.Tokens.ListTokensByIdentity; diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/Shared/Response.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/Shared/Response.cs index 012ea076cc..d8c180e3be 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/Shared/Response.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/Shared/Response.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.Persistence.Database; using Backbone.BuildingBlocks.Application.Pagination; -using Backbone.Modules.Tokens.Module.Features.Tokens.Shared; using Backbone.Modules.Tokens.Domain.Entities; +using Backbone.Modules.Tokens.Module.Features.Tokens.Shared; namespace Backbone.Modules.Tokens.Module.Features.Tokens.Shared; diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Endpoint.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Endpoint.cs index 2f18697526..7a40939716 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Endpoint.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Endpoint.cs @@ -1,5 +1,5 @@ -using Backbone.BuildingBlocks.API.MinimalApi; using Backbone.BuildingBlocks.API; +using Backbone.BuildingBlocks.API.MinimalApi; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Http; @@ -26,6 +26,7 @@ private static async Task Handle([FromRoute] string id, [FromBody] Requ } } +[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("UpdateTokenContentRequest")] public class RequestBody { public required byte[] NewContent { get; init; } diff --git a/Modules/Tokens/src/Tokens.Module/TokensModule.cs b/Modules/Tokens/src/Tokens.Module/TokensModule.cs index 083a98232a..6c3e075cba 100644 --- a/Modules/Tokens/src/Tokens.Module/TokensModule.cs +++ b/Modules/Tokens/src/Tokens.Module/TokensModule.cs @@ -2,8 +2,8 @@ using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Application.MediatR; using Backbone.BuildingBlocks.Module; -using Backbone.Modules.Tokens.Infrastructure.Persistence; using Backbone.Modules.Tokens.Infrastructure; +using Backbone.Modules.Tokens.Infrastructure.Persistence; using FluentValidation; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; diff --git a/Modules/Tokens/test/Tokens.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs b/Modules/Tokens/test/Tokens.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs index 79e4f4fffe..b8bfdd3da8 100644 --- a/Modules/Tokens/test/Tokens.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs +++ b/Modules/Tokens/test/Tokens.Module.Tests/Features/Identities/DeleteIdentity/IdentityDeleterTests.cs @@ -1,8 +1,8 @@ -using DeleteTokensOfIdentitySlice = Backbone.Modules.Tokens.Module.Features.Tokens.DeleteTokensOfIdentity; -using Backbone.BuildingBlocks.Application.Identities; +using Backbone.BuildingBlocks.Application.Identities; using Backbone.Modules.Tokens.Module.Features.Identities.DeleteIdentity; using FakeItEasy; using MediatR; +using DeleteTokensOfIdentitySlice = Backbone.Modules.Tokens.Module.Features.Tokens.DeleteTokensOfIdentity; namespace Backbone.Modules.Tokens.Module.Tests.Features.Identities.DeleteIdentity; diff --git a/Modules/Tokens/test/Tokens.Module.Tests/Features/Tokens/CreateToken/ValidatorTests.cs b/Modules/Tokens/test/Tokens.Module.Tests/Features/Tokens/CreateToken/ValidatorTests.cs index 8cf368e9c2..b9c22fab4e 100644 --- a/Modules/Tokens/test/Tokens.Module.Tests/Features/Tokens/CreateToken/ValidatorTests.cs +++ b/Modules/Tokens/test/Tokens.Module.Tests/Features/Tokens/CreateToken/ValidatorTests.cs @@ -1,11 +1,11 @@ -using CreateTokenSlice = Backbone.Modules.Tokens.Module.Features.Tokens.CreateToken; -using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; -using Backbone.Modules.Tokens.Module.Features.Tokens.CreateToken; +using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.UserContext; using Backbone.Modules.Tokens.Domain.Entities; +using Backbone.Modules.Tokens.Module.Features.Tokens.CreateToken; using Backbone.UnitTestTools.FluentValidation; using Backbone.UnitTestTools.TestDoubles; using FakeItEasy; using FluentValidation.TestHelper; +using CreateTokenSlice = Backbone.Modules.Tokens.Module.Features.Tokens.CreateToken; namespace Backbone.Modules.Tokens.Module.Tests.Features.Tokens.CreateToken; diff --git a/Modules/Tokens/test/Tokens.Module.Tests/Features/Tokens/DeleteTokensOfIdentity/HandlerTests.cs b/Modules/Tokens/test/Tokens.Module.Tests/Features/Tokens/DeleteTokensOfIdentity/HandlerTests.cs index 6308844dd8..9dc56c5e34 100644 --- a/Modules/Tokens/test/Tokens.Module.Tests/Features/Tokens/DeleteTokensOfIdentity/HandlerTests.cs +++ b/Modules/Tokens/test/Tokens.Module.Tests/Features/Tokens/DeleteTokensOfIdentity/HandlerTests.cs @@ -1,9 +1,9 @@ -using DeleteTokensOfIdentitySlice = Backbone.Modules.Tokens.Module.Features.Tokens.DeleteTokensOfIdentity; -using System.Linq.Expressions; +using System.Linq.Expressions; using Backbone.Modules.Tokens.Abstractions; -using Backbone.Modules.Tokens.Module.Features.Tokens.DeleteTokensOfIdentity; using Backbone.Modules.Tokens.Domain.Entities; +using Backbone.Modules.Tokens.Module.Features.Tokens.DeleteTokensOfIdentity; using FakeItEasy; +using DeleteTokensOfIdentitySlice = Backbone.Modules.Tokens.Module.Features.Tokens.DeleteTokensOfIdentity; namespace Backbone.Modules.Tokens.Module.Tests.Features.Tokens.DeleteTokensOfIdentity; From cdf0817f71b45f356b815e0a01590b24efa479cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20H=C3=BCgel?= Date: Fri, 2 Oct 2026 15:33:23 +0200 Subject: [PATCH 23/25] fix: use ConcurrentQueue instead of IList in rabbitmq SubscriptionManager --- .../EventBus/RabbitMQ/SubscriptionManager.cs | 5 ++-- .../RabbitMq/SubscriptionManagerTests.cs | 25 +++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/EventBus/RabbitMq/SubscriptionManagerTests.cs diff --git a/BuildingBlocks/src/BuildingBlocks.Infrastructure/EventBus/RabbitMQ/SubscriptionManager.cs b/BuildingBlocks/src/BuildingBlocks.Infrastructure/EventBus/RabbitMQ/SubscriptionManager.cs index 2419550721..3719e287a2 100644 --- a/BuildingBlocks/src/BuildingBlocks.Infrastructure/EventBus/RabbitMQ/SubscriptionManager.cs +++ b/BuildingBlocks/src/BuildingBlocks.Infrastructure/EventBus/RabbitMQ/SubscriptionManager.cs @@ -1,15 +1,16 @@ using System.Collections; +using System.Collections.Concurrent; using RabbitMQ.Client.Events; namespace Backbone.BuildingBlocks.Infrastructure.EventBus.RabbitMQ; public class SubscriptionManager : IEnumerable { - private readonly IList _subscriptions = []; + private readonly ConcurrentQueue _subscriptions = new(); public void AddSubscription(AsyncEventingBasicConsumer consumer, string queueName) { - _subscriptions.Add(new Subscription(consumer, queueName)); + _subscriptions.Enqueue(new Subscription(consumer, queueName)); } public IEnumerator GetEnumerator() diff --git a/BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/EventBus/RabbitMq/SubscriptionManagerTests.cs b/BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/EventBus/RabbitMq/SubscriptionManagerTests.cs new file mode 100644 index 0000000000..76a048b59d --- /dev/null +++ b/BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/EventBus/RabbitMq/SubscriptionManagerTests.cs @@ -0,0 +1,25 @@ +using Backbone.BuildingBlocks.Infrastructure.EventBus.RabbitMQ; +using FakeItEasy; +using RabbitMQ.Client; +using RabbitMQ.Client.Events; + +namespace Backbone.BuildingBlocks.Infrastructure.Tests.EventBus.RabbitMQ; + +public class SubscriptionManagerTests : AbstractTestsBase +{ + [Fact] + public void Preserves_all_subscriptions_registered_concurrently() + { + // Arrange + const int numberOfSubscriptions = 10000; + var manager = new SubscriptionManager(); + var consumer = new AsyncEventingBasicConsumer(A.Fake()); + + // Act + Parallel.For(0, numberOfSubscriptions, index => manager.AddSubscription(consumer, index.ToString())); + + // Assert + manager.Select(subscription => int.Parse(subscription.QueueName)).Order() + .ShouldBe(Enumerable.Range(0, numberOfSubscriptions)); + } +} From 3807e4b71981ecdcfc5ca7eda0b4f54d330466d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20H=C3=BCgel?= Date: Fri, 2 Oct 2026 15:43:58 +0200 Subject: [PATCH 24/25] chore: fix casing in folder names for linux --- .../{Mediatr => MediatR}/QuotaEnforcerBehaviorTests.cs | 0 .../EventBus/{RabbitMq => RabbitMQ}/EventBusRabbitMqTests.cs | 0 .../EventBus/{RabbitMq => RabbitMQ}/SubscriptionManagerTests.cs | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename BuildingBlocks/test/BuildingBlocks.Application.Tests/{Mediatr => MediatR}/QuotaEnforcerBehaviorTests.cs (100%) rename BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/EventBus/{RabbitMq => RabbitMQ}/EventBusRabbitMqTests.cs (100%) rename BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/EventBus/{RabbitMq => RabbitMQ}/SubscriptionManagerTests.cs (100%) diff --git a/BuildingBlocks/test/BuildingBlocks.Application.Tests/Mediatr/QuotaEnforcerBehaviorTests.cs b/BuildingBlocks/test/BuildingBlocks.Application.Tests/MediatR/QuotaEnforcerBehaviorTests.cs similarity index 100% rename from BuildingBlocks/test/BuildingBlocks.Application.Tests/Mediatr/QuotaEnforcerBehaviorTests.cs rename to BuildingBlocks/test/BuildingBlocks.Application.Tests/MediatR/QuotaEnforcerBehaviorTests.cs diff --git a/BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/EventBus/RabbitMq/EventBusRabbitMqTests.cs b/BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/EventBus/RabbitMQ/EventBusRabbitMqTests.cs similarity index 100% rename from BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/EventBus/RabbitMq/EventBusRabbitMqTests.cs rename to BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/EventBus/RabbitMQ/EventBusRabbitMqTests.cs diff --git a/BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/EventBus/RabbitMq/SubscriptionManagerTests.cs b/BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/EventBus/RabbitMQ/SubscriptionManagerTests.cs similarity index 100% rename from BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/EventBus/RabbitMq/SubscriptionManagerTests.cs rename to BuildingBlocks/test/BuildingBlocks.Infrastructure.Tests/EventBus/RabbitMQ/SubscriptionManagerTests.cs From d23181e554e309fb7f9aacb16170eec7c0f36892 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20H=C3=BCgel?= Date: Fri, 2 Oct 2026 16:08:53 +0200 Subject: [PATCH 25/25] chore: cleanup --- .../Extensions/ServiceCollectionExtensions.cs | 27 ++------ .../OpenApi/OpenApiSchemaNames.cs | 36 ++++++++++ .../JsonSchemaNameAttribute.cs | 7 -- .../OpenApi/OpenApiSchemaNamesTests.cs | 65 +++++++++++++++++++ .../AnnouncementsEndpointExtensions.cs | 2 +- .../AnnouncementsModule.cs | 2 + .../CreateAnnouncement/Command.cs | 1 - .../DeleteAnnouncementById/Command.cs | 1 - .../DeleteAnnouncementRecipients/Command.cs | 1 - .../ExecuteHousekeeping/Command.cs | 1 - .../GetAnnouncementById/Query.cs | 1 - .../Announcements/ListAnnouncements/Query.cs | 1 - .../ListAnnouncements/Response.cs | 1 - .../Endpoint.cs | 2 +- .../Handler.cs | 2 +- .../Query.cs | 3 +- .../Response.cs | 3 +- .../Validator.cs | 2 +- .../Challenges/CreateChallenge/Command.cs | 1 - .../DeleteChallengesOfIdentity/Command.cs | 1 - .../Challenges/ExecuteHousekeeping/Command.cs | 1 - .../Challenges/GetChallengeById/Query.cs | 1 - .../src/Devices.Module/DevicesModule.cs | 6 ++ .../Clients/ChangeClientSecret/Command.cs | 1 - .../Clients/ChangeClientSecret/Response.cs | 1 - .../Features/Clients/CreateClient/Command.cs | 1 - .../Features/Clients/CreateClient/Response.cs | 1 - .../Features/Clients/DeleteClient/Command.cs | 1 - .../Features/Clients/GetClient/Query.cs | 1 - .../Features/Clients/ListClients/Query.cs | 1 - .../Features/Clients/ListClients/Response.cs | 1 - .../Features/Clients/UpdateClient/Command.cs | 1 - .../Features/Clients/UpdateClient/Response.cs | 1 - .../Devices/ChangePassword/Command.cs | 1 - .../Features/Devices/DeleteDevice/Command.cs | 1 - .../Devices/ExecuteHousekeeping/Command.cs | 1 - .../Features/Devices/GetActiveDevice/Query.cs | 1 - .../Features/Devices/ListDevices/Query.cs | 1 - .../Features/Devices/ListDevices/Response.cs | 1 - .../Devices/RegisterDevice/Command.cs | 1 - .../Devices/RegisterDevice/Endpoint.cs | 1 - .../Devices/RegisterDevice/Response.cs | 1 - .../Devices/UpdateActiveDevice/Command.cs | 1 - .../CancelDeletionProcess/Command.cs | 1 - .../CancelDeletionProcess/Response.cs | 1 - .../Identities/ChangeFeatureFlags/Command.cs | 1 - .../Identities/CreateIdentity/Command.cs | 1 - .../Identities/CreateIdentity/Endpoint.cs | 1 - .../Identities/CreateIdentity/Response.cs | 1 - .../Identities/DeleteIdentity/Command.cs | 1 - .../GetDeletionProcessAsOwner/Query.cs | 1 - .../GetDeletionProcessAsSupport/Query.cs | 1 - .../Features/Identities/GetIdentity/Query.cs | 1 - .../Identities/GetIdentity/Response.cs | 1 - .../Identities/GetOwnIdentity/Query.cs | 1 - .../Identities/GetOwnIdentity/Response.cs | 1 - .../HandleCompletedDeletionProcess/Command.cs | 1 - .../Command.cs | 1 - .../IsIdentityOfUserDeleted/Query.cs | 1 - .../IsIdentityOfUserDeleted/Response.cs | 1 - .../Query.cs | 1 - .../Response.cs | 1 - .../ListDeletionProcessesAsOwner/Query.cs | 1 - .../ListDeletionProcessesAsOwner/Response.cs | 1 - .../ListDeletionProcessesAsSupport/Query.cs | 1 - .../Response.cs | 1 - .../ListDeletionProcessesAuditLogs/Query.cs | 1 - .../Response.cs | 1 - .../Identities/ListFeatureFlags/Query.cs | 1 - .../Identities/ListFeatureFlags/Response.cs | 1 - .../Identities/ListIdentities/Query.cs | 1 - .../Identities/ListIdentities/Response.cs | 1 - .../Identities/LogDeletionProcess/Command.cs | 1 - .../Command.cs | 1 - .../StartDeletionProcess/Command.cs | 1 - .../StartDeletionProcess/Response.cs | 1 - .../TriggerRipeDeletionProcesses/Command.cs | 1 - .../TriggerRipeDeletionProcesses/Response.cs | 1 - .../Identities/UpdateIdentity/Command.cs | 1 - .../Notifications/SendNotification/Command.cs | 1 - .../DeleteDeviceRegistration/Command.cs | 1 - .../Command.cs | 1 - .../SendTestNotification/Command.cs | 1 - .../UpdateDeviceRegistration/Command.cs | 1 - .../UpdateDeviceRegistration/Response.cs | 1 - .../CreateQueuedForDeletionTier/Command.cs | 1 - .../Features/Tiers/CreateTier/Command.cs | 1 - .../Features/Tiers/CreateTier/Response.cs | 1 - .../Features/Tiers/DeleteTier/Command.cs | 1 - .../Features/Tiers/ListTiers/Query.cs | 1 - .../Features/Tiers/ListTiers/Response.cs | 1 - .../Features/Users/SeedTestUsers/Command.cs | 1 - .../Files/ClaimFileOwnership/Command.cs | 1 - .../Files/ClaimFileOwnership/Endpoint.cs | 1 - .../Files/ClaimFileOwnership/Response.cs | 1 - .../Features/Files/CreateFile/Command.cs | 1 - .../Features/Files/CreateFile/Response.cs | 1 - .../Features/Files/DeleteFile/Command.cs | 1 - .../Files/ExecuteHousekeeping/Command.cs | 1 - .../Features/Files/GetFileContent/Query.cs | 1 - .../Features/Files/GetFileContent/Response.cs | 1 - .../Features/Files/GetFileMetadata/Query.cs | 1 - .../Features/Files/ListFileMetadata/Query.cs | 1 - .../Files/ListFileMetadata/Response.cs | 1 - .../RegenerateFileOwnershipToken/Command.cs | 1 - .../RegenerateFileOwnershipToken/Response.cs | 1 - .../ValidateFileOwnershipToken/Endpoint.cs | 1 - .../Files/ValidateFileOwnershipToken/Query.cs | 1 - .../ValidateFileOwnershipToken/Response.cs | 1 - .../AnonymizeCreatedByOfFiles/Command.cs | 1 - .../DeleteFilesOfIdentity/Command.cs | 1 - Modules/Files/src/Files.Module/FilesModule.cs | 6 ++ .../Features/Messages/GetMessage/Query.cs | 1 - .../Features/Messages/ListMessages/Query.cs | 1 - .../Messages/ListMessages/Response.cs | 1 - .../Features/Messages/SendMessage/Command.cs | 1 - .../Features/Messages/SendMessage/Response.cs | 1 - .../CreateQuotaForIdentity/Command.cs | 1 - .../Identities/DeleteIdentity/Command.cs | 1 - .../DeleteQuotaForIdentity/Command.cs | 1 - .../Features/Identities/GetIdentity/Query.cs | 1 - .../Identities/GetIdentity/Response.cs | 1 - .../Identities/ListQuotasForIdentity/Query.cs | 1 - .../ListQuotasForIdentity/Response.cs | 1 - .../Features/Metrics/ListMetrics/Query.cs | 1 - .../Features/Metrics/ListMetrics/Response.cs | 1 - .../Tiers/CreateQuotaForTier/Command.cs | 1 - .../DeleteTierQuotaDefinition/Command.cs | 1 - .../Features/Tiers/GetTier/Query.cs | 1 - .../SeedQueuedForDeletionTier/Command.cs | 1 - .../Query.cs | 1 - .../Command.cs | 1 - .../Command.cs | 1 - .../CreateRelationshipTemplate/Command.cs | 1 - .../CreateRelationshipTemplate/Response.cs | 1 - .../DeleteRelationshipTemplate/Command.cs | 1 - .../Command.cs | 1 - .../GetRelationshipTemplate/Query.cs | 1 - .../ListRelationshipTemplates/Query.cs | 1 - .../ListRelationshipTemplates/Response.cs | 1 - .../AcceptRelationship/Command.cs | 1 - .../AcceptRelationship/Endpoint.cs | 1 - .../AcceptRelationship/Response.cs | 1 - .../AcceptRelationshipReactivation/Command.cs | 1 - .../Response.cs | 1 - .../CanEstablishRelationship/Query.cs | 1 - .../CanEstablishRelationship/Response.cs | 1 - .../CreateRelationship/Command.cs | 1 - .../CreateRelationship/Response.cs | 1 - .../Command.cs | 1 - .../DecomposeRelationship/Command.cs | 1 - .../DecomposeRelationship/Response.cs | 1 - .../ExecuteHousekeeping/Command.cs | 1 - .../Query.cs | 1 - .../Response.cs | 1 - .../Relationships/GetRelationship/Query.cs | 1 - .../Relationships/ListRelationships/Query.cs | 1 - .../ListRelationships/Response.cs | 1 - .../ListRelationshipsOfIdentity/Query.cs | 1 - .../ListRelationshipsOfIdentity/Response.cs | 1 - .../RejectRelationship/Command.cs | 1 - .../RejectRelationship/Endpoint.cs | 1 - .../RejectRelationship/Response.cs | 1 - .../RejectRelationshipReactivation/Command.cs | 1 - .../Response.cs | 1 - .../Command.cs | 1 - .../Response.cs | 1 - .../RevokeRelationship/Command.cs | 1 - .../RevokeRelationship/Endpoint.cs | 1 - .../RevokeRelationship/Response.cs | 1 - .../RevokeRelationshipReactivation/Command.cs | 1 - .../Response.cs | 1 - .../TerminateRelationship/Command.cs | 1 - .../DeleteDatawalletsOfIdentity/Command.cs | 1 - .../Datawallets/GetDatawallet/Query.cs | 1 - .../Datawallets/ListModifications/Query.cs | 1 - .../Datawallets/ListModifications/Response.cs | 1 - .../PushDatawalletModifications/Command.cs | 1 - .../PushDatawalletModifications/Response.cs | 1 - .../DeleteExternalEventsOfIdentity/Command.cs | 1 - .../DeleteSyncRunsOfIdentity/Command.cs | 1 - .../SyncRuns/ExecuteHousekeeping/Command.cs | 1 - .../Command.cs | 1 - .../Response.cs | 1 - .../FinalizeExternalEventSync/Command.cs | 1 - .../FinalizeExternalEventSync/Response.cs | 1 - .../Features/SyncRuns/GetSyncRunById/Query.cs | 1 - .../ListExternalEventsOfSyncRun/Query.cs | 1 - .../ListExternalEventsOfSyncRun/Response.cs | 1 - .../RefreshExpirationTimeOfSyncRun/Command.cs | 1 - .../Response.cs | 1 - .../Features/SyncRuns/StartSyncRun/Command.cs | 1 - .../SyncRuns/StartSyncRun/Response.cs | 1 - .../SynchronizationModule.cs | 7 ++ .../Features/Tags/ListTags/Query.cs | 1 - .../Features/Tags/ListTags/Response.cs | 1 - .../Command.cs | 1 - .../AnonymizeTokensForIdentity/Command.cs | 1 - .../Features/Tokens/CreateToken/Command.cs | 1 - .../Features/Tokens/CreateToken/Response.cs | 1 - .../Features/Tokens/DeleteToken/Command.cs | 1 - .../Tokens/DeleteTokensOfIdentity/Command.cs | 1 - .../Tokens/ExecuteHousekeeping/Command.cs | 1 - .../Features/Tokens/GetToken/Query.cs | 1 - .../Features/Tokens/ListTokens/Query.cs | 1 - .../Tokens/ListTokensByIdentity/Query.cs | 1 - .../ResetAccessFailedCountOfToken/Command.cs | 1 - .../Features/Tokens/Shared/Response.cs | 1 - .../Tokens/UpdateTokenContent/Command.cs | 1 - .../Tokens/UpdateTokenContent/Endpoint.cs | 1 - .../Tokens/UpdateTokenContent/Response.cs | 1 - .../Tokens/src/Tokens.Module/TokensModule.cs | 6 ++ 212 files changed, 138 insertions(+), 235 deletions(-) create mode 100644 BuildingBlocks/src/BuildingBlocks.API/OpenApi/OpenApiSchemaNames.cs delete mode 100644 BuildingBlocks/src/BuildingBlocks.Application.Abstractions/JsonSchemaNameAttribute.cs create mode 100644 BuildingBlocks/test/BuildingBlocks.API.Tests/OpenApi/OpenApiSchemaNamesTests.cs rename Modules/Announcements/src/Announcements.Module/Features/Announcements/{ListAnnouncementsInLanguage => ListAnnouncementsForActiveIdentityInLanguage}/Endpoint.cs (94%) rename Modules/Announcements/src/Announcements.Module/Features/Announcements/{ListAnnouncementsInLanguage => ListAnnouncementsForActiveIdentityInLanguage}/Handler.cs (95%) rename Modules/Announcements/src/Announcements.Module/Features/Announcements/{ListAnnouncementsInLanguage => ListAnnouncementsForActiveIdentityInLanguage}/Query.cs (53%) rename Modules/Announcements/src/Announcements.Module/Features/Announcements/{ListAnnouncementsInLanguage => ListAnnouncementsForActiveIdentityInLanguage}/Response.cs (78%) rename Modules/Announcements/src/Announcements.Module/Features/Announcements/{ListAnnouncementsInLanguage => ListAnnouncementsForActiveIdentityInLanguage}/Validator.cs (85%) diff --git a/BuildingBlocks/src/BuildingBlocks.API/Extensions/ServiceCollectionExtensions.cs b/BuildingBlocks/src/BuildingBlocks.API/Extensions/ServiceCollectionExtensions.cs index e47a28149b..41c6c87fcf 100644 --- a/BuildingBlocks/src/BuildingBlocks.API/Extensions/ServiceCollectionExtensions.cs +++ b/BuildingBlocks/src/BuildingBlocks.API/Extensions/ServiceCollectionExtensions.cs @@ -2,7 +2,7 @@ using Asp.Versioning.ApiExplorer; using Backbone.BuildingBlocks.API.AspNetCoreIdentityCustomizations; using Backbone.BuildingBlocks.API.Diagnostics; -using Backbone.BuildingBlocks.Application.Abstractions; +using Backbone.BuildingBlocks.API.OpenApi; using Backbone.BuildingBlocks.Infrastructure.EventBus; using Backbone.BuildingBlocks.Infrastructure.Persistence.Database; using Backbone.BuildingBlocks.Module; @@ -184,30 +184,11 @@ public IServiceCollection AddCustomSwaggerUi(SwaggerUiConfiguration swaggerUi, s } }); + services.AddOptions() + .Configure>((options, schemaNames) => options.CustomSchemaIds(schemaNames.Value.GetSchemaId)); + services.AddSwaggerGen(options => { - options.CustomSchemaIds(t => - { - static string GetReadableName(Type type) - { - if (!type.IsGenericType) - { - return (type.GetCustomAttribute()?.Name ?? type.Name) - .Replace("DTO", string.Empty) - .Replace("Command", "Request") - .Replace("Query", "Request"); - } - - var typeName = type.Name - .Replace("HttpResponseEnvelopeResult", "ResponseWrapper") - .Replace("PagedHttpResponseEnvelopeResult", "PagedResponseWrapper"); - var name = $"{typeName[..typeName.IndexOf('`')]}_{string.Join("_", type.GetGenericArguments().Select(GetReadableName))}"; - return name; - } - - return GetReadableName(t); - }); - const string securityDefinitionName = "oauth2"; options.AddSecurityDefinition( diff --git a/BuildingBlocks/src/BuildingBlocks.API/OpenApi/OpenApiSchemaNames.cs b/BuildingBlocks/src/BuildingBlocks.API/OpenApi/OpenApiSchemaNames.cs new file mode 100644 index 0000000000..db23740574 --- /dev/null +++ b/BuildingBlocks/src/BuildingBlocks.API/OpenApi/OpenApiSchemaNames.cs @@ -0,0 +1,36 @@ +namespace Backbone.BuildingBlocks.API.OpenApi; + +public class OpenApiSchemaNames +{ + public Dictionary Overrides { get; } = []; + + public string GetSchemaId(Type type) + { + if (type.IsGenericType) + { + var typeName = type.Name + .Replace("HttpResponseEnvelopeResult", "ResponseWrapper") + .Replace("PagedHttpResponseEnvelopeResult", "PagedResponseWrapper"); + return $"{typeName[..typeName.IndexOf('`')]}_{string.Join("_", type.GetGenericArguments().Select(GetSchemaId))}"; + } + + if (Overrides.TryGetValue(type, out var overrideName)) + return Normalize(overrideName); + + var name = type.Name; + if (type.Namespace is { } ns && ns.StartsWith("Backbone.Modules.", StringComparison.Ordinal) && + ns.Contains(".Module.Features.", StringComparison.Ordinal) && + name is "Command" or "Query" or "Response" or "Request" or "RequestBody" or "Validator") + { + var sliceName = ns[(ns.LastIndexOf('.') + 1)..]; + name = sliceName + (name == "RequestBody" ? "Request" : name); + } + + return Normalize(name); + } + + private static string Normalize(string name) => name + .Replace("DTO", string.Empty) + .Replace("Command", "Request") + .Replace("Query", "Request"); +} diff --git a/BuildingBlocks/src/BuildingBlocks.Application.Abstractions/JsonSchemaNameAttribute.cs b/BuildingBlocks/src/BuildingBlocks.Application.Abstractions/JsonSchemaNameAttribute.cs deleted file mode 100644 index d1e4ee393a..0000000000 --- a/BuildingBlocks/src/BuildingBlocks.Application.Abstractions/JsonSchemaNameAttribute.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Backbone.BuildingBlocks.Application.Abstractions; - -[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct)] -public sealed class JsonSchemaNameAttribute(string name) : Attribute -{ - public string Name { get; } = name; -} diff --git a/BuildingBlocks/test/BuildingBlocks.API.Tests/OpenApi/OpenApiSchemaNamesTests.cs b/BuildingBlocks/test/BuildingBlocks.API.Tests/OpenApi/OpenApiSchemaNamesTests.cs new file mode 100644 index 0000000000..378bcb5e1a --- /dev/null +++ b/BuildingBlocks/test/BuildingBlocks.API.Tests/OpenApi/OpenApiSchemaNamesTests.cs @@ -0,0 +1,65 @@ +using Backbone.BuildingBlocks.API.OpenApi; +using FakeItEasy; + +namespace Backbone.BuildingBlocks.API.Tests.OpenApi; + +public class OpenApiSchemaNamesTests : AbstractTestsBase +{ + [Theory] + [InlineData("Command", "CreateEntityRequest")] + [InlineData("Query", "CreateEntityRequest")] + [InlineData("Response", "CreateEntityResponse")] + [InlineData("RequestBody", "CreateEntityRequest")] + [InlineData("MetadataDTO", "Metadata")] + public void Slice_types_use_the_use_case_name(string typeName, string expected) + { + var type = CreateType("Backbone.Modules.TestModule.Module.Features.Entities.CreateEntity", typeName); + + new OpenApiSchemaNames().GetSchemaId(type).ShouldBe(expected); + } + + [Theory] + [InlineData("Backbone.Modules.TestModule.Domain.Features.CreateEntity", "Response", "Response")] + [InlineData("Backbone.BuildingBlocks.API", "Response", "Response")] + [InlineData("Backbone.Modules.TestModule.Module.Features.Entities.CreateEntity", "ExistingCommand", "ExistingRequest")] + public void Other_types_keep_the_existing_naming(string ns, string typeName, string expected) + { + new OpenApiSchemaNames().GetSchemaId(CreateType(ns, typeName)).ShouldBe(expected); + } + + [Fact] + public void Historical_names_override_the_convention() + { + var type = CreateType("Backbone.Modules.TestModule.Module.Features.Entities.ClaimEntity", "RequestBody"); + var names = new OpenApiSchemaNames(); + names.Overrides[type] = "ClaimRequest"; + + names.GetSchemaId(type).ShouldBe("ClaimRequest"); + } + + [Theory] + [InlineData(typeof(HttpResponseEnvelopeResult), "ResponseWrapper_String")] + [InlineData(typeof(PagedHttpResponseEnvelope), "PagedHttpResponseEnvelope_String")] + [InlineData(typeof(Dictionary>), "Dictionary_String_List_Int32")] + public void Generic_types_keep_the_existing_wrapper_names(Type type, string expected) + { + new OpenApiSchemaNames().GetSchemaId(type).ShouldBe(expected); + } + + [Fact] + public void Generic_arguments_use_historical_names() + { + var names = new OpenApiSchemaNames(); + names.Overrides[typeof(string)] = "HistoricalResponse"; + + names.GetSchemaId(typeof(HttpResponseEnvelopeResult)).ShouldBe("ResponseWrapper_HistoricalResponse"); + } + + private static Type CreateType(string ns, string name) + { + var type = A.Fake(); + A.CallTo(() => type.Namespace).Returns(ns); + A.CallTo(() => type.Name).Returns(name); + return type; + } +} diff --git a/Modules/Announcements/src/Announcements.Module/AnnouncementsEndpointExtensions.cs b/Modules/Announcements/src/Announcements.Module/AnnouncementsEndpointExtensions.cs index 54b19119e6..86a5773274 100644 --- a/Modules/Announcements/src/Announcements.Module/AnnouncementsEndpointExtensions.cs +++ b/Modules/Announcements/src/Announcements.Module/AnnouncementsEndpointExtensions.cs @@ -1,5 +1,5 @@ using Backbone.BuildingBlocks.API.MinimalApi; -using Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncementsInLanguage; +using Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncementsForActiveIdentityInLanguage; using Microsoft.AspNetCore.Routing; using OpenIddict.Validation.AspNetCore; diff --git a/Modules/Announcements/src/Announcements.Module/AnnouncementsModule.cs b/Modules/Announcements/src/Announcements.Module/AnnouncementsModule.cs index 6092b20036..3c8c075115 100644 --- a/Modules/Announcements/src/Announcements.Module/AnnouncementsModule.cs +++ b/Modules/Announcements/src/Announcements.Module/AnnouncementsModule.cs @@ -1,9 +1,11 @@ using Backbone.BuildingBlocks.API.Extensions; +using Backbone.BuildingBlocks.API.OpenApi; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Application.MediatR; using Backbone.BuildingBlocks.Module; using Backbone.Modules.Announcements.Infrastructure; using Backbone.Modules.Announcements.Infrastructure.Persistence.Database; +using Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncementsForActiveIdentityInLanguage; using FluentValidation; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/CreateAnnouncement/Command.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/CreateAnnouncement/Command.cs index a9d1bbbb13..8305c05dfd 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/CreateAnnouncement/Command.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/CreateAnnouncement/Command.cs @@ -4,7 +4,6 @@ namespace Backbone.Modules.Announcements.Module.Features.Announcements.CreateAnnouncement; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateAnnouncementCommand")] public class Command : IRequest { public required AnnouncementSeverity Severity { get; set; } diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementById/Command.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementById/Command.cs index d041405974..6327490b13 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementById/Command.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementById/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementById; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteAnnouncementByIdCommand")] public class Command : IRequest { public required string Id { get; init; } diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementRecipients/Command.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementRecipients/Command.cs index f547531acf..31169b6410 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementRecipients/Command.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/DeleteAnnouncementRecipients/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Announcements.Module.Features.Announcements.DeleteAnnouncementRecipients; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteAnnouncementRecipientsCommand")] public record Command : IRequest { public required string IdentityAddress { get; init; } diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ExecuteHousekeeping/Command.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ExecuteHousekeeping/Command.cs index 6d98859207..7cf17c2ccc 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ExecuteHousekeeping/Command.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ExecuteHousekeeping/Command.cs @@ -2,5 +2,4 @@ namespace Backbone.Modules.Announcements.Module.Features.Announcements.ExecuteHousekeeping; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ExecuteHousekeepingCommand")] public class Command : IRequest; diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/GetAnnouncementById/Query.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/GetAnnouncementById/Query.cs index 5348b847d4..8af8541ae1 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/GetAnnouncementById/Query.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/GetAnnouncementById/Query.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Announcements.Module.Features.Announcements.GetAnnouncementById; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetAnnouncementByIdQuery")] public class Query : IRequest { public required string Id { get; init; } diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Query.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Query.cs index 03bfba8490..f845618f73 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Query.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Query.cs @@ -2,5 +2,4 @@ namespace Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncements; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListAnnouncementsQuery")] public class Query : IRequest; diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Response.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Response.cs index 9514400c9a..b394706eb1 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Response.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncements/Response.cs @@ -4,7 +4,6 @@ namespace Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncements; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListAnnouncementsResponse")] public class Response : CollectionResponseBase { public Response(IEnumerable items) : base(items.Select(a => new AnnouncementDTO(a))) diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Endpoint.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsForActiveIdentityInLanguage/Endpoint.cs similarity index 94% rename from Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Endpoint.cs rename to Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsForActiveIdentityInLanguage/Endpoint.cs index 50b060c575..e390de9c2a 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Endpoint.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsForActiveIdentityInLanguage/Endpoint.cs @@ -6,7 +6,7 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Routing; -namespace Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncementsInLanguage; +namespace Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncementsForActiveIdentityInLanguage; internal static class Endpoint { diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Handler.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsForActiveIdentityInLanguage/Handler.cs similarity index 95% rename from Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Handler.cs rename to Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsForActiveIdentityInLanguage/Handler.cs index e7f7990462..e2c5417bc2 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Handler.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsForActiveIdentityInLanguage/Handler.cs @@ -4,7 +4,7 @@ using Backbone.Modules.Announcements.Domain.Entities; using MediatR; -namespace Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncementsInLanguage; +namespace Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncementsForActiveIdentityInLanguage; public class Handler : IRequestHandler { diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Query.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsForActiveIdentityInLanguage/Query.cs similarity index 53% rename from Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Query.cs rename to Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsForActiveIdentityInLanguage/Query.cs index 07deab05fc..dac6ed9f3b 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Query.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsForActiveIdentityInLanguage/Query.cs @@ -1,8 +1,7 @@ using MediatR; -namespace Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncementsInLanguage; +namespace Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncementsForActiveIdentityInLanguage; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListAnnouncementsForActiveIdentityInLanguageQuery")] public class Query : IRequest { public required string Language { get; init; } diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Response.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsForActiveIdentityInLanguage/Response.cs similarity index 78% rename from Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Response.cs rename to Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsForActiveIdentityInLanguage/Response.cs index 2c235c22fc..e0b786f0c0 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Response.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsForActiveIdentityInLanguage/Response.cs @@ -2,9 +2,8 @@ using Backbone.Modules.Announcements.Domain.Entities; using Backbone.Modules.Announcements.Module.Features.Announcements.Shared; -namespace Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncementsInLanguage; +namespace Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncementsForActiveIdentityInLanguage; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListAnnouncementsInLanguageResponse")] public class Response : CollectionResponseBase { public Response(IEnumerable items, AnnouncementLanguage language) : base(items.Select(a => new SingleLanguageAnnouncementDTO(a, language))) diff --git a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Validator.cs b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsForActiveIdentityInLanguage/Validator.cs similarity index 85% rename from Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Validator.cs rename to Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsForActiveIdentityInLanguage/Validator.cs index c3c467b62d..9051894848 100644 --- a/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsInLanguage/Validator.cs +++ b/Modules/Announcements/src/Announcements.Module/Features/Announcements/ListAnnouncementsForActiveIdentityInLanguage/Validator.cs @@ -1,7 +1,7 @@ using Backbone.BuildingBlocks.Application.FluentValidation; using FluentValidation; -namespace Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncementsInLanguage; +namespace Backbone.Modules.Announcements.Module.Features.Announcements.ListAnnouncementsForActiveIdentityInLanguage; public class Validator : AbstractValidator { diff --git a/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Command.cs b/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Command.cs index 1080249530..52f16919dc 100644 --- a/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Command.cs +++ b/Modules/Challenges/src/Challenges.Module/Features/Challenges/CreateChallenge/Command.cs @@ -3,5 +3,4 @@ namespace Backbone.Modules.Challenges.Module.Features.Challenges.CreateChallenge; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateChallengeCommand")] public class Command : IRequest; diff --git a/Modules/Challenges/src/Challenges.Module/Features/Challenges/DeleteChallengesOfIdentity/Command.cs b/Modules/Challenges/src/Challenges.Module/Features/Challenges/DeleteChallengesOfIdentity/Command.cs index 893422a376..59f054a81a 100644 --- a/Modules/Challenges/src/Challenges.Module/Features/Challenges/DeleteChallengesOfIdentity/Command.cs +++ b/Modules/Challenges/src/Challenges.Module/Features/Challenges/DeleteChallengesOfIdentity/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Challenges.Module.Features.Challenges.DeleteChallengesOfIdentity; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteChallengesOfIdentityCommand")] public class Command : IRequest { public required string IdentityAddress { get; init; } diff --git a/Modules/Challenges/src/Challenges.Module/Features/Challenges/ExecuteHousekeeping/Command.cs b/Modules/Challenges/src/Challenges.Module/Features/Challenges/ExecuteHousekeeping/Command.cs index ef2f8ec372..2703ca7e35 100644 --- a/Modules/Challenges/src/Challenges.Module/Features/Challenges/ExecuteHousekeeping/Command.cs +++ b/Modules/Challenges/src/Challenges.Module/Features/Challenges/ExecuteHousekeeping/Command.cs @@ -2,5 +2,4 @@ namespace Backbone.Modules.Challenges.Module.Features.Challenges.ExecuteHousekeeping; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ExecuteHousekeepingCommand")] public class Command : IRequest; diff --git a/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Query.cs b/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Query.cs index 1d70e11575..5df8b7923f 100644 --- a/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Query.cs +++ b/Modules/Challenges/src/Challenges.Module/Features/Challenges/GetChallengeById/Query.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Challenges.Module.Features.Challenges.GetChallengeById; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetChallengeByIdQuery")] public class Query : IRequest { public required string Id { get; init; } diff --git a/Modules/Devices/src/Devices.Module/DevicesModule.cs b/Modules/Devices/src/Devices.Module/DevicesModule.cs index ab13e676cb..c2f313c929 100644 --- a/Modules/Devices/src/Devices.Module/DevicesModule.cs +++ b/Modules/Devices/src/Devices.Module/DevicesModule.cs @@ -1,5 +1,6 @@ using System.Reflection; using Backbone.BuildingBlocks.API.Extensions; +using Backbone.BuildingBlocks.API.OpenApi; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Application.MediatR; using Backbone.BuildingBlocks.Module; @@ -22,6 +23,11 @@ public class DevicesModule : AbstractModule(names => + { + names.Overrides[typeof(Features.Identities.ListDeletionProcessesAsSupport.Response)] = "GetDeletionProcessesAsSupportResponse"; + }); + var applicationConfiguration = rawModuleConfiguration.GetSection("Application"); services.ConfigureAndValidate(applicationConfiguration.Bind); diff --git a/Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Command.cs b/Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Command.cs index 6f3e9db0f8..ce7e0e1d02 100644 --- a/Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.Clients.ChangeClientSecret; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ChangeClientSecretCommand")] public class Command : IRequest { public required string ClientId { get; set; } diff --git a/Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Response.cs b/Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Response.cs index 33c302b3ed..2c16ee94be 100644 --- a/Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/ChangeClientSecret/Response.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.Clients.ChangeClientSecret; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ChangeClientSecretResponse")] public class Response { public Response(OAuthClient client, string clientSecret) diff --git a/Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Command.cs b/Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Command.cs index 5788f9a73a..dcd13e7417 100644 --- a/Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.Clients.CreateClient; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateClientCommand")] public class Command : IRequest { public string? ClientId { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Response.cs b/Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Response.cs index 90024b5944..e5ad73aacc 100644 --- a/Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/CreateClient/Response.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.Clients.CreateClient; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateClientResponse")] public class Response { public Response(OAuthClient client, string clientSecret) diff --git a/Modules/Devices/src/Devices.Module/Features/Clients/DeleteClient/Command.cs b/Modules/Devices/src/Devices.Module/Features/Clients/DeleteClient/Command.cs index 2f2df44fc6..22c0f75740 100644 --- a/Modules/Devices/src/Devices.Module/Features/Clients/DeleteClient/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/DeleteClient/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.Clients.DeleteClient; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteClientCommand")] public class Command : IRequest { public required string ClientId { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Clients/GetClient/Query.cs b/Modules/Devices/src/Devices.Module/Features/Clients/GetClient/Query.cs index d02fa5c579..26a132e7b2 100644 --- a/Modules/Devices/src/Devices.Module/Features/Clients/GetClient/Query.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/GetClient/Query.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Devices.Module.Features.Clients.GetClient; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetClientQuery")] public class Query : IRequest { public required string Id { get; set; } diff --git a/Modules/Devices/src/Devices.Module/Features/Clients/ListClients/Query.cs b/Modules/Devices/src/Devices.Module/Features/Clients/ListClients/Query.cs index 07b139d33b..1eff8e0ce1 100644 --- a/Modules/Devices/src/Devices.Module/Features/Clients/ListClients/Query.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/ListClients/Query.cs @@ -2,5 +2,4 @@ namespace Backbone.Modules.Devices.Module.Features.Clients.ListClients; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListClientsQuery")] public class Query : IRequest; diff --git a/Modules/Devices/src/Devices.Module/Features/Clients/ListClients/Response.cs b/Modules/Devices/src/Devices.Module/Features/Clients/ListClients/Response.cs index d0d0156e2f..66fbf33989 100644 --- a/Modules/Devices/src/Devices.Module/Features/Clients/ListClients/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/ListClients/Response.cs @@ -4,7 +4,6 @@ namespace Backbone.Modules.Devices.Module.Features.Clients.ListClients; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListClientsResponse")] public class Response : CollectionResponseBase { public Response(IEnumerable clients, IReadOnlyDictionary numberOfIdentitiesByClient) : base(clients.Select(client => diff --git a/Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Command.cs b/Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Command.cs index d3ab721847..9a86ebebd1 100644 --- a/Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.Clients.UpdateClient; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("UpdateClientCommand")] public class Command : IRequest { public required string ClientId { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Response.cs b/Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Response.cs index 53e1757952..0824f6fa7d 100644 --- a/Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Clients/UpdateClient/Response.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.Clients.UpdateClient; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("UpdateClientResponse")] public class Response { public Response(OAuthClient client) diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Command.cs b/Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Command.cs index f55f613f2a..ac00d80d5d 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/ChangePassword/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.Devices.ChangePassword; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ChangePasswordCommand")] public class Command : IRequest { public required string OldPassword { get; set; } diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Command.cs b/Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Command.cs index 20755edb84..e1ddd7e5c9 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/DeleteDevice/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.Devices.DeleteDevice; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteDeviceCommand")] public class Command : IRequest { public required string DeviceId { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/ExecuteHousekeeping/Command.cs b/Modules/Devices/src/Devices.Module/Features/Devices/ExecuteHousekeeping/Command.cs index 1dbea77393..0206aa8996 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/ExecuteHousekeeping/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/ExecuteHousekeeping/Command.cs @@ -2,5 +2,4 @@ namespace Backbone.Modules.Devices.Module.Features.Devices.ExecuteHousekeeping; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ExecuteHousekeepingCommand")] public class Command : IRequest; diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/GetActiveDevice/Query.cs b/Modules/Devices/src/Devices.Module/Features/Devices/GetActiveDevice/Query.cs index 2c85aef4d1..07d0a883d0 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/GetActiveDevice/Query.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/GetActiveDevice/Query.cs @@ -3,5 +3,4 @@ namespace Backbone.Modules.Devices.Module.Features.Devices.GetActiveDevice; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetActiveDeviceQuery")] public class Query : IRequest; diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Query.cs b/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Query.cs index 0953e512c3..fcc1b8a3eb 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Query.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Query.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Devices.Module.Features.Devices.ListDevices; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListDevicesQuery")] public class Query : IRequest { public required PaginationFilter PaginationFilter { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Response.cs b/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Response.cs index 1e0ec309e8..d240ba0558 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/ListDevices/Response.cs @@ -5,7 +5,6 @@ namespace Backbone.Modules.Devices.Module.Features.Devices.ListDevices; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListDevicesResponse")] public class Response : PagedResponse { public Response(DbPaginationResult dbPaginationResult, PaginationFilter previousPaginationFilter) : base(dbPaginationResult.ItemsOnPage.Select(d => new DeviceDTO(d)), diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Command.cs b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Command.cs index 0660ffb273..c57b045bbe 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Command.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Devices.Module.Features.Devices.RegisterDevice; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RegisterDeviceCommand")] public class Command : IRequest { public required string DevicePassword { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Endpoint.cs index 7724f646a1..9b2cc761d0 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Endpoint.cs @@ -37,7 +37,6 @@ private static async Task Handle([FromBody] RequestBody body, IMediator } } -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RegisterDeviceRequest")] public class RequestBody { public required string DevicePassword { get; set; } diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Response.cs b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Response.cs index d60386e237..4f8d7a1ff5 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/RegisterDevice/Response.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.Devices.RegisterDevice; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RegisterDeviceResponse")] public class Response { public Response(Device device) diff --git a/Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Command.cs b/Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Command.cs index 6b4b067f26..c7247a10ce 100644 --- a/Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Devices/UpdateActiveDevice/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.Devices.UpdateActiveDevice; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("UpdateActiveDeviceCommand")] public class Command : IRequest { public required string CommunicationLanguage { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Command.cs b/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Command.cs index 0cd0266d14..2572293767 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.CancelDeletionProcess; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CancelDeletionProcessCommand")] public class Command : IRequest { public required string DeletionProcessId { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Response.cs b/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Response.cs index bf15e26d4b..666f96c01c 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/CancelDeletionProcess/Response.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.CancelDeletionProcess; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CancelDeletionProcessResponse")] public class Response : IdentityDeletionProcessOverviewDTO { public Response(IdentityDeletionProcess deletionProcess) : base(deletionProcess) diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Command.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Command.cs index df3af6f0b8..2a7fe91389 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ChangeFeatureFlags/Command.cs @@ -2,5 +2,4 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ChangeFeatureFlags; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ChangeFeatureFlagsCommand")] public class Command : Dictionary, IRequest; diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Command.cs b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Command.cs index bf0d570836..3aed897645 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Command.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.CreateIdentity; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateIdentityCommand")] public class Command : IRequest { public required string ClientId { get; set; } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Endpoint.cs b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Endpoint.cs index 32c848bc15..4ec8a8567c 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Endpoint.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Endpoint.cs @@ -50,7 +50,6 @@ private static async Task Handle([FromBody] RequestBody request, IOAuth } } -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateIdentityRequest")] public class RequestBody { public required string ClientId { get; set; } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Response.cs b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Response.cs index 3e74912737..5cc3842be7 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/CreateIdentity/Response.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.CreateIdentity; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateIdentityResponse")] public class Response { public Response(Identity identity) diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/Command.cs b/Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/Command.cs index c72a841a12..641181471c 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/DeleteIdentity/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.DeleteIdentity; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteIdentityCommand")] public class Command : IRequest { public required string IdentityAddress { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Query.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Query.cs index 31e0cae80c..e0272ec2e4 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Query.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsOwner/Query.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsOwner; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetDeletionProcessAsOwnerQuery")] public class Query : IRequest { public required string Id { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsSupport/Query.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsSupport/Query.cs index a567fd57f3..5627b11208 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsSupport/Query.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetDeletionProcessAsSupport/Query.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.GetDeletionProcessAsSupport; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetDeletionProcessAsSupportQuery")] public class Query : IRequest { public required string IdentityAddress { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Query.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Query.cs index 7dc3891286..371d37c336 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Query.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Query.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.GetIdentity; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetIdentityQuery")] public class Query : IRequest { public required string Address { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Response.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Response.cs index 0bd0137550..37b92094ba 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetIdentity/Response.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.GetIdentity; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetIdentityResponse")] public class Response : IdentitySummaryDTO { public Response(Identity identity) : base(identity) { } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Query.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Query.cs index f186c31915..e559ea9dc6 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Query.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Query.cs @@ -2,5 +2,4 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.GetOwnIdentity; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetOwnIdentityQuery")] public class Query : IRequest; diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Response.cs b/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Response.cs index a0185d53e7..60a067b326 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/GetOwnIdentity/Response.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.GetOwnIdentity; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetOwnIdentityResponse")] public class Response { public Response(Identity identity) diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/HandleCompletedDeletionProcess/Command.cs b/Modules/Devices/src/Devices.Module/Features/Identities/HandleCompletedDeletionProcess/Command.cs index 5585f34890..4df75b7211 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/HandleCompletedDeletionProcess/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/HandleCompletedDeletionProcess/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.HandleCompletedDeletionProcess; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("HandleCompletedDeletionProcessCommand")] public class Command : IRequest { public required string IdentityAddress { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/HandleErrorDuringIdentityDeletion/Command.cs b/Modules/Devices/src/Devices.Module/Features/Identities/HandleErrorDuringIdentityDeletion/Command.cs index e6731371a6..b9b66ca179 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/HandleErrorDuringIdentityDeletion/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/HandleErrorDuringIdentityDeletion/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.HandleErrorDuringIdentityDeletion; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("HandleErrorDuringIdentityDeletionCommand")] public class Command : IRequest { public required string IdentityAddress { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Query.cs b/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Query.cs index 0941c89f2e..9d239d4868 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Query.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Query.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.IsIdentityOfUserDeleted; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("IsIdentityOfUserDeletedQuery")] public class Query : IRequest { public required string Username { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Response.cs b/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Response.cs index 971e1792ed..af6c411573 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/IsIdentityOfUserDeleted/Response.cs @@ -1,6 +1,5 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.IsIdentityOfUserDeleted; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("IsIdentityOfUserDeletedResponse")] public class Response { public Response(bool isDeleted, DateTime? deletionDate) diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Query.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Query.cs index 785cda90fc..0fd14242bf 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Query.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Query.cs @@ -2,5 +2,4 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListAddressesOfIdentitiesWithDeletionProcessInStatusDeletingQuery")] public class Query : IRequest; diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Response.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Response.cs index b7b09f3cc4..7cb7b78a3f 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting/Response.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListAddressesOfIdentitiesWithDeletionProcessInStatusDeleting; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListAddressesOfIdentitiesWithDeletionProcessInStatusDeletingResponse")] public class Response { public Response(IEnumerable identityAddresses) diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Query.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Query.cs index 0af18217da..0d36a5902a 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Query.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Query.cs @@ -2,5 +2,4 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsOwner; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListDeletionProcessesAsOwnerQuery")] public class Query : IRequest; diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Response.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Response.cs index af4a01431b..cb54a76a4b 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsOwner/Response.cs @@ -4,7 +4,6 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsOwner; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListDeletionProcessesAsOwnerResponse")] public class Response : CollectionResponseBase { public Response(IEnumerable processes) diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Query.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Query.cs index 6f605f13ff..f8b3e7ee3c 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Query.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Query.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsSupport; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListDeletionProcessesAsSupportQuery")] public class Query : IRequest { public required string IdentityAddress { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Response.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Response.cs index 29241b0735..22ab65e1a5 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAsSupport/Response.cs @@ -4,7 +4,6 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAsSupport; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetDeletionProcessesAsSupportResponse")] public class Response : CollectionResponseBase { public Response(IEnumerable processes) diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Query.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Query.cs index f21792a8a5..d46b536b83 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Query.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Query.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListDeletionProcessesAuditLogsQuery")] public class Query : IRequest { public required string IdentityAddress { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Response.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Response.cs index 2243be798f..c1ebfb5d65 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListDeletionProcessesAuditLogs/Response.cs @@ -4,7 +4,6 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListDeletionProcessesAuditLogs; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListDeletionProcessesAuditLogsResponse")] public class Response : CollectionResponseBase { public Response(IEnumerable processes) diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Query.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Query.cs index 1c115d8293..881b19d82d 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Query.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Query.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListFeatureFlags; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListFeatureFlagsQuery")] public class Query : IRequest { public required string IdentityAddress { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Response.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Response.cs index 964cfb8eef..9748285974 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListFeatureFlags/Response.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListFeatureFlags; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListFeatureFlagsResponse")] public class Response : Dictionary { public Response(FeatureFlagSet featureFlags) diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Query.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Query.cs index aea9047001..ac7f980abd 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Query.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Query.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListIdentities; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListIdentitiesQuery")] public class Query : IRequest { public required List? Addresses { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Response.cs b/Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Response.cs index a42740e41c..85e955e369 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/ListIdentities/Response.cs @@ -4,7 +4,6 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.ListIdentities; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListIdentitiesResponse")] public class Response : CollectionResponseBase { public Response(IEnumerable items) : base(items.Select(i => new IdentitySummaryDTO(i))) diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/LogDeletionProcess/Command.cs b/Modules/Devices/src/Devices.Module/Features/Identities/LogDeletionProcess/Command.cs index 4a161da6c5..88e8e600cc 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/LogDeletionProcess/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/LogDeletionProcess/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.LogDeletionProcess; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("LogDeletionProcessCommand")] public class Command : IRequest { public required string IdentityAddress { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/SendDeletionProcessGracePeriodReminders/Command.cs b/Modules/Devices/src/Devices.Module/Features/Identities/SendDeletionProcessGracePeriodReminders/Command.cs index 4ce47c79a8..0259d99271 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/SendDeletionProcessGracePeriodReminders/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/SendDeletionProcessGracePeriodReminders/Command.cs @@ -2,5 +2,4 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.SendDeletionProcessGracePeriodReminders; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("SendDeletionProcessGracePeriodRemindersCommand")] public class Command : IRequest; diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Command.cs b/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Command.cs index 1bb83e1065..27d3f2dd2f 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.StartDeletionProcess; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("StartDeletionProcessCommand")] public class Command : IRequest { public double? LengthOfGracePeriodInDays { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Response.cs b/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Response.cs index fd5b1ff912..867f602e95 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/StartDeletionProcess/Response.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.StartDeletionProcess; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("StartDeletionProcessResponse")] public class Response : IdentityDeletionProcessOverviewDTO { public Response(IdentityDeletionProcess deletionProcess) : base(deletionProcess) diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/TriggerRipeDeletionProcesses/Command.cs b/Modules/Devices/src/Devices.Module/Features/Identities/TriggerRipeDeletionProcesses/Command.cs index eb5c210030..2cd7d0ecc1 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/TriggerRipeDeletionProcesses/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/TriggerRipeDeletionProcesses/Command.cs @@ -2,5 +2,4 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.TriggerRipeDeletionProcesses; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("TriggerRipeDeletionProcessesCommand")] public class Command : IRequest; diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/TriggerRipeDeletionProcesses/Response.cs b/Modules/Devices/src/Devices.Module/Features/Identities/TriggerRipeDeletionProcesses/Response.cs index dbe4b18e27..f358e68fd1 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/TriggerRipeDeletionProcesses/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/TriggerRipeDeletionProcesses/Response.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.TriggerRipeDeletionProcesses; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("TriggerRipeDeletionProcessesResponse")] public class Response { public Response() diff --git a/Modules/Devices/src/Devices.Module/Features/Identities/UpdateIdentity/Command.cs b/Modules/Devices/src/Devices.Module/Features/Identities/UpdateIdentity/Command.cs index b679c1a663..63374363eb 100644 --- a/Modules/Devices/src/Devices.Module/Features/Identities/UpdateIdentity/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Identities/UpdateIdentity/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.Identities.UpdateIdentity; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("UpdateIdentityCommand")] public class Command : IRequest { public required string Address { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Command.cs b/Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Command.cs index 98f630a92c..7019e3476e 100644 --- a/Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Notifications/SendNotification/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.Notifications.SendNotification; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("SendNotificationCommand")] public class Command : IRequest { public required string[] Recipients { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeleteDeviceRegistration/Command.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeleteDeviceRegistration/Command.cs index cdd26e5ff9..e25619b69f 100644 --- a/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeleteDeviceRegistration/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeleteDeviceRegistration/Command.cs @@ -2,5 +2,4 @@ namespace Backbone.Modules.Devices.Module.Features.PushNotifications.DeleteDeviceRegistration; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteDeviceRegistrationCommand")] public class Command : IRequest; diff --git a/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeletePnsRegistrationsOfIdentity/Command.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeletePnsRegistrationsOfIdentity/Command.cs index fa07501d5a..9002a42424 100644 --- a/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeletePnsRegistrationsOfIdentity/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/DeletePnsRegistrationsOfIdentity/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.PushNotifications.DeletePnsRegistrationsOfIdentity; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeletePnsRegistrationsOfIdentityCommand")] public class Command : IRequest { public required string IdentityAddress { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Command.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Command.cs index 5c69a22b5d..f044c15000 100644 --- a/Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/SendTestNotification/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.PushNotifications.SendTestNotification; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("SendTestNotificationCommand")] public class Command : IRequest { public required object Data { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Command.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Command.cs index a513964aa4..8ea01351d3 100644 --- a/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.PushNotifications.UpdateDeviceRegistration; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("UpdateDeviceRegistrationCommand")] public class Command : IRequest { public required string Platform { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Response.cs b/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Response.cs index 2e9affc9af..944763d467 100644 --- a/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/PushNotifications/UpdateDeviceRegistration/Response.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.PushNotifications.UpdateDeviceRegistration; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("UpdateDeviceRegistrationResponse")] public class Response { public Response(DevicePushIdentifier devicePushIdentifier) diff --git a/Modules/Devices/src/Devices.Module/Features/Tiers/CreateQueuedForDeletionTier/Command.cs b/Modules/Devices/src/Devices.Module/Features/Tiers/CreateQueuedForDeletionTier/Command.cs index aa40cb05b2..bd58d083c7 100644 --- a/Modules/Devices/src/Devices.Module/Features/Tiers/CreateQueuedForDeletionTier/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Tiers/CreateQueuedForDeletionTier/Command.cs @@ -2,5 +2,4 @@ namespace Backbone.Modules.Devices.Module.Features.Tiers.CreateQueuedForDeletionTier; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateQueuedForDeletionTierCommand")] public class Command : IRequest; diff --git a/Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Command.cs b/Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Command.cs index fdc85e6a6d..90ed658167 100644 --- a/Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.Tiers.CreateTier; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateTierCommand")] public class Command : IRequest { public required string Name { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Response.cs b/Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Response.cs index 246febe8dc..601f063d0f 100644 --- a/Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Tiers/CreateTier/Response.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.Tiers.CreateTier; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateTierResponse")] public class Response : TierDTO { public Response(string id, string name) : base(id, name) diff --git a/Modules/Devices/src/Devices.Module/Features/Tiers/DeleteTier/Command.cs b/Modules/Devices/src/Devices.Module/Features/Tiers/DeleteTier/Command.cs index 40b35efc74..aa443f4ce8 100644 --- a/Modules/Devices/src/Devices.Module/Features/Tiers/DeleteTier/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Tiers/DeleteTier/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Devices.Module.Features.Tiers.DeleteTier; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteTierCommand")] public class Command : IRequest { public required string TierId { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Tiers/ListTiers/Query.cs b/Modules/Devices/src/Devices.Module/Features/Tiers/ListTiers/Query.cs index 80cb6d4575..be1d5de19c 100644 --- a/Modules/Devices/src/Devices.Module/Features/Tiers/ListTiers/Query.cs +++ b/Modules/Devices/src/Devices.Module/Features/Tiers/ListTiers/Query.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Devices.Module.Features.Tiers.ListTiers; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListTiersQuery")] public class Query : IRequest { public required PaginationFilter PaginationFilter { get; init; } diff --git a/Modules/Devices/src/Devices.Module/Features/Tiers/ListTiers/Response.cs b/Modules/Devices/src/Devices.Module/Features/Tiers/ListTiers/Response.cs index d033f10a4c..a069057e26 100644 --- a/Modules/Devices/src/Devices.Module/Features/Tiers/ListTiers/Response.cs +++ b/Modules/Devices/src/Devices.Module/Features/Tiers/ListTiers/Response.cs @@ -5,7 +5,6 @@ namespace Backbone.Modules.Devices.Module.Features.Tiers.ListTiers; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListTiersResponse")] public class Response : PagedResponse { public Response(DbPaginationResult dbPaginationResult, PaginationFilter previousPaginationFilter) : base(dbPaginationResult.ItemsOnPage.Select(el => new TierDTO(el.Id, el.Name)), diff --git a/Modules/Devices/src/Devices.Module/Features/Users/SeedTestUsers/Command.cs b/Modules/Devices/src/Devices.Module/Features/Users/SeedTestUsers/Command.cs index 9885b114bc..75f61fcf71 100644 --- a/Modules/Devices/src/Devices.Module/Features/Users/SeedTestUsers/Command.cs +++ b/Modules/Devices/src/Devices.Module/Features/Users/SeedTestUsers/Command.cs @@ -2,5 +2,4 @@ namespace Backbone.Modules.Devices.Module.Features.Users.SeedTestUsers; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("SeedTestUsersCommand")] public class Command : IRequest; diff --git a/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Command.cs b/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Command.cs index ac9794ccd7..a12fd05c54 100644 --- a/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Command.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Files.Module.Features.Files.ClaimFileOwnership; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ClaimFileOwnershipCommand")] public class Command : IRequest { public required string FileId { get; init; } diff --git a/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Endpoint.cs b/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Endpoint.cs index 115ebc5cd7..45483a0ac5 100644 --- a/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Endpoint.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Endpoint.cs @@ -27,7 +27,6 @@ private static async Task Handle([FromRoute] string fileId, [FromBody] } } -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ClaimFileRequest")] public class RequestBody { public required string OwnershipToken { get; init; } diff --git a/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Response.cs b/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Response.cs index 1d7ab98867..0455f3aba0 100644 --- a/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Response.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ClaimFileOwnership/Response.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Files.Module.Features.Files.ClaimFileOwnership; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ClaimFileOwnershipResponse")] public class Response { public Response(File file) diff --git a/Modules/Files/src/Files.Module/Features/Files/CreateFile/Command.cs b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Command.cs index 6df812b021..057ed506f0 100644 --- a/Modules/Files/src/Files.Module/Features/Files/CreateFile/Command.cs +++ b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Command.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Files.Module.Features.Files.CreateFile; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateFileCommand")] [ApplyQuotasForMetrics("NumberOfFiles", "UsedFileStorageSpace")] public class Command : IRequest { diff --git a/Modules/Files/src/Files.Module/Features/Files/CreateFile/Response.cs b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Response.cs index b7c7de2570..db03a0a0f9 100644 --- a/Modules/Files/src/Files.Module/Features/Files/CreateFile/Response.cs +++ b/Modules/Files/src/Files.Module/Features/Files/CreateFile/Response.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Files.Module.Features.Files.CreateFile; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateFileResponse")] public class Response { public Response(File file) diff --git a/Modules/Files/src/Files.Module/Features/Files/DeleteFile/Command.cs b/Modules/Files/src/Files.Module/Features/Files/DeleteFile/Command.cs index 8c5094253d..938e08cac0 100644 --- a/Modules/Files/src/Files.Module/Features/Files/DeleteFile/Command.cs +++ b/Modules/Files/src/Files.Module/Features/Files/DeleteFile/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Files.Module.Features.Files.DeleteFile; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteFileCommand")] public class Command : IRequest { public required string Id { get; init; } diff --git a/Modules/Files/src/Files.Module/Features/Files/ExecuteHousekeeping/Command.cs b/Modules/Files/src/Files.Module/Features/Files/ExecuteHousekeeping/Command.cs index 1d9669f4f7..154f69ccbe 100644 --- a/Modules/Files/src/Files.Module/Features/Files/ExecuteHousekeeping/Command.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ExecuteHousekeeping/Command.cs @@ -2,5 +2,4 @@ namespace Backbone.Modules.Files.Module.Features.Files.ExecuteHousekeeping; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ExecuteHousekeepingCommand")] public class Command : IRequest; diff --git a/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Query.cs b/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Query.cs index c07303b518..43c9a12e3d 100644 --- a/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Query.cs +++ b/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Query.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Files.Module.Features.Files.GetFileContent; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetFileContentQuery")] public class Query : IRequest { public required string Id { get; init; } diff --git a/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Response.cs b/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Response.cs index ca7ffb51b7..147bd0c801 100644 --- a/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Response.cs +++ b/Modules/Files/src/Files.Module/Features/Files/GetFileContent/Response.cs @@ -1,6 +1,5 @@ namespace Backbone.Modules.Files.Module.Features.Files.GetFileContent; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetFileContentResponse")] public class Response { public required byte[] FileContent { get; set; } diff --git a/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Query.cs b/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Query.cs index 74f6e19ff2..202ffcfe81 100644 --- a/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Query.cs +++ b/Modules/Files/src/Files.Module/Features/Files/GetFileMetadata/Query.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Files.Module.Features.Files.GetFileMetadata; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetFileMetadataQuery")] public class Query : IRequest { public required string Id { get; init; } diff --git a/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Query.cs b/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Query.cs index 1f2bc62578..ebb38524e3 100644 --- a/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Query.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Query.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Files.Module.Features.Files.ListFileMetadata; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListFileMetadataQuery")] public class Query : IRequest { public required PaginationFilter PaginationFilter { get; init; } diff --git a/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Response.cs b/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Response.cs index 65742c2ffe..47d402b69e 100644 --- a/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Response.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ListFileMetadata/Response.cs @@ -5,7 +5,6 @@ namespace Backbone.Modules.Files.Module.Features.Files.ListFileMetadata; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListFileMetadataResponse")] public class Response : PagedResponse { public Response(DbPaginationResult dbPaginationResult, PaginationFilter previousFilter) : base(dbPaginationResult.ItemsOnPage.Select(f => new FileMetadataDTO(f)), diff --git a/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Command.cs b/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Command.cs index 95ea742590..c32e4b3987 100644 --- a/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Command.cs +++ b/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Files.Module.Features.Files.RegenerateFileOwnershipToken; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RegenerateFileOwnershipTokenCommand")] public class Command : IRequest { public required string FileId { get; init; } diff --git a/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Response.cs b/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Response.cs index 6d9a487953..c9b51aad23 100644 --- a/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Response.cs +++ b/Modules/Files/src/Files.Module/Features/Files/RegenerateFileOwnershipToken/Response.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Files.Module.Features.Files.RegenerateFileOwnershipToken; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RegenerateFileOwnershipTokenResponse")] public class Response { public Response(File file) diff --git a/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Endpoint.cs b/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Endpoint.cs index cd185bf84c..74053f8fab 100644 --- a/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Endpoint.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Endpoint.cs @@ -26,7 +26,6 @@ private static async Task Handle([FromRoute] string fileId, [FromBody] return EnvelopeHttpResults.Ok(response); } - [Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ValidateFileOwnershipTokenRequest")] private class RequestBody { public required string OwnershipToken { get; init; } diff --git a/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Query.cs b/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Query.cs index 8deb625403..2dd2e8e3ad 100644 --- a/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Query.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Query.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Files.Module.Features.Files.ValidateFileOwnershipToken; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ValidateFileOwnershipTokenQuery")] public class Query : IRequest { public required string FileId { get; init; } diff --git a/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Response.cs b/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Response.cs index 30838402d7..536257af18 100644 --- a/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Response.cs +++ b/Modules/Files/src/Files.Module/Features/Files/ValidateFileOwnershipToken/Response.cs @@ -1,6 +1,5 @@ namespace Backbone.Modules.Files.Module.Features.Files.ValidateFileOwnershipToken; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ValidateFileOwnershipTokenResponse")] public class Response { public required bool IsValid { get; init; } diff --git a/Modules/Files/src/Files.Module/Features/Identities/AnonymizeCreatedByOfFiles/Command.cs b/Modules/Files/src/Files.Module/Features/Identities/AnonymizeCreatedByOfFiles/Command.cs index 82e705f884..07fc6401ce 100644 --- a/Modules/Files/src/Files.Module/Features/Identities/AnonymizeCreatedByOfFiles/Command.cs +++ b/Modules/Files/src/Files.Module/Features/Identities/AnonymizeCreatedByOfFiles/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Files.Module.Features.Identities.AnonymizeCreatedByOfFiles; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("AnonymizeCreatedByOfFilesCommand")] public class Command : IRequest { public required string IdentityAddress { get; init; } diff --git a/Modules/Files/src/Files.Module/Features/Identities/DeleteFilesOfIdentity/Command.cs b/Modules/Files/src/Files.Module/Features/Identities/DeleteFilesOfIdentity/Command.cs index 9f906ffeae..5cc2174561 100644 --- a/Modules/Files/src/Files.Module/Features/Identities/DeleteFilesOfIdentity/Command.cs +++ b/Modules/Files/src/Files.Module/Features/Identities/DeleteFilesOfIdentity/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Files.Module.Features.Identities.DeleteFilesOfIdentity; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteFilesOfIdentityCommand")] public class Command : IRequest { public required string IdentityAddress { get; init; } diff --git a/Modules/Files/src/Files.Module/FilesModule.cs b/Modules/Files/src/Files.Module/FilesModule.cs index 4a00b34fca..62940f2ad8 100644 --- a/Modules/Files/src/Files.Module/FilesModule.cs +++ b/Modules/Files/src/Files.Module/FilesModule.cs @@ -1,4 +1,5 @@ using Backbone.BuildingBlocks.API.Extensions; +using Backbone.BuildingBlocks.API.OpenApi; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Application.MediatR; using Backbone.BuildingBlocks.Module; @@ -16,6 +17,11 @@ public class FilesModule : AbstractModule(names => + { + names.Overrides[typeof(Features.Files.ClaimFileOwnership.RequestBody)] = "ClaimFileOwnershipRequest"; + }); + services.AddMediatR(c => c .RegisterServicesFromAssembly(typeof(FilesModule).Assembly) .AddOpenBehavior(typeof(LoggingBehavior<,>)) diff --git a/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Query.cs b/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Query.cs index 2987c52ddd..db9aa58acd 100644 --- a/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Query.cs +++ b/Modules/Messages/src/Messages.Module/Features/Messages/GetMessage/Query.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Messages.Module.Features.Messages.GetMessage; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetMessageQuery")] public class Query : IRequest { public required string Id { get; init; } diff --git a/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Query.cs b/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Query.cs index 5a35c3562c..7b774ac0bc 100644 --- a/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Query.cs +++ b/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Query.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Messages.Module.Features.Messages.ListMessages; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListMessagesQuery")] public class Query : IRequest { public required PaginationFilter PaginationFilter { get; init; } diff --git a/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Response.cs b/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Response.cs index 7db423bbe9..0a0805037f 100644 --- a/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Response.cs +++ b/Modules/Messages/src/Messages.Module/Features/Messages/ListMessages/Response.cs @@ -6,7 +6,6 @@ namespace Backbone.Modules.Messages.Module.Features.Messages.ListMessages; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListMessagesResponse")] public class Response : PagedResponse { public Response(DbPaginationResult result, PaginationFilter previousFilter, IdentityAddress activeIdentity, string didDomainName) diff --git a/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Command.cs b/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Command.cs index 415e27807b..bd341aa9c6 100644 --- a/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Command.cs +++ b/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Command.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Messages.Module.Features.Messages.SendMessage; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("SendMessageCommand")] [ApplyQuotasForMetrics("NumberOfSentMessages")] public class Command : IRequest { diff --git a/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Response.cs b/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Response.cs index c00fcf7b22..59cb79aea3 100644 --- a/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Response.cs +++ b/Modules/Messages/src/Messages.Module/Features/Messages/SendMessage/Response.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Messages.Module.Features.Messages.SendMessage; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("SendMessageResponse")] public class Response { public Response(Message message) diff --git a/Modules/Quotas/src/Quotas.Module/Features/Identities/CreateQuotaForIdentity/Command.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/CreateQuotaForIdentity/Command.cs index 2e0ed2b00c..d9a0fa561d 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Identities/CreateQuotaForIdentity/Command.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/CreateQuotaForIdentity/Command.cs @@ -4,7 +4,6 @@ namespace Backbone.Modules.Quotas.Module.Features.Identities.CreateQuotaForIdentity; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateQuotaForIdentityCommand")] public class Command : IRequest { public required string IdentityAddress { get; init; } diff --git a/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteIdentity/Command.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteIdentity/Command.cs index df280a58b5..c33ba833b6 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteIdentity/Command.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteIdentity/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Quotas.Module.Features.Identities.DeleteIdentity; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteIdentityCommand")] public class Command : IRequest { public required string IdentityAddress { get; init; } diff --git a/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteQuotaForIdentity/Command.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteQuotaForIdentity/Command.cs index a413ad9525..dd7cf02720 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteQuotaForIdentity/Command.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/DeleteQuotaForIdentity/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Quotas.Module.Features.Identities.DeleteQuotaForIdentity; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteQuotaForIdentityCommand")] public class Command : IRequest { public required string IdentityAddress { get; init; } diff --git a/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Query.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Query.cs index 4e1fa1cb3c..8cb46e623a 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Query.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Query.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Quotas.Module.Features.Identities.GetIdentity; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetIdentityQuery")] public class Query : IRequest { public required string Address { get; init; } diff --git a/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Response.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Response.cs index a549abce06..2cb2ccaa5c 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Response.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/GetIdentity/Response.cs @@ -6,7 +6,6 @@ namespace Backbone.Modules.Quotas.Module.Features.Identities.GetIdentity; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetIdentityResponse")] public class Response { public required string Address { get; set; } diff --git a/Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Query.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Query.cs index 9ff074cc13..ddd3c482bf 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Query.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Query.cs @@ -2,5 +2,4 @@ namespace Backbone.Modules.Quotas.Module.Features.Identities.ListQuotasForIdentity; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListQuotasForIdentityQuery")] public class Query : IRequest; diff --git a/Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Response.cs b/Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Response.cs index 0537550e16..61c7e96042 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Response.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Identities/ListQuotasForIdentity/Response.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Quotas.Module.Features.Identities.ListQuotasForIdentity; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListQuotasForIdentityResponse")] public class Response : CollectionResponseBase { public Response(IEnumerable items) : base(items) { } diff --git a/Modules/Quotas/src/Quotas.Module/Features/Metrics/ListMetrics/Query.cs b/Modules/Quotas/src/Quotas.Module/Features/Metrics/ListMetrics/Query.cs index b34dd24e48..68600bf640 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Metrics/ListMetrics/Query.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Metrics/ListMetrics/Query.cs @@ -2,5 +2,4 @@ namespace Backbone.Modules.Quotas.Module.Features.Metrics.ListMetrics; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListMetricsQuery")] public class Query : IRequest; diff --git a/Modules/Quotas/src/Quotas.Module/Features/Metrics/ListMetrics/Response.cs b/Modules/Quotas/src/Quotas.Module/Features/Metrics/ListMetrics/Response.cs index 7563ebcc21..58597517f9 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Metrics/ListMetrics/Response.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Metrics/ListMetrics/Response.cs @@ -4,7 +4,6 @@ namespace Backbone.Modules.Quotas.Module.Features.Metrics.ListMetrics; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListMetricsResponse")] public class Response : CollectionResponseBase { public Response(IEnumerable items) : base(items.Select(m => new MetricDTO(m))) diff --git a/Modules/Quotas/src/Quotas.Module/Features/Tiers/CreateQuotaForTier/Command.cs b/Modules/Quotas/src/Quotas.Module/Features/Tiers/CreateQuotaForTier/Command.cs index caaa053a30..6253ab58c9 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Tiers/CreateQuotaForTier/Command.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Tiers/CreateQuotaForTier/Command.cs @@ -4,7 +4,6 @@ namespace Backbone.Modules.Quotas.Module.Features.Tiers.CreateQuotaForTier; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateQuotaForTierCommand")] public class Command : IRequest { public required string TierId { get; init; } diff --git a/Modules/Quotas/src/Quotas.Module/Features/Tiers/DeleteTierQuotaDefinition/Command.cs b/Modules/Quotas/src/Quotas.Module/Features/Tiers/DeleteTierQuotaDefinition/Command.cs index 38ee98409d..c035666aef 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Tiers/DeleteTierQuotaDefinition/Command.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Tiers/DeleteTierQuotaDefinition/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Quotas.Module.Features.Tiers.DeleteTierQuotaDefinition; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteTierQuotaDefinitionCommand")] public class Command : IRequest { public required string TierId { get; init; } diff --git a/Modules/Quotas/src/Quotas.Module/Features/Tiers/GetTier/Query.cs b/Modules/Quotas/src/Quotas.Module/Features/Tiers/GetTier/Query.cs index 298f8571d7..021f05e8a6 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Tiers/GetTier/Query.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Tiers/GetTier/Query.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Quotas.Module.Features.Tiers.GetTier; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetTierQuery")] public class Query : IRequest { public required string Id { get; init; } diff --git a/Modules/Quotas/src/Quotas.Module/Features/Tiers/SeedQueuedForDeletionTier/Command.cs b/Modules/Quotas/src/Quotas.Module/Features/Tiers/SeedQueuedForDeletionTier/Command.cs index 0b3451b856..9184c8ed56 100644 --- a/Modules/Quotas/src/Quotas.Module/Features/Tiers/SeedQueuedForDeletionTier/Command.cs +++ b/Modules/Quotas/src/Quotas.Module/Features/Tiers/SeedQueuedForDeletionTier/Command.cs @@ -2,5 +2,4 @@ namespace Backbone.Modules.Quotas.Module.Features.Tiers.SeedQueuedForDeletionTier; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("SeedQueuedForDeletionTierCommand")] public class Command : IRequest; diff --git a/Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Query.cs b/Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Query.cs index cf9393dde8..7b3f6ba2dd 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Query.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/PublicRelationshipTemplateReferences/ListPublicRelationshipTemplateReferences/Query.cs @@ -2,5 +2,4 @@ namespace Backbone.Modules.Relationships.Module.Features.PublicRelationshipTemplateReferences.ListPublicRelationshipTemplateReferences; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListPublicRelationshipTemplateReferencesQuery")] public class Query : IRequest>; diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Command.cs index 70d82bfef7..245a457e92 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplateAllocationsAllocatedByIdentity; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("AnonymizeRelationshipTemplateAllocationsAllocatedByIdentityCommand")] public class Command : IRequest { public required string IdentityAddress { get; init; } diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplatesForIdentity/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplatesForIdentity/Command.cs index e069c7a78c..ec0b63e9bb 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplatesForIdentity/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/AnonymizeRelationshipTemplatesForIdentity/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.AnonymizeRelationshipTemplatesForIdentity; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("AnonymizeRelationshipTemplatesForIdentityCommand")] public class Command : IRequest { public required string IdentityAddress { get; init; } diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Command.cs index bf33422756..794f442651 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Command.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.CreateRelationshipTemplate; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateRelationshipTemplateCommand")] [ApplyQuotasForMetrics("NumberOfRelationshipTemplates")] public class Command : IRequest { diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Response.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Response.cs index 540ae67077..261efb78be 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Response.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/CreateRelationshipTemplate/Response.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.CreateRelationshipTemplate; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateRelationshipTemplateResponse")] public class Response { public Response(RelationshipTemplate relationshipTemplate) diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Command.cs index 09f0e06eed..14babfbbce 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplate/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplate; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteRelationshipTemplateCommand")] public class Command : IRequest { public required string Id { get; init; } diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/Command.cs index 95eba44779..af34ff319f 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/DeleteRelationshipTemplatesOfIdentity/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.DeleteRelationshipTemplatesOfIdentity; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteRelationshipTemplatesOfIdentityCommand")] public class Command : IRequest { public required string IdentityAddress { get; init; } diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Query.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Query.cs index 21da7e02b5..d3943d60d8 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Query.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/GetRelationshipTemplate/Query.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.GetRelationshipTemplate; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetRelationshipTemplateQuery")] public class Query : IRequest { public required string Id { get; init; } diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Query.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Query.cs index 7d2ed79545..be91717816 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Query.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Query.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.ListRelationshipTemplates; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListRelationshipTemplatesQuery")] public class Query : IRequest { public required PaginationFilter PaginationFilter { get; init; } diff --git a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Response.cs b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Response.cs index 9c5db5eb33..c863cb25b4 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Response.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/RelationshipTemplates/ListRelationshipTemplates/Response.cs @@ -5,7 +5,6 @@ namespace Backbone.Modules.Relationships.Module.Features.RelationshipTemplates.ListRelationshipTemplates; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListRelationshipTemplatesResponse")] public class Response : PagedResponse { public Response(DbPaginationResult dbPaginationResult, PaginationFilter previousPaginationFilter) : base( diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Command.cs index 439e6e68a1..57db13f8b9 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Command.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.AcceptRelationship; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("AcceptRelationshipCommand")] [ApplyQuotasForMetrics("NumberOfRelationships")] public class Command : IRequest { diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Endpoint.cs index f017aadb49..e33e4af1a9 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Endpoint.cs @@ -26,7 +26,6 @@ private static async Task Handle([FromRoute] string id, [FromBody] Requ } } -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("AcceptRelationshipRequest")] public class RequestBody { public byte[]? CreationResponseContent { get; set; } = []; diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Response.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Response.cs index 8bc9d224df..d708b75704 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Response.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationship/Response.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.AcceptRelationship; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("AcceptRelationshipResponse")] public class Response : RelationshipMetadataDTO { public Response(Relationship relationship) : base(relationship) diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Command.cs index 91368d851f..c071ecdd7f 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.AcceptRelationshipReactivation; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("AcceptRelationshipReactivationCommand")] public class Command : IRequest { public required string RelationshipId { get; init; } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Response.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Response.cs index a128e91ab5..4cf1978247 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Response.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/AcceptRelationshipReactivation/Response.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.AcceptRelationshipReactivation; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("AcceptRelationshipReactivationResponse")] public class Response : RelationshipMetadataDTO { public Response(Relationship relationship) : base(relationship) diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Query.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Query.cs index b8481055f2..7038385fed 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Query.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Query.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.CanEstablishRelationship; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CanEstablishRelationshipQuery")] public class Query : IRequest { public required string PeerAddress { get; init; } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Response.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Response.cs index 962b93b405..628728b9ba 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Response.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CanEstablishRelationship/Response.cs @@ -1,6 +1,5 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.CanEstablishRelationship; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CanEstablishRelationshipResponse")] public class Response { public required bool CanCreate { get; set; } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Command.cs index 85084ec5c8..b28ac9d210 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Command.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.CreateRelationship; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateRelationshipCommand")] [ApplyQuotasForMetrics("NumberOfRelationships")] public class Command : IRequest { diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Response.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Response.cs index 810373163d..ce61c85c60 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Response.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/CreateRelationship/Response.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.CreateRelationship; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateRelationshipResponse")] public class Response : RelationshipMetadataDTO { public Response(Relationship relationship) : base(relationship) diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeAndAnonymizeRelationshipsOfIdentity/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeAndAnonymizeRelationshipsOfIdentity/Command.cs index 5a0b3ae27c..f71fe82161 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeAndAnonymizeRelationshipsOfIdentity/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeAndAnonymizeRelationshipsOfIdentity/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeAndAnonymizeRelationshipsOfIdentity; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DecomposeAndAnonymizeRelationshipsOfIdentityCommand")] public class Command : IRequest { public required string IdentityAddress { get; init; } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Command.cs index 96a0f4ba50..4080c28f3e 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeRelationship; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DecomposeRelationshipCommand")] public class Command : IRequest { public required string RelationshipId { get; init; } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Response.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Response.cs index 20e9db328a..3f6694da78 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Response.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/DecomposeRelationship/Response.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.DecomposeRelationship; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DecomposeRelationshipResponse")] public class Response : RelationshipMetadataDTO { public Response(Relationship relationship) : base(relationship) diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ExecuteHousekeeping/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ExecuteHousekeeping/Command.cs index 0278b46303..cf3273dd55 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ExecuteHousekeeping/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ExecuteHousekeeping/Command.cs @@ -2,5 +2,4 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.ExecuteHousekeeping; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ExecuteHousekeepingCommand")] public class Command : IRequest; diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Query.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Query.cs index 8188156bff..a3d082c41e 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Query.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Query.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.GetPeerOfActiveIdentityInRelationship; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetPeerOfActiveIdentityInRelationshipQuery")] public class Query : IRequest { public required string Id { get; init; } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Response.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Response.cs index 088d1481a4..3dbc12c3c3 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Response.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetPeerOfActiveIdentityInRelationship/Response.cs @@ -1,6 +1,5 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.GetPeerOfActiveIdentityInRelationship; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetPeerOfActiveIdentityInRelationshipResponse")] public class Response { public required string IdentityAddress { get; set; } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Query.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Query.cs index a630c13cc4..15c4b0c273 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Query.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/GetRelationship/Query.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.GetRelationship; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetRelationshipQuery")] public class Query : IRequest { public required string Id { get; init; } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Query.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Query.cs index 8f81ddeeaa..e4886167e6 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Query.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Query.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationships; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListRelationshipsQuery")] public class Query : IRequest { public required PaginationFilter PaginationFilter { get; init; } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Response.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Response.cs index 996d0d67b9..01432d92a6 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Response.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationships/Response.cs @@ -5,7 +5,6 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationships; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListRelationshipsResponse")] public class Response : PagedResponse { public Response(DbPaginationResult dbPaginationResult, PaginationFilter previousPaginationFilter) : base( diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Query.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Query.cs index 3867b34cd2..897e5b1d08 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Query.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Query.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationshipsOfIdentity; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListRelationshipsOfIdentityQuery")] public class Query : IRequest { public required string IdentityAddress { get; init; } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Response.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Response.cs index abcbb304aa..d366f5dfb6 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Response.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/ListRelationshipsOfIdentity/Response.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.ListRelationshipsOfIdentity; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListRelationshipsOfIdentityResponse")] public class Response : CollectionResponseBase { public Response(IEnumerable items) : base(items) diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Command.cs index 1209d92fbf..1709152c23 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.RejectRelationship; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RejectRelationshipCommand")] public class Command : IRequest { public required string RelationshipId { get; init; } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Endpoint.cs index f96cd7c2d0..acb64ade4e 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Endpoint.cs @@ -26,7 +26,6 @@ private static async Task Handle([FromRoute] string id, [FromBody] Requ } } -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RejectRelationshipRequest")] public class RequestBody { public byte[]? CreationResponseContent { get; set; } = []; diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Response.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Response.cs index dcb4ca3465..b66afb7d83 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Response.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationship/Response.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.RejectRelationship; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RejectRelationshipResponse")] public class Response : RelationshipMetadataDTO { public Response(Relationship relationship) : base(relationship) diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Command.cs index 42849c72d2..56a38b97af 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.RejectRelationshipReactivation; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RejectRelationshipReactivationCommand")] public class Command : IRequest { public required string RelationshipId { get; init; } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Response.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Response.cs index c630f7b406..596b5f062c 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Response.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RejectRelationshipReactivation/Response.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.RejectRelationshipReactivation; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RejectRelationshipReactivationResponse")] public class Response : RelationshipMetadataDTO { public Response(Relationship relationship) : base(relationship) diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Command.cs index f740f04095..d4d80e3e99 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.RequestRelationshipReactivation; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RequestRelationshipReactivationCommand")] public class Command : IRequest { public required string RelationshipId { get; init; } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Response.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Response.cs index 80b252a390..4613f2f3b9 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Response.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RequestRelationshipReactivation/Response.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.RequestRelationshipReactivation; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RequestRelationshipReactivationResponse")] public class Response : RelationshipMetadataDTO { public Response(Relationship relationship) : base(relationship) diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Command.cs index 901ff81cdc..0db2025c23 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.RevokeRelationship; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RevokeRelationshipCommand")] public class Command : IRequest { public required string RelationshipId { get; init; } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Endpoint.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Endpoint.cs index 5b4e239da6..1ddfd5f105 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Endpoint.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Endpoint.cs @@ -26,7 +26,6 @@ private static async Task Handle([FromRoute] string id, [FromBody] Requ } } -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RevokeRelationshipRequest")] public class RequestBody { public byte[]? CreationResponseContent { get; set; } = []; diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Response.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Response.cs index e122926e20..4a37b29e34 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Response.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationship/Response.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.RevokeRelationship; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RevokeRelationshipResponse")] public class Response : RelationshipMetadataDTO { public Response(Relationship relationship) : base(relationship) diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Command.cs index a6fde0bb6b..0314dc6fce 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.RevokeRelationshipReactivation; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RevokeRelationshipReactivationCommand")] public class Command : IRequest { public required string RelationshipId { get; init; } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Response.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Response.cs index 933b739e56..6715981668 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Response.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/RevokeRelationshipReactivation/Response.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.RevokeRelationshipReactivation; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RevokeRelationshipReactivationResponse")] public class Response : RelationshipMetadataDTO { public Response(Relationship relationship) : base(relationship) { } diff --git a/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Command.cs b/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Command.cs index f2709497dc..a79b0d7913 100644 --- a/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Command.cs +++ b/Modules/Relationships/src/Relationships.Module/Features/Relationships/TerminateRelationship/Command.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Relationships.Module.Features.Relationships.TerminateRelationship; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("TerminateRelationshipCommand")] public class Command : IRequest { public required string RelationshipId { get; init; } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/DeleteDatawalletsOfIdentity/Command.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/DeleteDatawalletsOfIdentity/Command.cs index 1c68c9e68d..f3a3787935 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/DeleteDatawalletsOfIdentity/Command.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/DeleteDatawalletsOfIdentity/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.DeleteDatawalletsOfIdentity; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteDatawalletsOfIdentityCommand")] public class Command : IRequest { public required string IdentityAddress { get; init; } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/Query.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/Query.cs index 28ca95fa3d..1eef92bee1 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/Query.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/GetDatawallet/Query.cs @@ -3,5 +3,4 @@ namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.GetDatawallet; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetDatawalletQuery")] public class Query : IRequest; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Query.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Query.cs index af07267a80..47f4377b9f 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Query.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Query.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.ListModifications; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListModificationsQuery")] public class Query : IRequest { public long? LocalIndex { get; init; } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Response.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Response.cs index a53e9c8ccc..415db1684d 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Response.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/ListModifications/Response.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.ListModifications; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListModificationsResponse")] public class Response : PagedResponse { public Response(IEnumerable items, PaginationFilter previousPaginationFilter, int totalRecords) : base(items, previousPaginationFilter, totalRecords) diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Command.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Command.cs index a2465fbc26..1ed3383cc9 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Command.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Command.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.PushDatawalletModifications; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("PushDatawalletModificationsCommand")] public class Command : IRequest { public long? LocalIndex { get; init; } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Response.cs b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Response.cs index 0054c0ecb4..13e93d6e40 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Response.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/Datawallets/PushDatawalletModifications/Response.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Synchronization.Module.Features.Datawallets.PushDatawalletModifications; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("PushDatawalletModificationsResponse")] public class Response { public required long NewIndex { get; set; } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteExternalEventsOfIdentity/Command.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteExternalEventsOfIdentity/Command.cs index d5d579d5cc..94cf38e0e5 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteExternalEventsOfIdentity/Command.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteExternalEventsOfIdentity/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteExternalEventsOfIdentity; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteExternalEventsOfIdentityCommand")] public class Command : IRequest { public required string IdentityAddress { get; init; } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteSyncRunsOfIdentity/Command.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteSyncRunsOfIdentity/Command.cs index 06004fb6d8..3868b138ae 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteSyncRunsOfIdentity/Command.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/DeleteSyncRunsOfIdentity/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.DeleteSyncRunsOfIdentity; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteSyncRunsOfIdentityCommand")] public class Command : IRequest { public required string IdentityAddress { get; init; } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ExecuteHousekeeping/Command.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ExecuteHousekeeping/Command.cs index 54c52a79db..3170cf5cc9 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ExecuteHousekeeping/Command.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ExecuteHousekeeping/Command.cs @@ -2,5 +2,4 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.ExecuteHousekeeping; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ExecuteHousekeepingCommand")] public class Command : IRequest; diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Command.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Command.cs index 982799cf2b..c769dba785 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Command.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Command.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeDatawalletVersionUpgrade; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("FinalizeDatawalletVersionUpgradeSyncRunCommand")] public class Command : IRequest { public required string SyncRunId { get; init; } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Response.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Response.cs index 8cf73e9f05..718cda75a2 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Response.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeDatawalletVersionUpgrade/Response.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeDatawalletVersionUpgrade; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("FinalizeDatawalletVersionUpgradeSyncRunResponse")] public class Response { public long? NewDatawalletModificationIndex { get; set; } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Command.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Command.cs index cfb0eb2154..b1c09b6505 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Command.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Command.cs @@ -4,7 +4,6 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeExternalEventSync; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("FinalizeExternalEventSyncSyncRunCommand")] public class Command : IRequest { public required string SyncRunId { get; init; } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Response.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Response.cs index 7f2adb66f6..ba5be9ef40 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Response.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/FinalizeExternalEventSync/Response.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.FinalizeExternalEventSync; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("FinalizeExternalEventSyncSyncRunResponse")] public class Response { public long? NewDatawalletModificationIndex { get; set; } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Query.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Query.cs index 8fe7fe93ec..13ad9b00c3 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Query.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/GetSyncRunById/Query.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.GetSyncRunById; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetSyncRunByIdQuery")] public class Query : IRequest { public required string SyncRunId { get; init; } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Query.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Query.cs index 85333538d2..df1a5af605 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Query.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Query.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.ListExternalEventsOfSyncRun; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListExternalEventsOfSyncRunQuery")] public class Query : IRequest { public required string SyncRunId { get; init; } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Response.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Response.cs index d8d2dcf7c9..57138c22c9 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Response.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/ListExternalEventsOfSyncRun/Response.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.ListExternalEventsOfSyncRun; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListExternalEventsOfSyncRunResponse")] public class Response : PagedResponse { public Response(IEnumerable events, PaginationFilter previousPaginationFilter, int totalRecords) : base(events, previousPaginationFilter, totalRecords) diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Command.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Command.cs index 753e7aa3b4..47101acdfd 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Command.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.RefreshExpirationTimeOfSyncRun; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RefreshExpirationTimeOfSyncRunCommand")] public class Command : IRequest { public required string SyncRunId { get; init; } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Response.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Response.cs index 954456e5b5..fc5548a035 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Response.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/RefreshExpirationTimeOfSyncRun/Response.cs @@ -1,6 +1,5 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.RefreshExpirationTimeOfSyncRun; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("RefreshExpirationTimeOfSyncRunResponse")] public class Response { public DateTime ExpiresAt { get; set; } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Command.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Command.cs index 18fdbdd0b4..6670d7f77c 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Command.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Command.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.StartSyncRun; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("StartSyncRunCommand")] public class Command : IRequest { public required SyncRunDTO.SyncRunType Type { get; init; } diff --git a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Response.cs b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Response.cs index 9b11c6d01d..265812fbd7 100644 --- a/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Response.cs +++ b/Modules/Synchronization/src/Synchronization.Module/Features/SyncRuns/StartSyncRun/Response.cs @@ -4,7 +4,6 @@ namespace Backbone.Modules.Synchronization.Module.Features.SyncRuns.StartSyncRun; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("StartSyncRunResponse")] public class Response { public Response(StartSyncRunStatus status, SyncRun? newSyncRun = null) diff --git a/Modules/Synchronization/src/Synchronization.Module/SynchronizationModule.cs b/Modules/Synchronization/src/Synchronization.Module/SynchronizationModule.cs index d14b8bd95b..8151b243e8 100644 --- a/Modules/Synchronization/src/Synchronization.Module/SynchronizationModule.cs +++ b/Modules/Synchronization/src/Synchronization.Module/SynchronizationModule.cs @@ -1,5 +1,6 @@ using System.Reflection; using Backbone.BuildingBlocks.API.Extensions; +using Backbone.BuildingBlocks.API.OpenApi; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Application.MediatR; using Backbone.BuildingBlocks.Module; @@ -17,6 +18,12 @@ public class SynchronizationModule : AbstractModule(names => + { + names.Overrides[typeof(Features.SyncRuns.FinalizeDatawalletVersionUpgrade.Response)] = "FinalizeDatawalletVersionUpgradeSyncRunResponse"; + names.Overrides[typeof(Features.SyncRuns.FinalizeExternalEventSync.Response)] = "FinalizeExternalEventSyncSyncRunResponse"; + }); + services.AddPersistence(infrastructureConfiguration.SqlDatabase); services.AddMediatR(c => c diff --git a/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Query.cs b/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Query.cs index 5c9c8bfdf4..e05530f3b6 100644 --- a/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Query.cs +++ b/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Query.cs @@ -2,5 +2,4 @@ namespace Backbone.Modules.Tags.Module.Features.Tags.ListTags; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListTagsQuery")] public class Query : IRequest; diff --git a/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Response.cs b/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Response.cs index 4bcc501edd..7785024fe7 100644 --- a/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Response.cs +++ b/Modules/Tags/src/Tags.Module/Features/Tags/ListTags/Response.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Tags.Module.Features.Tags.ListTags; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListTagsResponse")] public class Response { public required IEnumerable SupportedLanguages { get; set; } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokenAllocationsOfIdentity/Command.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokenAllocationsOfIdentity/Command.cs index 3a105ac53c..a0e5aced6d 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokenAllocationsOfIdentity/Command.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokenAllocationsOfIdentity/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.AnonymizeTokenAllocationsOfIdentity; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("AnonymizeTokenAllocationsOfIdentityCommand")] public class Command : IRequest { public required string IdentityAddress { get; init; } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokensForIdentity/Command.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokensForIdentity/Command.cs index 92b7a0a6c0..56b307a4cf 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokensForIdentity/Command.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/AnonymizeTokensForIdentity/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.AnonymizeTokensForIdentity; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("AnonymizeTokensForIdentityCommand")] public class Command : IRequest { public required string IdentityAddress { get; init; } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Command.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Command.cs index 809dcaf846..1b07c48f6e 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Command.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Command.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.CreateToken; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateTokenCommand")] [ApplyQuotasForMetrics("NumberOfTokens")] public class Command : IRequest { diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Response.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Response.cs index 7365a09967..72c45acf8c 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Response.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/CreateToken/Response.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.CreateToken; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("CreateTokenResponse")] public class Response { public Response(Token token) diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Command.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Command.cs index 50760885c2..25e4289a2c 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Command.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteToken/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.DeleteToken; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteTokenCommand")] public class Command : IRequest { public required string Id { get; init; } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteTokensOfIdentity/Command.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteTokensOfIdentity/Command.cs index 4b6d4467ca..a00a927b3e 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteTokensOfIdentity/Command.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/DeleteTokensOfIdentity/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.DeleteTokensOfIdentity; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("DeleteTokensOfIdentityCommand")] public class Command : IRequest { public required string IdentityAddress { get; init; } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ExecuteHousekeeping/Command.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ExecuteHousekeeping/Command.cs index 0daffc9942..7ab8a022b7 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ExecuteHousekeeping/Command.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ExecuteHousekeeping/Command.cs @@ -2,5 +2,4 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.ExecuteHousekeeping; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ExecuteHousekeepingCommand")] public class Command : IRequest; diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Query.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Query.cs index ba4d76ea9c..9aff6bc829 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Query.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/GetToken/Query.cs @@ -3,7 +3,6 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.GetToken; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("GetTokenQuery")] public class Query : IRequest { public required string Id { get; init; } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Query.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Query.cs index 14dec41113..55ccfe284f 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Query.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokens/Query.cs @@ -4,7 +4,6 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.ListTokens; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListTokensQuery")] public class Query : IRequest { public required PaginationFilter PaginationFilter { get; init; } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokensByIdentity/Query.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokensByIdentity/Query.cs index 6b1eb86a2d..f91fa368c5 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokensByIdentity/Query.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ListTokensByIdentity/Query.cs @@ -4,5 +4,4 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.ListTokensByIdentity; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListTokensByIdentityQuery")] public record Query(string CreatedBy, PaginationFilter PaginationFilter) : IRequest; diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ResetAccessFailedCountOfToken/Command.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ResetAccessFailedCountOfToken/Command.cs index 48e05b90f7..76819291e5 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/ResetAccessFailedCountOfToken/Command.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/ResetAccessFailedCountOfToken/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.ResetAccessFailedCountOfToken; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ResetAccessFailedCountOfTokenCommand")] public class Command : IRequest { public required string TokenId { get; init; } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/Shared/Response.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/Shared/Response.cs index d8c180e3be..963931374d 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/Shared/Response.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/Shared/Response.cs @@ -5,6 +5,5 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.Shared; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("ListTokensResponse")] public class Response(DbPaginationResult dbPaginationResult, PaginationFilter previousPaginationFilter) : PagedResponse(dbPaginationResult.ItemsOnPage.Select(t => new TokenDTO(t)), previousPaginationFilter, dbPaginationResult.TotalNumberOfItems); diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Command.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Command.cs index cf023bc86b..c51c25b7e9 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Command.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Command.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.UpdateTokenContent; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("UpdateTokenContentCommand")] public class Command : IRequest { public required string TokenId { get; init; } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Endpoint.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Endpoint.cs index 7a40939716..f5cbe504c8 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Endpoint.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Endpoint.cs @@ -26,7 +26,6 @@ private static async Task Handle([FromRoute] string id, [FromBody] Requ } } -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("UpdateTokenContentRequest")] public class RequestBody { public required byte[] NewContent { get; init; } diff --git a/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Response.cs b/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Response.cs index 4b12ffe5e3..298bde069d 100644 --- a/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Response.cs +++ b/Modules/Tokens/src/Tokens.Module/Features/Tokens/UpdateTokenContent/Response.cs @@ -2,7 +2,6 @@ namespace Backbone.Modules.Tokens.Module.Features.Tokens.UpdateTokenContent; -[Backbone.BuildingBlocks.Application.Abstractions.JsonSchemaName("UpdateTokenContentResponse")] public class Response { public Response(Token token) diff --git a/Modules/Tokens/src/Tokens.Module/TokensModule.cs b/Modules/Tokens/src/Tokens.Module/TokensModule.cs index 6c3e075cba..510e46130e 100644 --- a/Modules/Tokens/src/Tokens.Module/TokensModule.cs +++ b/Modules/Tokens/src/Tokens.Module/TokensModule.cs @@ -1,4 +1,5 @@ using Backbone.BuildingBlocks.API.Extensions; +using Backbone.BuildingBlocks.API.OpenApi; using Backbone.BuildingBlocks.Application.Abstractions.Infrastructure.EventBus; using Backbone.BuildingBlocks.Application.MediatR; using Backbone.BuildingBlocks.Module; @@ -16,6 +17,11 @@ public class TokensModule : AbstractModule(names => + { + names.Overrides[typeof(Features.Tokens.Shared.Response)] = "ListTokensResponse"; + }); + services.AddPersistence(infrastructureConfiguration.SqlDatabase); services.AddMediatR(c => c