generator-codedesignplus 0.0.1-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENCE.md +13 -0
- package/README.md +454 -0
- package/generators/app/index.mjs +22 -0
- package/generators/microservice/core/aggregate.mjs +25 -0
- package/generators/microservice/core/appsettings.mjs +73 -0
- package/generators/microservice/core/asyncWorker.mjs +87 -0
- package/generators/microservice/core/command.mjs +54 -0
- package/generators/microservice/core/consumer.mjs +73 -0
- package/generators/microservice/core/controller.mjs +25 -0
- package/generators/microservice/core/core.mjs +98 -0
- package/generators/microservice/core/dataTransferObject.mjs +31 -0
- package/generators/microservice/core/domainEvent.mjs +36 -0
- package/generators/microservice/core/dotnet.mjs +56 -0
- package/generators/microservice/core/entity.mjs +29 -0
- package/generators/microservice/core/errors.mjs +37 -0
- package/generators/microservice/core/grpc.mjs +97 -0
- package/generators/microservice/core/microservice.mjs +212 -0
- package/generators/microservice/core/proto.mjs +61 -0
- package/generators/microservice/core/query.mjs +59 -0
- package/generators/microservice/core/repository.mjs +41 -0
- package/generators/microservice/core/utils.mjs +196 -0
- package/generators/microservice/core/valueObject.mjs +29 -0
- package/generators/microservice/core/xml.mjs +48 -0
- package/generators/microservice/index.mjs +38 -0
- package/generators/microservice/templates/aggregate/ItemAggregate.cs +9 -0
- package/generators/microservice/templates/command/ItemCommand.cs +12 -0
- package/generators/microservice/templates/command/ItemCommandHandler.cs +9 -0
- package/generators/microservice/templates/consumer/ItemHandler.cs +14 -0
- package/generators/microservice/templates/controller/ItemController.cs +8 -0
- package/generators/microservice/templates/data-transfer-object/ItemDto.cs +6 -0
- package/generators/microservice/templates/domain-event/ItemDomainEvent.cs +15 -0
- package/generators/microservice/templates/entity/ItemEntity.cs +6 -0
- package/generators/microservice/templates/errors/Error.cs +6 -0
- package/generators/microservice/templates/grpc/ItemService.cs +6 -0
- package/generators/microservice/templates/grpc/grpc.proto +22 -0
- package/generators/microservice/templates/microservice/.dockerignore +30 -0
- package/generators/microservice/templates/microservice/CodeDesignPlus.Net.Microservice.sln +155 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/CodeDesignPlus.Net.Microservice.Application.csproj +20 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Errors.cs +10 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/AddProductToOrder/AddProductToOrderCommand.cs +17 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/AddProductToOrder/AddProductToOrderCommandHandler.cs +27 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/CancelOrder/CancelOrderCommand.cs +13 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/CancelOrder/CancelOrderCommandHandler.cs +24 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/CompleteOrder/CompleteOrderCommand.cs +11 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/CompleteOrder/CompleteOrderCommandHandler.cs +25 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/CreateOrder/CreateOrderCommand.cs +32 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/CreateOrder/CreateOrderCommandHandler.cs +24 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/RemoveProduct/RemoveProductCommand.cs +12 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/RemoveProduct/RemoveProductCommandHandler.cs +22 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/UpdateQuantityProduct/UpdateQuantityProductCommand.cs +14 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Commands/UpdateQuantityProduct/UpdateQuantityProductCommandHandler.cs +24 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/DataTransferObjects/AddressDto.cs +11 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/DataTransferObjects/ClientDto.cs +9 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/DataTransferObjects/OrderDto.cs +18 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/DataTransferObjects/ProductDto.cs +10 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Queries/FindOrderById/FindOrderByIdQuery.cs +4 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Queries/FindOrderById/FindOrderByIdQueryHandler.cs +23 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Queries/GetAllOrders/GetAllOrdersQuery.cs +3 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Order/Queries/GetAllOrders/GetAllOrdersQueryHandler.cs +18 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Setup/MapsterConfig.cs +26 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Startup.cs +15 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Application/Usings.cs +18 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/CodeDesignPlus.Net.Microservice.Domain.csproj +11 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DataTransferObjects/AddProductToOrderParams.cs +15 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DataTransferObjects/CancelOrderParams.cs +13 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DataTransferObjects/CompleteOrderParams.cs +12 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DataTransferObjects/RemoveProductFromOrderParams.cs +11 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DataTransferObjects/UpdateQuantityProductParams.cs +12 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DomainEvents/OrderCancelledDomainEvent.cs +21 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DomainEvents/OrderCompletedDomainEvent.cs +18 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DomainEvents/OrderCreatedDomainEvent.cs +44 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DomainEvents/ProductAddedToOrderDomainEvent.cs +20 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DomainEvents/ProductQuantityUpdatedDomainEvent.cs +20 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/DomainEvents/ProductRemovedFromOrderDomainEvent.cs +18 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/Entities/ProductEntity.cs +10 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/Enums/OrderStatus.cs +10 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/Errors.cs +28 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/OrderAggregate.cs +124 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/Repositories/IOrderRepository.cs +14 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/Startup.cs +12 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/Usings.cs +11 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/ValueObjects/AddressValueObject.cs +30 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Domain/ValueObjects/ClientValueObject.cs +27 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Infrastructure/CodeDesignPlus.Net.Microservice.Infrastructure.csproj +13 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Infrastructure/Errors.cs +6 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Infrastructure/Repositories/OrderRepository.cs +109 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Infrastructure/Startup.cs +10 -0
- package/generators/microservice/templates/microservice/src/domain/CodeDesignPlus.Net.Microservice.Infrastructure/Usings.cs +15 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.AsyncWorker/CodeDesignPlus.Net.Microservice.AsyncWorker.csproj +31 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.AsyncWorker/Program.cs +41 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.AsyncWorker/Properties/launchSettings.json +15 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.AsyncWorker/Usings.cs +10 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.AsyncWorker/appsettings.Development.json +2 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.AsyncWorker/appsettings.json +129 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/CodeDesignPlus.Net.Microservice.Rest.csproj +36 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/CodeDesignPlus.Net.Microservice.Rest.csproj.user +11 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/Controllers/OrderController.cs +138 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/Core/Mapster/MapsterConfig.cs +12 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/Dockerfile +37 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/Program.cs +52 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/Properties/launchSettings.json +26 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/Usings.cs +22 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/appsettings.Development.json +3 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.Rest/appsettings.json +86 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/CodeDesignPlus.Net.Microservice.gRpc.csproj +35 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/CodeDesignPlus.Net.Microservice.gRpc.csproj.user +9 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/Core/Mapster/MapsterConfig.cs +13 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/Program.cs +61 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/Properties/launchSettings.json +23 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/Protos/orders.proto +66 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/Services/OrderService.cs +29 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/Usings.cs +12 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/appsettings.Development.json +3 -0
- package/generators/microservice/templates/microservice/src/entrypoints/CodeDesignPlus.Net.Microservice.gRpc/appsettings.json +92 -0
- package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.AsyncWorker.Test/CodeDesignPlus.Net.Microservice.AsyncWorker.Test.csproj +35 -0
- package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.AsyncWorker.Test/Properties/launchSettings.json +12 -0
- package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.AsyncWorker.Test/Usings.cs +8 -0
- package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.Rest.Test/CodeDesignPlus.Net.Microservice.Rest.Test.csproj +36 -0
- package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.Rest.Test/Controllers/OrderControllerTest.cs +337 -0
- package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.Rest.Test/Properties/launchSettings.json +12 -0
- package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.Rest.Test/Usings.cs +8 -0
- package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.gRpc.Test/CodeDesignPlus.Net.Microservice.gRpc.Test.csproj +46 -0
- package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.gRpc.Test/Protos/orders.proto +65 -0
- package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.gRpc.Test/Services/OrdersServiceTest.cs +64 -0
- package/generators/microservice/templates/microservice/tests/integration/CodeDesignPlus.Net.Microservice.gRpc.Test/Usings.cs +7 -0
- package/generators/microservice/templates/microservice/tests/load/load-rest.js +63 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/CodeDesignPlus.Net.Microservice.Application.Test.csproj +34 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/AddProductToOrder/AddProductToOrderCommandHandlerTest.cs +98 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/AddProductToOrder/AddProductToOrderCommandTest.cs +84 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/CancelOrder/CancelOrderCommandHandlerTest.cs +74 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/CancelOrder/CancelOrderCommandTest.cs +43 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/CompleteOrder/CompleteOrderCommandHandlerTest.cs +74 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/CompleteOrder/CompleteOrderCommandTest.cs +32 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/CreateOrder/CreateOrderCommandHandlerTest.cs +100 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/CreateOrder/CreateOrderCommandTest.cs +122 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/RemoveProduct/RemoveProductCommandHandlerTest.cs +71 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/RemoveProduct/RemoveProductCommandTest.cs +33 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/UpdateQuantityProduct/UpdateQuantityProductCommandHandlerTest.cs +82 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Commands/UpdateQuantityProduct/UpdateQuantityProductCommandTest.cs +51 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Queries/FindOrderById/FindOrderByIdQueryHandlerTest.cs +70 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Order/Queries/GetAllOrders/GetAllOrdersQueryHandlerTest.cs +80 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Setup/MapsterConfigTest.cs +20 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Application.Test/Usings.cs +18 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.AsyncWorker.Test/CodeDesignPlus.Net.Microservice.AsyncWorker.Test.csproj +38 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.AsyncWorker.Test/Usings.cs +9 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/CodeDesignPlus.Net.Microservice.Default.Test.csproj +35 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Usings.cs +6 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Validations/AggregateTest.cs +37 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Validations/CommandsTests.cs +29 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Validations/DataTransferObjectTest.cs +47 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Validations/DomainEventTest.cs +42 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Validations/EntityTest.cs +25 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Validations/ErrorsTest.cs +55 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Validations/QueryTests.cs +29 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Default.Test/Validations/StartupTest.cs +43 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Domain.Test/CodeDesignPlus.Net.Microservice.Domain.Test.csproj +38 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Domain.Test/DomainEvents/OrderCancelledDomainEventTest.cs +46 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Domain.Test/OrderAggregateTest.cs +518 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Domain.Test/Usings.cs +7 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Infrastructure.Test/CodeDesignPlus.Net.Microservice.Infrastructure.Test.csproj +34 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Infrastructure.Test/Repositories/OrderRepositoryTest.cs +259 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Infrastructure.Test/Usings.cs +14 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Rest.Test/CodeDesignPlus.Net.Microservice.Rest.Test.csproj +40 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Rest.Test/Controllers/OrderControllerTest.cs +189 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Rest.Test/Core/Mapster/MapsterConfigTest.cs +19 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.Rest.Test/Usings.cs +14 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.gRpc.Test/CodeDesignPlus.Net.Microservice.gRpc.Test.csproj +39 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.gRpc.Test/Core/Mapster/MapsterConfigTest.cs +19 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.gRpc.Test/Services/OrderServiceTest.cs +72 -0
- package/generators/microservice/templates/microservice/tests/unit/CodeDesignPlus.Net.Microservice.gRpc.Test/Usings.cs +15 -0
- package/generators/microservice/templates/microservice/tools/convert-crlf-to-lf.sh +6 -0
- package/generators/microservice/templates/microservice/tools/sonarqube/sonar.ps1 +18 -0
- package/generators/microservice/templates/microservice/tools/sonarqube/sonar.sh +18 -0
- package/generators/microservice/templates/microservice/tools/update-packages/update-packages.ps1 +10 -0
- package/generators/microservice/templates/microservice/tools/update-packages/update-packages.sh +11 -0
- package/generators/microservice/templates/microservice/tools/upgrade-dotnet/upgrade-assistant.ps1 +10 -0
- package/generators/microservice/templates/microservice/tools/upgrade-dotnet/upgrade-assistant.sh +11 -0
- package/generators/microservice/templates/microservice/tools/vault/config-vault.ps1 +178 -0
- package/generators/microservice/templates/microservice/tools/vault/config-vault.sh +152 -0
- package/generators/microservice/templates/others/MapsterConfig.cs +9 -0
- package/generators/microservice/templates/query/ItemQuery.cs +4 -0
- package/generators/microservice/templates/query/ItemQueryHandler.cs +9 -0
- package/generators/microservice/templates/repository/IItemRepository.cs +6 -0
- package/generators/microservice/templates/repository/ItemRepository.cs +7 -0
- package/generators/microservice/templates/value-object/ItemValueObject.cs +23 -0
- package/generators/microservice/types/aggregate.mjs +19 -0
- package/generators/microservice/types/appsettings.mjs +26 -0
- package/generators/microservice/types/base.mjs +24 -0
- package/generators/microservice/types/command.mjs +38 -0
- package/generators/microservice/types/consumer.mjs +21 -0
- package/generators/microservice/types/controller.mjs +20 -0
- package/generators/microservice/types/dataTransferObject.mjs +19 -0
- package/generators/microservice/types/domainEvents.mjs +22 -0
- package/generators/microservice/types/entity.mjs +21 -0
- package/generators/microservice/types/index.mjs +25 -0
- package/generators/microservice/types/proto.mjs +19 -0
- package/generators/microservice/types/query.mjs +38 -0
- package/generators/microservice/types/repository.mjs +21 -0
- package/generators/microservice/types/valueObject.mjs +23 -0
- package/package.json +70 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
namespace CodeDesignPlus.Net.Microservice.Domain.ValueObjects;
|
|
2
|
+
|
|
3
|
+
public sealed partial class AddressValueObject
|
|
4
|
+
{
|
|
5
|
+
public AddressValueObject(string country, string state, string city, string address, int codePostal)
|
|
6
|
+
{
|
|
7
|
+
this.Country = country;
|
|
8
|
+
this.State = state;
|
|
9
|
+
this.City = city;
|
|
10
|
+
this.Address = address;
|
|
11
|
+
this.CodePostal = codePostal;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
public string Country { get; private set; }
|
|
15
|
+
public string State { get; private set; }
|
|
16
|
+
public string City { get; private set; }
|
|
17
|
+
public string Address { get; private set; }
|
|
18
|
+
public int CodePostal { get; private set; }
|
|
19
|
+
|
|
20
|
+
public static AddressValueObject Create(string country, string state, string city, string address, int codePostal)
|
|
21
|
+
{
|
|
22
|
+
DomainGuard.IsNullOrEmpty(country, Errors.CountryIsNull);
|
|
23
|
+
DomainGuard.IsNullOrEmpty(state, Errors.StateIsNull);
|
|
24
|
+
DomainGuard.IsNullOrEmpty(city, Errors.CityIsNull);
|
|
25
|
+
DomainGuard.IsNullOrEmpty(address, Errors.AddressIsNull);
|
|
26
|
+
DomainGuard.IsLessThan(codePostal, 0, Errors.CodePostalIsInvalid);
|
|
27
|
+
|
|
28
|
+
return new AddressValueObject(country, state, city, address, codePostal);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
namespace CodeDesignPlus.Net.Microservice.Domain.ValueObjects;
|
|
2
|
+
|
|
3
|
+
public sealed partial class ClientValueObject
|
|
4
|
+
{
|
|
5
|
+
public ClientValueObject(Guid id, string name, string document, string typeDocument)
|
|
6
|
+
{
|
|
7
|
+
this.Id = id;
|
|
8
|
+
this.Name = name;
|
|
9
|
+
this.Document = document;
|
|
10
|
+
this.TypeDocument = typeDocument;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
public Guid Id { get; private set; }
|
|
14
|
+
public string Name { get; private set; }
|
|
15
|
+
public string Document { get; private set; }
|
|
16
|
+
public string TypeDocument { get; private set; }
|
|
17
|
+
|
|
18
|
+
public static ClientValueObject Create(Guid id, string name, string document, string typeDocument)
|
|
19
|
+
{
|
|
20
|
+
DomainGuard.GuidIsEmpty(id, Errors.IdClientIsInvalid);
|
|
21
|
+
DomainGuard.IsNullOrEmpty(name, Errors.NameClientIsInvalid);
|
|
22
|
+
DomainGuard.IsNullOrEmpty(document, Errors.DocumentIsNull);
|
|
23
|
+
DomainGuard.IsNullOrEmpty(typeDocument, Errors.TypeDocumentIsNull);
|
|
24
|
+
|
|
25
|
+
return new ClientValueObject(id, name, document, typeDocument);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
|
2
|
+
<PropertyGroup>
|
|
3
|
+
<TargetFramework>net9.0</TargetFramework>
|
|
4
|
+
<ImplicitUsings>enable</ImplicitUsings>
|
|
5
|
+
<Nullable>enable</Nullable>
|
|
6
|
+
</PropertyGroup>
|
|
7
|
+
<PropertyGroup>
|
|
8
|
+
<PublishAot>true</PublishAot>
|
|
9
|
+
</PropertyGroup>
|
|
10
|
+
<ItemGroup>
|
|
11
|
+
<ProjectReference Include="..\CodeDesignPlus.Net.Microservice.Application\CodeDesignPlus.Net.Microservice.Application.csproj" />
|
|
12
|
+
</ItemGroup>
|
|
13
|
+
</Project>
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
namespace CodeDesignPlus.Net.Microservice.Infrastructure.Repositories;
|
|
2
|
+
|
|
3
|
+
public class OrderRepository(IServiceProvider serviceProvider, IOptions<MongoOptions> mongoOptions, ILogger<RepositoryBase> logger)
|
|
4
|
+
: RepositoryBase(serviceProvider, mongoOptions, logger), IOrderRepository
|
|
5
|
+
{
|
|
6
|
+
public Task AddProductToOrderAsync(AddProductToOrderParams parameters, CancellationToken cancellationToken)
|
|
7
|
+
{
|
|
8
|
+
var product = new ProductEntity
|
|
9
|
+
{
|
|
10
|
+
Id = parameters.IdProduct,
|
|
11
|
+
Name = parameters.Name,
|
|
12
|
+
Description = parameters.Description,
|
|
13
|
+
Price = parameters.Price,
|
|
14
|
+
Quantity = parameters.Quantity
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
var filterId = Builders<OrderAggregate>.Filter.Eq(x => x.Id, parameters.Id);
|
|
18
|
+
var update = Builders<OrderAggregate>.Update
|
|
19
|
+
.Push(x => x.Products, product)
|
|
20
|
+
.Set(x => x.UpdatedAt, parameters.UpdatedAt)
|
|
21
|
+
.Set(x => x.UpdatedBy, parameters.UpdateBy);
|
|
22
|
+
|
|
23
|
+
var collection = base.GetCollection<OrderAggregate>();
|
|
24
|
+
|
|
25
|
+
return collection.UpdateOneAsync(
|
|
26
|
+
filterId,
|
|
27
|
+
update,
|
|
28
|
+
cancellationToken: cancellationToken
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
public Task CancelOrderAsync(CancelOrderParams parameters, CancellationToken cancellationToken)
|
|
33
|
+
{
|
|
34
|
+
var filterId = Builders<OrderAggregate>.Filter.Eq(x => x.Id, parameters.Id);
|
|
35
|
+
|
|
36
|
+
var update = Builders<OrderAggregate>.Update
|
|
37
|
+
.Set(x => x.Status, parameters.OrderStatus)
|
|
38
|
+
.Set(x => x.ReasonForCancellation, parameters.Reason)
|
|
39
|
+
.Set(x => x.CancelledAt, parameters.CancelledAt)
|
|
40
|
+
.Set(x => x.UpdatedAt, parameters.UpdatedAt)
|
|
41
|
+
.Set(x => x.UpdatedBy, parameters.UpdateBy);
|
|
42
|
+
|
|
43
|
+
return base.GetCollection<OrderAggregate>().UpdateOneAsync(filterId, update, cancellationToken: cancellationToken);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
public Task CompleteOrderAsync(CompleteOrderParams parameters, CancellationToken cancellationToken)
|
|
47
|
+
{
|
|
48
|
+
var filterId = Builders<OrderAggregate>.Filter.Eq(x => x.Id, parameters.Id);
|
|
49
|
+
|
|
50
|
+
var update = Builders<OrderAggregate>.Update
|
|
51
|
+
.Set(x => x.CompletedAt, parameters.CompletedAt)
|
|
52
|
+
.Set(x => x.Status, parameters.OrderStatus)
|
|
53
|
+
.Set(x => x.UpdatedAt, parameters.UpdatedAt)
|
|
54
|
+
.Set(x => x.UpdatedBy, parameters.UpdateBy);
|
|
55
|
+
|
|
56
|
+
return base.GetCollection<OrderAggregate>().UpdateOneAsync(filterId, update, cancellationToken: cancellationToken);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
public Task CreateOrderAsync(OrderAggregate order, CancellationToken cancellationToken)
|
|
60
|
+
{
|
|
61
|
+
return this.CreateAsync(order, cancellationToken);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
public Task<OrderAggregate> FindAsync(Guid id, CancellationToken cancellationToken)
|
|
65
|
+
{
|
|
66
|
+
var filterId = Builders<OrderAggregate>.Filter.Eq(x => x.Id, id);
|
|
67
|
+
|
|
68
|
+
return base.GetCollection<OrderAggregate>().FindAsync(filterId, cancellationToken: cancellationToken).Result.FirstOrDefaultAsync(cancellationToken);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
public async Task<List<OrderAggregate>> GetAllOrdersAsync(CancellationToken cancellationToken)
|
|
72
|
+
{
|
|
73
|
+
var result = await base.GetCollection<OrderAggregate>().FindAsync(x => true, cancellationToken: cancellationToken);
|
|
74
|
+
|
|
75
|
+
return await result.ToListAsync(cancellationToken);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
public Task RemoveProductFromOrderAsync(RemoveProductFromOrderParams parameters, CancellationToken cancellationToken)
|
|
79
|
+
{
|
|
80
|
+
var filterId = Builders<OrderAggregate>.Filter.Eq(x => x.Id, parameters.Id);
|
|
81
|
+
|
|
82
|
+
var update = Builders<OrderAggregate>.Update
|
|
83
|
+
.PullFilter(x => x.Products, p => p.Id == parameters.IdProduct)
|
|
84
|
+
.Set(x => x.UpdatedAt, parameters.UpdatedAt)
|
|
85
|
+
.Set(x => x.UpdatedBy, parameters.UpdateBy);
|
|
86
|
+
|
|
87
|
+
return base.GetCollection<OrderAggregate>().UpdateOneAsync(filterId, update, cancellationToken: cancellationToken);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
public Task UpdateOrderAsync(OrderAggregate order, CancellationToken cancellationToken)
|
|
91
|
+
{
|
|
92
|
+
return this.UpdateAsync(order, cancellationToken);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
public Task UpdateQuantityProductAsync(UpdateQuantityProductParams parameters, CancellationToken cancellationToken)
|
|
96
|
+
{
|
|
97
|
+
var filterId = Builders<OrderAggregate>.Filter.And(
|
|
98
|
+
Builders<OrderAggregate>.Filter.Eq(x => x.Id, parameters.Id),
|
|
99
|
+
Builders<OrderAggregate>.Filter.ElemMatch(x => x.Products, x => x.Id == parameters.ProductId)
|
|
100
|
+
);
|
|
101
|
+
|
|
102
|
+
var update = Builders<OrderAggregate>.Update
|
|
103
|
+
.Set("Products.$.Quantity", parameters.NewQuantity)
|
|
104
|
+
.Set(x => x.UpdatedAt, parameters.UpdatedAt)
|
|
105
|
+
.Set(x => x.UpdatedBy, parameters.UpdateBy);
|
|
106
|
+
|
|
107
|
+
return base.GetCollection<OrderAggregate>().UpdateOneAsync(filterId, update, cancellationToken: cancellationToken);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
global using CodeDesignPlus.Net.Core.Abstractions;
|
|
2
|
+
global using CodeDesignPlus.Net.Mongo.Abstractions.Options;
|
|
3
|
+
global using CodeDesignPlus.Net.Mongo.Repository;
|
|
4
|
+
global using Microsoft.Extensions.Configuration;
|
|
5
|
+
global using Microsoft.Extensions.DependencyInjection;
|
|
6
|
+
global using Microsoft.Extensions.Logging;
|
|
7
|
+
global using Microsoft.Extensions.Options;
|
|
8
|
+
global using MongoDB.Driver;
|
|
9
|
+
global using CodeDesignPlus.Net.Serializers;
|
|
10
|
+
|
|
11
|
+
global using CodeDesignPlus.Net.Microservice.Domain;
|
|
12
|
+
global using CodeDesignPlus.Net.Microservice.Domain.Entities;
|
|
13
|
+
global using CodeDesignPlus.Net.Microservice.Domain.Enums;
|
|
14
|
+
global using CodeDesignPlus.Net.Microservice.Domain.Repositories;
|
|
15
|
+
global using CodeDesignPlus.Net.Microservice.Domain.DataTransferObjects;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<Project Sdk="Microsoft.NET.Sdk.Web">
|
|
2
|
+
<PropertyGroup>
|
|
3
|
+
<TargetFramework>net9.0</TargetFramework>
|
|
4
|
+
<Nullable>enable</Nullable>
|
|
5
|
+
<ImplicitUsings>enable</ImplicitUsings>
|
|
6
|
+
<InvariantGlobalization>true</InvariantGlobalization>
|
|
7
|
+
<PublishAot>false</PublishAot>
|
|
8
|
+
</PropertyGroup>
|
|
9
|
+
<ItemGroup>
|
|
10
|
+
<PackageReference Include="CodeDesignPlus.Net.Microservice.Commons" Version="0.5.0-beta.60" />
|
|
11
|
+
<PackageReference Include="CodeDesignPlus.Net.Vault" Version="0.5.0-beta.60" />
|
|
12
|
+
<PackageReference Include="CodeDesignPlus.Net.Redis" Version="0.5.0-beta.60" />
|
|
13
|
+
<PackageReference Include="CodeDesignPlus.Net.RabbitMQ" Version="0.5.0-beta.60" />
|
|
14
|
+
<PackageReference Include="CodeDesignPlus.Net.Logger" Version="0.5.0-beta.60" />
|
|
15
|
+
<PackageReference Include="CodeDesignPlus.Net.Observability" Version="0.5.0-beta.60" />
|
|
16
|
+
<PackageReference Include="CodeDesignPlus.Net.Security" Version="0.5.0-beta.60" />
|
|
17
|
+
<PackageReference Include="CodeDesignPlus.Net.Redis.Cache" Version="0.5.0-beta.60" />
|
|
18
|
+
</ItemGroup>
|
|
19
|
+
<ItemGroup>
|
|
20
|
+
<SonarQubeSetting Include="sonar.coverage.exclusions">
|
|
21
|
+
<Value>**/Program.cs</Value>
|
|
22
|
+
</SonarQubeSetting>
|
|
23
|
+
</ItemGroup>
|
|
24
|
+
<ItemGroup>
|
|
25
|
+
<ProjectReference Include="..\..\domain\CodeDesignPlus.Net.Microservice.Infrastructure\CodeDesignPlus.Net.Microservice.Infrastructure.csproj" />
|
|
26
|
+
</ItemGroup>
|
|
27
|
+
<ItemGroup>
|
|
28
|
+
<Folder Include="Consumers\" />
|
|
29
|
+
<Folder Include="DomainEvents\" />
|
|
30
|
+
</ItemGroup>
|
|
31
|
+
</Project>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
using CodeDesignPlus.Net.Logger.Extensions;
|
|
2
|
+
using CodeDesignPlus.Net.Microservice.Commons.FluentValidation;
|
|
3
|
+
using CodeDesignPlus.Net.Microservice.Commons.MediatR;
|
|
4
|
+
using CodeDesignPlus.Net.Mongo.Extensions;
|
|
5
|
+
using CodeDesignPlus.Net.RabbitMQ.Extensions;
|
|
6
|
+
using CodeDesignPlus.Net.Redis.Cache.Extensions;
|
|
7
|
+
using CodeDesignPlus.Net.Redis.Extensions;
|
|
8
|
+
using CodeDesignPlus.Net.Security.Extensions;
|
|
9
|
+
using CodeDesignPlus.Net.Vault.Extensions;
|
|
10
|
+
using Mapster;
|
|
11
|
+
|
|
12
|
+
var builder = WebApplication.CreateSlimBuilder(args);
|
|
13
|
+
|
|
14
|
+
Serilog.Debugging.SelfLog.Enable(Console.Error);
|
|
15
|
+
|
|
16
|
+
builder.Host.UseSerilog();
|
|
17
|
+
|
|
18
|
+
builder.Configuration.AddVault();
|
|
19
|
+
|
|
20
|
+
builder.Services.AddVault(builder.Configuration);
|
|
21
|
+
builder.Services.AddMongo<CodeDesignPlus.Net.Microservice.Infrastructure.Startup>(builder.Configuration);
|
|
22
|
+
builder.Services.AddRedis(builder.Configuration);
|
|
23
|
+
builder.Services.AddRabbitMQ<Program>(builder.Configuration);
|
|
24
|
+
builder.Services.AddSecurity(builder.Configuration);
|
|
25
|
+
builder.Services.AddCache(builder.Configuration);
|
|
26
|
+
builder.Services.AddMapster();
|
|
27
|
+
builder.Services.AddFluentValidation();
|
|
28
|
+
builder.Services.AddMediatR<CodeDesignPlus.Net.Microservice.Application.Startup>();
|
|
29
|
+
|
|
30
|
+
var app = builder.Build();
|
|
31
|
+
|
|
32
|
+
var home = app.MapGroup("/home");
|
|
33
|
+
|
|
34
|
+
home.MapGet("/", () => "Ready");
|
|
35
|
+
|
|
36
|
+
await app.RunAsync();
|
|
37
|
+
|
|
38
|
+
public partial class Program
|
|
39
|
+
{
|
|
40
|
+
protected Program() { }
|
|
41
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://json.schemastore.org/launchsettings.json",
|
|
3
|
+
"profiles": {
|
|
4
|
+
"http": {
|
|
5
|
+
"commandName": "Project",
|
|
6
|
+
"dotnetRunMessages": true,
|
|
7
|
+
"launchBrowser": true,
|
|
8
|
+
"launchUrl": "home",
|
|
9
|
+
"applicationUrl": "http://localhost:5246",
|
|
10
|
+
"environmentVariables": {
|
|
11
|
+
"ASPNETCORE_ENVIRONMENT": "Development"
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
global using CodeDesignPlus.Net.PubSub.Abstractions;
|
|
2
|
+
global using CodeDesignPlus.Net.RabbitMQ.Attributes;
|
|
3
|
+
global using CodeDesignPlus.Net.Serializers;
|
|
4
|
+
|
|
5
|
+
global using CodeDesignPlus.Net.Microservice.Domain.DomainEvents;
|
|
6
|
+
|
|
7
|
+
global using CodeDesignPlus.Net.Core.Abstractions;
|
|
8
|
+
global using CodeDesignPlus.Net.Core.Abstractions.Attributes;
|
|
9
|
+
global using CodeDesignPlus.Net.Microservice.Domain;
|
|
10
|
+
global using CodeDesignPlus.Net.Microservice.Domain.Entities;
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Core": {
|
|
3
|
+
"AppName": "ms-archetype",
|
|
4
|
+
"Version": "v1",
|
|
5
|
+
"Description": "Microservice Archetype Template",
|
|
6
|
+
"Business": "CodeDesignPlus",
|
|
7
|
+
"Contact": {
|
|
8
|
+
"Name": "CodeDesignPlus",
|
|
9
|
+
"Email": "codedesignplus@outlook.com"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"Security": {
|
|
13
|
+
"Authority": "https://codedesignplus.b2clogin.com/codedesignplus.onmicrosoft.com/B2C_1_CodeDeseignPlus/oauth2/v2.0/",
|
|
14
|
+
"ClientId": "a74cb192-598c-4757-95ae-b315793bbbca",
|
|
15
|
+
"IncludeErrorDetails": true,
|
|
16
|
+
"ValidateAudience": true,
|
|
17
|
+
"ValidateIssuer": true,
|
|
18
|
+
"ValidateLifetime": true,
|
|
19
|
+
"RequireHttpsMetadata": true,
|
|
20
|
+
"ValidIssuer": "https://codedesignplus.b2clogin.com/3461e311-a66e-46ab-afdf-2bbfb72a5cb0/v2.0/",
|
|
21
|
+
"ValidAudiences": [
|
|
22
|
+
"a74cb192-598c-4757-95ae-b315793bbbca"
|
|
23
|
+
],
|
|
24
|
+
"Applications": []
|
|
25
|
+
},
|
|
26
|
+
"Redis": {
|
|
27
|
+
"Instances": {
|
|
28
|
+
"Core": {
|
|
29
|
+
"ConnectionString": "localhost:6379"
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"RedisCache": {
|
|
34
|
+
"Enable": true,
|
|
35
|
+
"Expiration": "00:05:00"
|
|
36
|
+
},
|
|
37
|
+
"RabbitMQ": {
|
|
38
|
+
"Enable": true,
|
|
39
|
+
"Host": "localhost",
|
|
40
|
+
"Port": 5672,
|
|
41
|
+
"UserName": "admin",
|
|
42
|
+
"Password": "password",
|
|
43
|
+
"EnableDiagnostic": true,
|
|
44
|
+
"UseQueue": false
|
|
45
|
+
},
|
|
46
|
+
"Mongo": {
|
|
47
|
+
"Enable": true,
|
|
48
|
+
"ConnectionString": "mongodb://localhost:27017",
|
|
49
|
+
"Database": "db_archetype",
|
|
50
|
+
"Diagnostic": {
|
|
51
|
+
"Enable": true,
|
|
52
|
+
"EnableCommandText": true
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
"Logger": {
|
|
56
|
+
"Enable": true,
|
|
57
|
+
"OTelEndpoint": "http://127.0.0.1:4317"
|
|
58
|
+
},
|
|
59
|
+
"Observability": {
|
|
60
|
+
"Enable": true,
|
|
61
|
+
"ServerOtel": "http://127.0.0.1:4317",
|
|
62
|
+
"Trace": {
|
|
63
|
+
"Enable": true,
|
|
64
|
+
"AspNetCore": true,
|
|
65
|
+
"GrpcClient": false,
|
|
66
|
+
"SqlClient": false,
|
|
67
|
+
"CodeDesignPlusSdk": true,
|
|
68
|
+
"Redis": true,
|
|
69
|
+
"Kafka": false
|
|
70
|
+
},
|
|
71
|
+
"Metrics": {
|
|
72
|
+
"Enable": true,
|
|
73
|
+
"AspNetCore": true
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
"Vault": {
|
|
77
|
+
"Address": "http://127.0.0.1:8200",
|
|
78
|
+
"AppName": "ms-archetype",
|
|
79
|
+
"Solution": "archetype",
|
|
80
|
+
"Token": "root",
|
|
81
|
+
"Mongo": {
|
|
82
|
+
"TemplateConnectionString": "mongodb://{0}:{1}@localhost:27017"
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
"Serilog": {
|
|
86
|
+
"Using": [
|
|
87
|
+
"Serilog.Sinks.Console"
|
|
88
|
+
],
|
|
89
|
+
"Filter": [
|
|
90
|
+
{
|
|
91
|
+
"Name": "ByExcluding",
|
|
92
|
+
"Args": {
|
|
93
|
+
"expression": "RequestPath like '/health%'"
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
],
|
|
97
|
+
"MinimumLevel": {
|
|
98
|
+
"Default": "Verbose",
|
|
99
|
+
"Override": {
|
|
100
|
+
"Microsoft.AspNetCore.Hosting.Diagnostics": "Warning",
|
|
101
|
+
"Microsoft": "Warning",
|
|
102
|
+
"System": "Warning"
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
"Enrich": [
|
|
106
|
+
"FromLogContext"
|
|
107
|
+
],
|
|
108
|
+
"Properties": {
|
|
109
|
+
"Category": "Event"
|
|
110
|
+
},
|
|
111
|
+
"WriteTo": [
|
|
112
|
+
{
|
|
113
|
+
"Name": "Async",
|
|
114
|
+
"Args": {
|
|
115
|
+
"configure": [
|
|
116
|
+
{
|
|
117
|
+
"Name": "Console",
|
|
118
|
+
"Args": {
|
|
119
|
+
"theme": "Serilog.Sinks.SystemConsole.Themes.AnsiConsoleTheme::Code, Serilog.Sinks.Console",
|
|
120
|
+
"outputTemplate": "[{Timestamp:HH:mm:ss} {Level:u3}] [{Message:lj}] [{EscapedException}]{NewLine}",
|
|
121
|
+
"restrictedToMinimumLevel": "Verbose"
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
]
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
]
|
|
128
|
+
}
|
|
129
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
<Project Sdk="Microsoft.NET.Sdk.Web">
|
|
2
|
+
<PropertyGroup>
|
|
3
|
+
<TargetFramework>net9.0</TargetFramework>
|
|
4
|
+
<Nullable>enable</Nullable>
|
|
5
|
+
<ImplicitUsings>enable</ImplicitUsings>
|
|
6
|
+
<InvariantGlobalization>true</InvariantGlobalization>
|
|
7
|
+
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
|
8
|
+
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
|
9
|
+
<NoWarn>$(NoWarn);1591</NoWarn>
|
|
10
|
+
<DockerfileContext>..\..</DockerfileContext>
|
|
11
|
+
</PropertyGroup>
|
|
12
|
+
<ItemGroup>
|
|
13
|
+
<PackageReference Include="CodeDesignPlus.Net.Microservice.Commons" Version="0.5.0-beta.60" />
|
|
14
|
+
<PackageReference Include="CodeDesignPlus.Net.Vault" Version="0.5.0-beta.60" />
|
|
15
|
+
<PackageReference Include="Swashbuckle.AspNetCore.Swagger" Version="7.2.0" />
|
|
16
|
+
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerGen" Version="7.2.0" />
|
|
17
|
+
<PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" Version="7.2.0" />
|
|
18
|
+
<PackageReference Include="CodeDesignPlus.Net.Logger" Version="0.5.0-beta.60" />
|
|
19
|
+
<PackageReference Include="CodeDesignPlus.Net.Redis" Version="0.5.0-beta.60" />
|
|
20
|
+
<PackageReference Include="CodeDesignPlus.Net.Security" Version="0.5.0-beta.60" />
|
|
21
|
+
<PackageReference Include="CodeDesignPlus.Net.Observability" Version="0.5.0-beta.60" />
|
|
22
|
+
<PackageReference Include="CodeDesignPlus.Net.RabbitMQ" Version="0.5.0-beta.60" />
|
|
23
|
+
<PackageReference Include="CodeDesignPlus.Net.Redis.Cache" Version="0.5.0-beta.60" />
|
|
24
|
+
</ItemGroup>
|
|
25
|
+
<ItemGroup>
|
|
26
|
+
<InternalsVisibleTo Include="CodeDesignPlus.Net.Microservice.Rest.Test" />
|
|
27
|
+
</ItemGroup>
|
|
28
|
+
<ItemGroup>
|
|
29
|
+
<SonarQubeSetting Include="sonar.coverage.exclusions">
|
|
30
|
+
<Value>**/SwaggerExtensions.cs, **/Program.cs</Value>
|
|
31
|
+
</SonarQubeSetting>
|
|
32
|
+
</ItemGroup>
|
|
33
|
+
<ItemGroup>
|
|
34
|
+
<ProjectReference Include="..\..\domain\CodeDesignPlus.Net.Microservice.Infrastructure\CodeDesignPlus.Net.Microservice.Infrastructure.csproj" />
|
|
35
|
+
</ItemGroup>
|
|
36
|
+
</Project>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
3
|
+
<PropertyGroup>
|
|
4
|
+
<ActiveDebugProfile>http</ActiveDebugProfile>
|
|
5
|
+
<Controller_SelectedScaffolderID>ApiControllerEmptyScaffolder</Controller_SelectedScaffolderID>
|
|
6
|
+
<Controller_SelectedScaffolderCategoryPath>root/Common/Api</Controller_SelectedScaffolderCategoryPath>
|
|
7
|
+
</PropertyGroup>
|
|
8
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
|
9
|
+
<DebuggerFlavor>ProjectDebugger</DebuggerFlavor>
|
|
10
|
+
</PropertyGroup>
|
|
11
|
+
</Project>
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
namespace CodeDesignPlus.Net.Microservice.Rest.Controllers;
|
|
2
|
+
|
|
3
|
+
/// <summary>
|
|
4
|
+
/// Controller class responsible for handling HTTP requests related to orders.
|
|
5
|
+
/// </summary>
|
|
6
|
+
/// <remarks>
|
|
7
|
+
/// Initializes a new instance of the <see cref="OrdersController"/> class.
|
|
8
|
+
/// </remarks>
|
|
9
|
+
/// <param name="mediator">Mediator instance for sending commands and queries.</param>
|
|
10
|
+
/// <param name="mapper">Mapper instance for mapping between DTOs and commands/queries.</param>
|
|
11
|
+
[Route("api/[controller]")]
|
|
12
|
+
[ApiController]
|
|
13
|
+
public class OrdersController(IMediator mediator, IMapper mapper) : ControllerBase
|
|
14
|
+
{
|
|
15
|
+
/// <summary>
|
|
16
|
+
/// Retrieves a list of orders based on the specified criteria.
|
|
17
|
+
/// </summary>
|
|
18
|
+
/// <param name="criteria">Criteria object used for filtering orders.</param>
|
|
19
|
+
/// <param name="cancellationToken">Cancellation token (optional).</param>
|
|
20
|
+
/// <returns>An `OkObjectResult` containing the list of orders if successful, otherwise an appropriate error response.</returns>
|
|
21
|
+
[HttpGet]
|
|
22
|
+
public async Task<IActionResult> GetOrders([FromQuery] C.Criteria criteria, CancellationToken cancellationToken)
|
|
23
|
+
{
|
|
24
|
+
var result = await mediator.Send(new GetAllOrdersQuery(criteria), cancellationToken);
|
|
25
|
+
|
|
26
|
+
return Ok(result);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/// <summary>
|
|
30
|
+
/// Retrieves a specific order by its unique identifier.
|
|
31
|
+
/// </summary>
|
|
32
|
+
/// <param name="id">The unique identifier of the order.</param>
|
|
33
|
+
/// <param name="cancellationToken">Cancellation token (optional).</param>
|
|
34
|
+
/// <returns>An `OkObjectResult` containing the order details if successful, otherwise an appropriate error response.</returns>
|
|
35
|
+
[HttpGet("{id}")]
|
|
36
|
+
public async Task<IActionResult> GetOrderById(Guid id, CancellationToken cancellationToken)
|
|
37
|
+
{
|
|
38
|
+
var result = await mediator.Send(new FindOrderByIdQuery(id), cancellationToken);
|
|
39
|
+
|
|
40
|
+
return Ok(result);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/// <summary>
|
|
44
|
+
/// Creates a new order.
|
|
45
|
+
/// </summary>
|
|
46
|
+
/// <param name="data">A DTO containing the order details.</param>
|
|
47
|
+
/// <param name="cancellationToken">Cancellation token (optional).</param>
|
|
48
|
+
/// <returns>A `NoContentResult` indicating successful creation, or an appropriate error response.</returns>
|
|
49
|
+
[HttpPost]
|
|
50
|
+
public async Task<IActionResult> CreateOrder([FromBody] CreateOrderDto data, CancellationToken cancellationToken)
|
|
51
|
+
{
|
|
52
|
+
await mediator.Send(mapper.Map<CreateOrderCommand>(data), cancellationToken);
|
|
53
|
+
|
|
54
|
+
return NoContent();
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/// <summary>
|
|
58
|
+
/// Cancels an existing order.
|
|
59
|
+
/// </summary>
|
|
60
|
+
/// <param name="id">The unique identifier of the order to cancel.</param>
|
|
61
|
+
/// <param name="data">A DTO containing cancellation details (may not be required depending on implementation).</param>
|
|
62
|
+
/// <param name="cancellationToken">Cancellation token (optional).</param>
|
|
63
|
+
/// <returns>A `NoContentResult` indicating successful cancellation, or an appropriate error response.</returns>
|
|
64
|
+
[HttpDelete("{id}/cancel")]
|
|
65
|
+
public async Task<IActionResult> CancelOrder(Guid id, [FromBody] CancelOrderDto data, CancellationToken cancellationToken)
|
|
66
|
+
{
|
|
67
|
+
data.Id = id;
|
|
68
|
+
|
|
69
|
+
await mediator.Send(mapper.Map<CancelOrderCommand>(data), cancellationToken);
|
|
70
|
+
|
|
71
|
+
return NoContent();
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/// <summary>
|
|
75
|
+
/// Marks an existing order as complete.
|
|
76
|
+
/// </summary>
|
|
77
|
+
/// <param name="id">The unique identifier of the order to complete.</param>
|
|
78
|
+
/// <param name="cancellationToken">Cancellation token (optional).</param>
|
|
79
|
+
/// <returns>A `NoContentResult` indicating successful completion, or an appropriate error response.</returns>
|
|
80
|
+
[HttpPatch("{id}/complete")]
|
|
81
|
+
public async Task<IActionResult> CompleteOrder(Guid id, CancellationToken cancellationToken)
|
|
82
|
+
{
|
|
83
|
+
await mediator.Send(new CompleteOrderCommand(id), cancellationToken);
|
|
84
|
+
|
|
85
|
+
return NoContent();
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/// <summary>
|
|
89
|
+
/// Adds a product to an existing order.
|
|
90
|
+
/// </summary>
|
|
91
|
+
/// <param name="id">The unique identifier of the order to add the product to.</param>
|
|
92
|
+
/// <param name="data">A DTO containing the product details and the quantity to add.</param>
|
|
93
|
+
/// <param name="cancellationToken">Cancellation token (optional).</param>
|
|
94
|
+
/// <returns>A `NoContentResult` indicating successful addition, or an appropriate error response.</returns>
|
|
95
|
+
[HttpPost("{id}/products")]
|
|
96
|
+
public async Task<IActionResult> AddProductToOrder(Guid id, [FromBody] AddProductToOrderDto data, CancellationToken cancellationToken)
|
|
97
|
+
{
|
|
98
|
+
data.Id = id;
|
|
99
|
+
|
|
100
|
+
await mediator.Send(mapper.Map<AddProductToOrderCommand>(data), cancellationToken);
|
|
101
|
+
|
|
102
|
+
return NoContent();
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/// <summary>
|
|
106
|
+
/// Updates the quantity of a product within an existing order.
|
|
107
|
+
/// </summary>
|
|
108
|
+
/// <param name="id">The unique identifier of the order containing the product.</param>
|
|
109
|
+
/// <param name="productId">The unique identifier of the product to update the quantity for.</param>
|
|
110
|
+
/// <param name="data">A DTO containing the new quantity for the product.</param>
|
|
111
|
+
/// <param name="cancellationToken">Cancellation token (optional).</param>
|
|
112
|
+
/// <returns>A `NoContentResult` indicating successful update, or an appropriate error response.</returns>
|
|
113
|
+
[HttpPut("{id}/products/{productId}")]
|
|
114
|
+
public async Task<IActionResult> UpdateQuantityProduct(Guid id, Guid productId, [FromBody] UpdateQuantityProductDto data, CancellationToken cancellationToken)
|
|
115
|
+
{
|
|
116
|
+
data.Id = id;
|
|
117
|
+
data.ProductId = productId;
|
|
118
|
+
|
|
119
|
+
await mediator.Send(mapper.Map<UpdateQuantityProductCommand>(data), cancellationToken);
|
|
120
|
+
|
|
121
|
+
return NoContent();
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/// <summary>
|
|
125
|
+
/// Removes a product from an existing order.
|
|
126
|
+
/// </summary>
|
|
127
|
+
/// <param name="id">The unique identifier of the order containing the product.</param>
|
|
128
|
+
/// <param name="productId">The unique identifier of the product to remove.</param>
|
|
129
|
+
/// <param name="cancellationToken">Cancellation token (optional).</param>
|
|
130
|
+
/// <returns>A `NoContentResult` indicating successful removal, or an appropriate error response.</returns>
|
|
131
|
+
[HttpDelete("{id}/products/{productId}")]
|
|
132
|
+
public async Task<IActionResult> RemoveProduct(Guid id, Guid productId, CancellationToken cancellationToken)
|
|
133
|
+
{
|
|
134
|
+
await mediator.Send(new RemoveProductCommand(id, productId), cancellationToken);
|
|
135
|
+
|
|
136
|
+
return NoContent();
|
|
137
|
+
}
|
|
138
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
namespace CodeDesignPlus.Net.Microservice.Rest.Core.Mapster;
|
|
2
|
+
|
|
3
|
+
public static class MapsterConfig
|
|
4
|
+
{
|
|
5
|
+
public static void Configure()
|
|
6
|
+
{
|
|
7
|
+
TypeAdapterConfig<AddProductToOrderDto, AddProductToOrderCommand>.NewConfig().TwoWays();
|
|
8
|
+
TypeAdapterConfig<CancelOrderDto, CancelOrderCommand>.NewConfig().TwoWays();
|
|
9
|
+
TypeAdapterConfig<CreateOrderDto, CreateOrderCommand>.NewConfig().TwoWays();
|
|
10
|
+
TypeAdapterConfig<UpdateQuantityProductDto, UpdateQuantityProductCommand>.NewConfig().TwoWays();
|
|
11
|
+
}
|
|
12
|
+
}
|