Drahten

User Service Project Structure

The project is divided into four main layers:

This structured approach ensures a clear separation of concerns, making the codebase easier to manage and extend. Below is an outline of the project’s directory structure:

------------------------------------------------------------------
UserService
β”œβ”€β”€ src πŸ“¦
β”‚   β”œβ”€β”€ UserService.Domain πŸ“‚
β”‚   β”‚   β”œβ”€β”€ Entities πŸ“‚
β”‚   β”‚   β”‚   β”œβ”€β”€ _README.txt
β”‚   β”‚   β”‚   β”œβ”€β”€ AggregateRoot.cs 
β”‚   β”‚   β”‚   β”œβ”€β”€ User.cs
----------------------------
β”‚   β”‚   β”œβ”€β”€ Events πŸ“‚
β”‚   β”‚   β”‚   β”œβ”€β”€ _README.txt 
β”‚   β”‚   β”‚   β”œβ”€β”€ BannedUserAdded.cs 
β”‚   β”‚   β”‚   β”œβ”€β”€ BannedUserRemoved.cs 
β”‚   β”‚   β”‚   β”œβ”€β”€ ContactRequestAdded.cs 
β”‚   β”‚   β”‚   β”œβ”€β”€ ContactRequestRemoved.cs 
β”‚   β”‚   β”‚   β”œβ”€β”€ IDomainEvent.cs 
β”‚   β”‚   β”‚   β”œβ”€β”€ UserTrackingAuditAdded.cs
----------------------------
β”‚   β”‚   β”œβ”€β”€ Exceptions πŸ“‚
β”‚   β”‚   β”‚   β”œβ”€β”€ _README.txt 
β”‚   β”‚   β”‚   β”œβ”€β”€ <<CustomDomainLayerExceptions>>
----------------------------
β”‚   β”‚   β”œβ”€β”€ Factories πŸ“‚
β”‚   β”‚   β”‚   β”œβ”€β”€ Interfaces πŸ“‚
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ IUserFactory.cs 
β”‚   β”‚   β”‚   β”œβ”€β”€ _README.txt 
β”‚   β”‚   β”‚   β”œβ”€β”€ UserFactory.cs
----------------------------
β”‚   β”‚   β”œβ”€β”€ Repositories πŸ“‚
β”‚   β”‚   β”‚   β”œβ”€β”€ _README.txt 
β”‚   β”‚   β”‚   β”œβ”€β”€ IUserRepository.cs
----------------------------
β”‚   β”‚   β”œβ”€β”€ ValueObjects πŸ“‚
β”‚   β”‚   β”‚   β”œβ”€β”€ _README.txt 
β”‚   β”‚   β”‚   β”œβ”€β”€ BannedUser.cs 
β”‚   β”‚   β”‚   β”œβ”€β”€ ContactRequest.cs 
β”‚   β”‚   β”‚   β”œβ”€β”€ UserEmailAddress.cs 
β”‚   β”‚   β”‚   β”œβ”€β”€ UserFullName.cs 
β”‚   β”‚   β”‚   β”œβ”€β”€ UserID.cs 
β”‚   β”‚   β”‚   β”œβ”€β”€ UserNickName.cs 
β”‚   β”‚   β”‚   β”œβ”€β”€ UserTracking.cs
----------------------------
β”‚   β”œβ”€β”€ UserService.Application πŸ“‚
β”‚   β”‚   β”œβ”€β”€ AsyncDataServices πŸ“‚
β”‚   β”‚   β”‚   β”œβ”€β”€ IMessageBusPublisher.cs
----------------------------
β”‚   β”‚   β”œβ”€β”€ Commands πŸ“‚
β”‚   β”‚   β”‚   β”œβ”€β”€ Dispatcher πŸ“‚
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ _README.txt 
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ICommandDispatcher.cs 
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ InMemoryCommandDispatcher.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ Handlers πŸ“‚
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ _README.txt 
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ AddContactRequestHandler.cs 
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ AddToAuditTrailHandler.cs 
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ BanUserHandler.cs 
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ CreateUserHandler.cs 
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ICommandHandler.cs 
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ RemoveIssuedContactRequestHandler.cs 
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ RemoveReceivedContactRequestHandler.cs 
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ UnbanUserHandler.cs 
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ UpdateContactRequestMessageHandler.cs 
β”‚   β”‚   β”œβ”€β”€ _README.txt 
β”‚   β”‚   β”œβ”€β”€ AddContactRequestCommand.cs 
β”‚   β”‚   β”œβ”€β”€ AddToAuditTrailCommand.cs 
β”‚   β”‚   β”œβ”€β”€ BanUserCommand.cs 
β”‚   β”‚   β”œβ”€β”€ CreateUserCommand.cs 
β”‚   β”‚   β”œβ”€β”€ ICommand.cs 
β”‚   β”‚   β”œβ”€β”€ RemoveIssuedContactRequestCommand.cs 
β”‚   β”‚   β”œβ”€β”€ RemoveReceivedContactRequestCommand.cs 
β”‚   β”‚   β”œβ”€β”€ UnbanUserCommand.cs 
β”‚   β”‚   β”œβ”€β”€ UpdateContactRequestMessageCommand.cs
----------------------------
β”‚   β”‚   β”œβ”€β”€ Dtos πŸ“‚
β”‚   β”‚   β”‚   β”œβ”€β”€ _README.txt 
β”‚   β”‚   β”‚   β”œβ”€β”€ IssuedBanByUserDto.cs 
β”‚   β”‚   β”‚   β”œβ”€β”€ IssuedContactRequestByUserDto.cs 
β”‚   β”‚   β”‚   β”œβ”€β”€ ReceivedBanByUserDto.cs 
β”‚   β”‚   β”‚   β”œβ”€β”€ ReceivedContactRequestByUserDto.cs 
β”‚   β”‚   β”‚   β”œβ”€β”€ UserDto.cs 
β”‚   β”‚   β”‚   β”œβ”€β”€ UserPublishedDto.cs
----------------------------
β”‚   β”‚   β”œβ”€β”€ Exceptions πŸ“‚
β”‚   β”‚   β”‚   β”œβ”€β”€ _README.txt 
β”‚   β”‚   β”‚   β”œβ”€β”€ <<CustomApplicationLayerExceptions>>
----------------------------
β”‚   β”‚   β”œβ”€β”€ Extensions πŸ“‚
β”‚   β”‚   β”‚   β”œβ”€β”€ ServiceCollectionExtensions.cs
----------------------------
β”‚   β”‚   β”œβ”€β”€ Queries πŸ“‚
β”‚   β”‚   β”‚   β”œβ”€β”€ Dispatcher πŸ“‚
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ _README.txt 
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ InMemoryQueryDispatcher.cs 
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ IQueryDispatcher.cs
----------------------------
β”‚   β”‚   |   β”œβ”€β”€ Handlers πŸ“‚
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ _README.txt 
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ IQueryHandler.cs 
β”‚   β”‚   β”œβ”€β”€ _README.txt 
β”‚   β”‚   β”œβ”€β”€ GetIssuedBansByUserQuery.cs 
β”‚   β”‚   β”œβ”€β”€ GetIssuedContactRequestsByUserQuery.cs 
β”‚   β”‚   β”œβ”€β”€ GetReceivedBansByUserQuery.cs 
β”‚   β”‚   β”œβ”€β”€ GetReceivedContactRequestByUserQuery.cs 
β”‚   β”‚   β”œβ”€β”€ GetUserQuery.cs 
β”‚   β”‚   β”œβ”€β”€ IQuery.cs
----------------------------
β”‚   β”‚   β”œβ”€β”€ Services πŸ“‚
β”‚   β”‚   β”‚   β”œβ”€β”€ ReadServices πŸ“‚
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ IUserReadService.cs
β”‚   β”‚   |   β”œβ”€β”€ _README.txt
----------------------------
β”‚   β”œβ”€β”€ UserService.Infrastructure πŸ“‚
β”‚   β”‚   β”œβ”€β”€ AsyncDataServices πŸ“‚
β”‚   β”‚   β”‚   β”œβ”€β”€ MessageBusPublisher.cs
----------------------------
β”‚   β”‚   β”œβ”€β”€ Automapper πŸ“‚
β”‚   β”‚   β”‚   β”œβ”€β”€ Profiles πŸ“‚
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ BannedUserProfile.cs
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ContactRequestProfile.cs
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ UserProfile.cs
----------------------------
β”‚   β”‚   β”œβ”€β”€ EntityFramework πŸ“‚
β”‚   β”‚   β”‚   β”œβ”€β”€ Contexts πŸ“‚
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ReadDbContext.cs
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ WriteDbContext.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ Encryption πŸ“‚
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ EncryptionConverters πŸ“‚
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ EncryptedDateTimeOffsetConverter.cs
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ EncryptedStringConverter.cs
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ EncryptedUserEmailAddressConverter.cs
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ EncryptedUserFullNameConverter.cs
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ EncryptedUserNickNameConverter.cs
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ EncryptionProvider πŸ“‚
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ IEncryptionProvider.cs
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ EncryptionProvider.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ Initialization πŸ“‚
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ DbInitializer.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ Migrations πŸ“‚
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ <<EntityFramework database migrations>>
β”‚   β”‚   β”‚   β”œβ”€β”€ ModelConfiguration πŸ“‚
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ReadConfiguration πŸ“‚
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ _README.txt
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ BannedUserConfiguration.cs
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ContactRequestConfiguration.cs
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ UserConfiguration.cs
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ UserTrackingConfiguration.cs
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ WriteConfiguration πŸ“‚
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ BannedUserConfiguration.cs
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ContactRequestConfiguration.cs
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ UserConfiguration.cs
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ UserTrackingConfiguration.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ Models πŸ“‚
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ _README.txt
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ BannedUserReadModel.cs
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ContactRequestReadModel.cs
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ UserReadModel.cs
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ UserTrackingReadModel.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ Options πŸ“‚
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ PostgresOptions.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ Repositories πŸ“‚
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ PostgresUserRepository.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ Services πŸ“‚
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ ReadServices πŸ“‚
β”‚   β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ PostgresUserReadService.cs
----------------------------
β”‚   β”‚   β”œβ”€β”€ Exceptions πŸ“‚
β”‚   β”‚   β”‚   β”œβ”€β”€ Interfaces πŸ“‚
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ IExceptionToResponseMapper.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ ExceptionResponse.cs 
β”‚   β”‚   β”‚   β”œβ”€β”€ ExceptionToResponseMapper.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ InfrastructureException.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ NullDbContextException.cs
----------------------------
β”‚   β”‚   β”œβ”€β”€ Extensions πŸ“‚
β”‚   β”‚   β”‚   β”œβ”€β”€ ServiceCollectionExtensions.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ ConfigurationExtensions.cs
----------------------------
β”‚   β”‚   β”œβ”€β”€ Logging πŸ“‚
β”‚   β”‚   β”‚   β”œβ”€β”€ Formatters πŸ“‚
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ SerilogJsonFormatter.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ LoggingCommandHandlerDecorator.cs
----------------------------
β”‚   β”‚   β”œβ”€β”€ Queries πŸ“‚
β”‚   β”‚   β”‚   β”œβ”€β”€ Handlers πŸ“‚
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ GetIssuedBansByUserHandler.cs
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ GetIssuedContactRequestsByUserHandler.cs
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ GetReceivedBansByUserHandler.cs
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ GetReceivedContactRequestByUserHandler.cs
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ GetUserHandler.cs
----------------------------
β”‚   β”‚   β”œβ”€β”€ UserRegistration πŸ“‚
β”‚   β”‚   β”‚   β”œβ”€β”€ IUserSynchronizer.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ UserSynchronizer.cs
----------------------------
β”‚   β”œβ”€β”€ UserService.Presentation πŸ“‚
β”‚   β”‚   β”œβ”€β”€ Properties πŸ“‚
β”‚   β”‚   β”‚   β”œβ”€β”€ launchSettings.json
β”‚   β”‚   β”œβ”€β”€ Controllers πŸ“‚
β”‚   β”‚   β”‚   β”œβ”€β”€ UserController.cs
β”‚   β”‚   β”œβ”€β”€ Dtos πŸ“‚
β”‚   β”‚   β”‚   β”œβ”€β”€ ResponseDto.cs
β”‚   β”‚   β”œβ”€β”€ Middlewares πŸ“‚
β”‚   β”‚   β”‚   β”œβ”€β”€ ErrorHandlerMiddleware.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ RateLimitingMiddleware.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ UserRegistrationMiddleware.cs
β”‚   β”‚   β”œβ”€β”€ appsettings.json
β”‚   β”‚   β”œβ”€β”€ Program.cs
----------------------------
β”œβ”€β”€ tests πŸ§ͺ
β”‚   β”œβ”€β”€ UserService.Tests.EndToEnd
β”‚   β”‚   β”œβ”€β”€ Extensions πŸ“‚
β”‚   β”‚   β”‚   β”œβ”€β”€ IServiceCollectionExtensions.cs
β”‚   β”‚   β”œβ”€β”€ Factories πŸ“‚
β”‚   β”‚   β”‚   β”œβ”€β”€ UserServiceApplicationFactory.cs
β”‚   β”‚   β”œβ”€β”€ Sync πŸ“‚
β”‚   β”‚   β”‚   β”œβ”€β”€ _README.txt
β”‚   β”‚   β”‚   β”œβ”€β”€ BaseSyncIntegrationTest.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ RegisterBannedUserTests.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ RegisterContactRequestTests.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ RegisterUserActivityTests.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ RegisterUserTests.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ RemoveBannedUserTests.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ RemoveIssuedContactRequestTests.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ RemoveReceivedContactRequestTests.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ UpdateContactRequestMessageTests.cs
----------------------------
β”‚   β”œβ”€β”€ UserService.Tests.Unit
β”‚   β”‚   β”œβ”€β”€ Application πŸ“‚
β”‚   β”‚   β”‚   β”œβ”€β”€ Handlers πŸ“‚
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ AddContactRequestHandlerTests.cs
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ AddToAuditTrailHandlerTests.cs
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ BanUserHandlerTests.cs
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ CreateUserHandlerTests.cs
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ RemoveIssuedContactRequestHandlerTests.cs
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ RemoveReceivedContactRequestHandlerTests.cs
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ UnbanUserHandlerTests.cs
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ UpdateContactRequestMessageHandlerTests.cs
β”‚   β”‚   β”œβ”€β”€ Domain πŸ“‚
β”‚   β”‚   β”‚   β”œβ”€β”€ Entities πŸ“‚
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ UserTests πŸ“‚
β”‚   β”‚   β”‚   β”‚   |   β”œβ”€β”€ _README.txt
β”‚   β”‚   β”‚   β”‚   |   β”œβ”€β”€ AddToAuditTrail.cs
β”‚   β”‚   β”‚   β”‚   |   β”œβ”€β”€ BanUser.cs
β”‚   β”‚   β”‚   β”‚   |   β”œβ”€β”€ IssueContactRequest.cs
β”‚   β”‚   β”‚   β”‚   |   β”œβ”€β”€ ReceiveContactRequest.cs
β”‚   β”‚   β”‚   β”‚   |   β”œβ”€β”€ RemoveReceivedContactRequest.cs
β”‚   β”‚   β”‚   β”‚   |   β”œβ”€β”€ UnbanUser.cs
β”‚   β”‚   β”‚   β”œβ”€β”€ Factories πŸ“‚
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ _README.txt
β”‚   β”‚   β”‚   β”‚   β”œβ”€β”€ UserFactoryTests.cs
------------------------------------------------------------------

Directory/File Descriptions

Layer Directory/File Description
Domain UserService/src/UserService.Domain/Entities/ Contains domain entities representing core business concepts.
Domain UserService/src/UserService.Domain/Events/ Includes domain events capturing significant changes or actions.
Domain UserService/src/UserService.Domain/Exceptions/ Houses custom exceptions specific to domain logic.
Domain UserService/src/UserService.Domain/Factories/ Provides factories for creating domain entities.
Domain UserService/src/UserService.Domain/Repositories/ Defines interfaces or base classes for data access operations.
Domain UserService/src/UserService.Domain/ValueObjects/ Contains immutable value objects used within the domain.
Application UserService/src/UserService.Application/AsyncDataServices/ Defines interfaces for asynchronous operations.
Application UserService/src/UserService.Application/Commands/ Contains command types and serves as the central location for defining and organizing commands.
Application UserService/src/UserService.Application/Commands/Dispatcher/ Contains command dispatcher type and serves as the central component responsible for
routing commands to their respective command handlers. Β  Β 
Application UserService/src/UserService.Application/Commands/Handlers/ Contains command handler types that implement ICommandHandler interface and plays a crucial role in implementing
Command Query Responsibility Segregation (CQRS). Β  Β 
Application UserService/src/UserService.Application/Dtos/ Contains Data Transfer Objects (DTOs).
Application UserService/src/UserService.Application/Exceptions/ Contains Application layer specific custom exception types.
Application UserService/src/UserService.Application/Extensions/ Contains custom extension methods.
Application UserService/src/UserService.Application/Queries/ Contains query types and serves as the central location for defining and organizing queries.
Application UserService/src/UserService.Application/Queries/Dispatcher/ Contains query dispatcher type that implements IQueryDispatcher interface and serves as the central component responsible for
routing queries to their respective query handlers for execution and data retrieval. Β  Β 
Application UserService/src/UserService.Application/Queries/Handlers/ Contains the definition of the IQueryHandler<TQuery, TResult> interface, which serves as a contract for all query handlers
responsible for executing queries and retrieving data from the application’s read-side or queryable data sources. Β  Β 
Application UserService/src/UserService.Application/Services/ Implements application services containing business logic.
Infrastructure UserService/src/UserService.Infrastructure/AsyncDataServices/ Defines implementations of interfaces for asynchronous operations.
Infrastructure UserService/src/UserService.Infrastructure/Automapper/ Contains types, that are inheriting the Profile type from AutoMapper library.
Infrastructure UserService/src/UserService.Infrastructure/EntityFramework/Contexts/ Contains two EntityFramework DbContext classes - ReadDbContext and WriteDbContext.
Infrastructure UserService/src/UserService.Infrastructure/EntityFramework/Encryption/ Contains custom EntityFramework encryption converters and encryption provider.
Infrastructure UserService/src/UserService.Infrastructure/EntityFramework/Initialization/ Contains DbInitializer class that applies entity framework migrations.
Infrastructure UserService/src/UserService.Infrastructure/EntityFramework/Migrations/ Contains EntityFramework migrations.
Infrastructure UserService/src/UserService.Infrastructure/EntityFramework/ModelConfiguration/ReadConfiguration/ Contains classes that implement IEntityTypeConfiguration and are containing configuration for the database models.
Infrastructure UserService/src/UserService.Infrastructure/EntityFramework/ModelConfiguration/WriteConfiguration/ Contains classes that implement IEntityTypeConfiguration and are containing configuration for DOMAIN entities and value objects.
Infrastructure UserService/src/UserService.Infrastructure/EntityFramework/Models/ Contains classes for the database models that represent the database tables and the overall database schema.
Infrastructure UserService/src/UserService.Infrastructure/EntityFramework/Options/ Contains class that is used for the OPTIONS pattern.
Infrastructure UserService/src/UserService.Infrastructure/EntityFramework/Repositories/ Contains implementations of interfaces for data access operations.
Infrastructure UserService/src/UserService.Infrastructure/EntityFramework/Services/ Contains implementations of interfaces for services containing business logic.
Infrastructure UserService/src/UserService.Infrastructure/Exceptions/ Contains Infrastructure layer specific custom exception types.
Infrastructure UserService/src/UserService.Infrastructure/Extensions/ Contains custom extension methods.
Infrastructure UserService/src/UserService.Infrastructure/Logging/ Contains logging decorators and formatters. The purpose of the decorators is to wrap the behaviour of a Command Handler or other part of the application and to enrich it’s capabilities with the ability to log information.
Infrastructure UserService/src/UserService.Infrastructure/Queries/ Contains query handlers that work with the queries from the Command Query Responsibility Segregation (CQRS) approach.
Infrastructure UserService/src/UserService.Infrastructure/UserRegistration/ Contains UserSynchronizer that synchronizes a user with this service.
Presentation UserService/src/UserService.Presentation/Properties/ Contains the application properties related to port and protocol configuration.
Presentation UserService/src/UserService.Presentation/Controllers/ Contains API controllers handling HTTP requests and responses.
Presentation UserService/src/UserService.Presentation/DTOs/ Provides Data Transfer Objects (DTOs) for API input and output.
Presentation UserService/src/UserService.Presentation/Middlewares/ Contains custom middlewares.