From 2e02f1b3bf56980a2e2aa533db9d5e8b6e6eba17 Mon Sep 17 00:00:00 2001 From: Meysam Hadeli Date: Thu, 3 Jul 2025 23:22:26 +0330 Subject: [PATCH] refactor: refactor structure of project --- .github/workflows/ci.yml | 24 +- 1-monolith-architecture-style/README.md | 110 - .../assets/booking-monolith.drawio | 348 - .../assets/booking-monolith.png | Bin 400604 -> 0 bytes 1-monolith-architecture-style/booking.rest | 230 - .../grafana/dashboards/dotnet-core.json | 1307 --- .../grafana/dashboards/node-exporter.json | 892 -- .../grafana/dashboards/postgresql.json | 1459 --- .../provisioning/dashboards/dashboard.yml | 14 - .../provisioning/datasources/datasource.yml | 88 - .../configs/otel-collector-config.yaml | 131 - .../deployments/configs/prometheus.yaml | 48 - .../deployments/configs/tempo.yaml | 49 - .../docker-compose.infrastructure.yaml | 361 - .../docker-compose/docker-compose.yaml | 365 - .../src/Api/src/Api.csproj | 11 - .../Api/src/Extensions/MediatRExtensions.cs | 23 - .../SharedInfrastructureExtensions.cs | 171 - .../src/Api/src/Program.cs | 24 - .../Api/src/Properties/launchSettings.json | 15 - .../src/Api/src/appsettings.docker.json | 2 - .../src/Api/src/appsettings.json | 58 - .../src/Api/src/appsettings.test.json | 2 - ...-key-296345BF73910ADD1DAC302B848E47E7.json | 1 - ...-key-73D9025BDA857BF270C99C6594EE4246.json | 1 - .../src/Booking/BookingEventMapper.cs | 26 - .../src/Booking/BookingProjection.cs | 53 - .../src/Booking/BookingRoot.cs | 6 - .../Bookings/Dtos/CreateReservation.cs | 4 - .../BookingAlreadyExistException.cs | 11 - .../Exceptions/FlightNotFoundException.cs | 11 - .../Exceptions/InvalidAircraftIdException.cs | 11 - .../InvalidArriveAirportIdException.cs | 11 - .../InvalidDepartureAirportIdException.cs | 11 - .../Exceptions/InvalidFlightDateException.cs | 11 - .../InvalidFlightNumberException.cs | 11 - .../InvalidPassengerNameException.cs | 11 - .../Exceptions/InvalidPriceException.cs | 12 - .../Exceptions/SeatNumberException.cs | 12 - .../Bookings/Features/BookingMappings.cs | 22 - .../Features/CreatingBook/V1/CreateBooking.cs | 137 - .../src/Booking/Bookings/Models/Booking.cs | 49 - .../Bookings/Models/BookingReadModel.cs | 12 - .../Bookings/ValueObjects/PassengerInfo.cs | 23 - .../src/Booking/Bookings/ValueObjects/Trip.cs | 69 - .../src/Booking/Data/BookingReadDbContext.cs | 18 - .../src/BookingMonolith.csproj | 20 - .../src/BookingMonolithRoot.cs | 6 - .../src/Flight/Aircrafts/Dtos/AircraftDto.cs | 3 - .../AircraftAlreadyExistException.cs | 11 - .../Exceptions/InvalidAircraftIdException.cs | 11 - .../InvalidManufacturingYearException.cs | 10 - .../Exceptions/InvalidModelException.cs | 10 - .../Exceptions/InvalidNameException.cs | 10 - .../Aircrafts/Features/AircraftMappings.cs | 24 - .../CreatingAircraft/V1/CreateAircraft.cs | 104 - .../V1/CreateAircraftMongo.cs | 48 - .../src/Flight/Aircrafts/Models/Aircraft.cs | 34 - .../Aircrafts/Models/AircraftReadModel.cs | 11 - .../Aircrafts/ValueObjects/AircraftId.cs | 28 - .../ValueObjects/ManufacturingYear.cs | 28 - .../Flight/Aircrafts/ValueObjects/Model.cs | 28 - .../src/Flight/Aircrafts/ValueObjects/Name.cs | 28 - .../src/Flight/Airports/Dtos/AirportDto.cs | 3 - .../AirportAlreadyExistException.cs | 11 - .../Exceptions/InvalidAddressException.cs | 10 - .../Exceptions/InvalidAirportIdException.cs | 11 - .../Exceptions/InvalidCodeException.cs | 10 - .../Exceptions/InvalidNameException.cs | 10 - .../Airports/Features/AirportMappings.cs | 23 - .../CreatingAirport/V1/CreateAirport.cs | 102 - .../CreatingAirport/V1/CreateAirportMongo.cs | 48 - .../src/Flight/Airports/Models/Airport.cs | 34 - .../Airports/Models/AirportReadModel.cs | 11 - .../Flight/Airports/ValueObjects/Address.cs | 28 - .../Flight/Airports/ValueObjects/AirportId.cs | 28 - .../src/Flight/Airports/ValueObjects/Code.cs | 28 - .../src/Flight/Airports/ValueObjects/Name.cs | 28 - .../Configurations/AircraftConfiguration.cs | 55 - .../Configurations/AirportConfiguration.cs | 56 - .../Configurations/FlightConfiguration.cs | 112 - .../Data/Configurations/SeatConfiguration.cs | 49 - .../Flight/Data/DesignTimeDbContextFactory.cs | 17 - .../src/Flight/Data/EfTxFlightBehavior.cs | 100 - .../src/Flight/Data/FlightDbContext.cs | 44 - .../src/Flight/Data/FlightReadDbContext.cs | 26 - .../20250407215512_initial.Designer.cs | 584 -- .../Data/Migrations/20250407215512_initial.cs | 182 - .../FlightDbContextModelSnapshot.cs | 581 -- .../RegisterFlightConfigurationAttribute.cs | 4 - .../src/Flight/Data/Seed/FlightDataSeeder.cs | 88 - .../src/Flight/Data/Seed/InitialData.cs | 58 - .../BookingMonolith/src/Flight/Data/readme.md | 2 - .../src/Flight/FlightEventMapper.cs | 49 - .../BookingMonolith/src/Flight/FlightRoot.cs | 6 - .../src/Flight/Flights/Dtos/FlightDto.cs | 4 - .../src/Flight/Flights/Enums/FlightStatus.cs | 10 - .../Exceptions/FlightAlreadyExistException.cs | 11 - .../Exceptions/FlightNotFountException.cs | 11 - .../Exceptions/InvalidArriveDateException.cs | 11 - .../InvalidDepartureDateException.cs | 11 - .../Exceptions/InvalidDurationException.cs | 11 - .../Exceptions/InvalidFlightDateException.cs | 11 - .../Exceptions/InvalidFlightIdException.cs | 11 - .../InvalidFlightNumberException.cs | 11 - .../Exceptions/InvalidPriceException.cs | 11 - .../CreatingFlight/V1/CreateFlight.cs | 124 - .../CreatingFlight/V1/CreateFlightMongo.cs | 49 - .../DeletingFlight/V1/DeleteFlight.cs | 110 - .../DeletingFlight/V1/DeleteFlightMongo.cs | 53 - .../Flight/Flights/Features/FlightMappings.cs | 47 - .../V1/GetAvailableFlights.cs | 85 - .../GettingFlightById/V1/GetFlightById.cs | 89 - .../UpdatingFlight/V1/UpdateFlight.cs | 122 - .../UpdatingFlight/V1/UpdateFlightMongo.cs | 64 - .../src/Flight/Flights/Models/Flight.cs | 101 - .../Flight/Flights/Models/FlightReadModel.cs | 18 - .../Flight/Flights/ValueObjects/ArriveDate.cs | 28 - .../Flights/ValueObjects/DepartureDate.cs | 28 - .../Flights/ValueObjects/DurationMinutes.cs | 33 - .../Flight/Flights/ValueObjects/FlightDate.cs | 28 - .../Flight/Flights/ValueObjects/FlightId.cs | 28 - .../Flights/ValueObjects/FlightNumber.cs | 28 - .../src/Flight/Flights/ValueObjects/Price.cs | 28 - .../src/Flight/Seats/Dtos/SeatDto.cs | 3 - .../src/Flight/Seats/Enums/SeatClass.cs | 9 - .../src/Flight/Seats/Enums/SeatType.cs | 9 - .../Seats/Exceptions/AllSeatsFullException.cs | 10 - .../Exceptions/InvalidSeatIdException.cs | 11 - .../Exceptions/InvalidSeatNumberException.cs | 10 - .../Exceptions/SeatAlreadyExistException.cs | 11 - .../SeatNumberIncorrectException.cs | 10 - .../Features/CreatingSeat/V1/CreateSeat.cs | 110 - .../CreatingSeat/V1/CreateSeatMongo.cs | 49 - .../V1/GetAvailableSeats.cs | 90 - .../Features/ReservingSeat/V1/ReserveSeat.cs | 98 - .../ReservingSeat/V1/ReserveSeatMongo.cs | 42 - .../src/Flight/Seats/Features/SeatMappings.cs | 34 - .../src/Flight/Seats/Models/Seat.cs | 58 - .../src/Flight/Seats/Models/SeatReadModel.cs | 12 - .../src/Flight/Seats/ValueObjects/SeatId.cs | 28 - .../Flight/Seats/ValueObjects/SeatNumber.cs | 28 - .../Identity/Configurations/AuthOptions.cs | 6 - .../src/Identity/Configurations/Config.cs | 83 - .../Identity/Configurations/UserValidator.cs | 53 - .../Configurations/RoleClaimConfiguration.cs | 22 - .../Data/Configurations/RoleConfiguration.cs | 23 - .../Configurations/UserClaimConfiguration.cs | 22 - .../Data/Configurations/UserConfiguration.cs | 23 - .../Configurations/UserLoginConfiguration.cs | 20 - .../Configurations/UserRoleConfiguration.cs | 19 - .../Configurations/UserTokenConfiguration.cs | 19 - .../Data/DesignTimeDbContextFactory.cs | 16 - .../src/Identity/Data/EfTxIdentityBehavior.cs | 100 - .../src/Identity/Data/IdentityContext.cs | 176 - .../20250407214345_initial.Designer.cs | 381 - .../Data/Migrations/20250407214345_initial.cs | 263 - .../IdentityContextModelSnapshot.cs | 378 - .../RegisterIdentityConfigurationAttribute.cs | 4 - .../Identity/Data/Seed/IdentityDataSeeder.cs | 100 - .../src/Identity/Data/Seed/InitialData.cs | 36 - .../src/Identity/Data/readme.md | 2 - .../IdentityServerExtensions.cs | 64 - .../Identities/Constants/Constants.cs | 14 - .../RegisterIdentityUserException.cs | 10 - .../Identities/Features/IdentityMappings.cs | 14 - .../RegisteringNewUser/V1/RegisterNewUser.cs | 132 - .../src/Identity/Identities/Models/Role.cs | 9 - .../Identity/Identities/Models/RoleClaim.cs | 9 - .../src/Identity/Identities/Models/User.cs | 12 - .../Identity/Identities/Models/UserClaim.cs | 9 - .../Identity/Identities/Models/UserLogin.cs | 9 - .../Identity/Identities/Models/UserRole.cs | 9 - .../Identity/Identities/Models/UserToken.cs | 9 - .../src/Identity/IdentityEventMapper.cs | 23 - .../src/Identity/IdentityRoot.cs | 6 - .../Configurations/PassengerConfiguration.cs | 60 - .../Data/DesignTimeDbContextFactory.cs | 16 - .../Passenger/Data/EfTxPassengerBehavior.cs | 100 - .../20250407215445_initial.Designer.cs | 151 - .../Data/Migrations/20250407215445_initial.cs | 48 - .../PassengerDbContextModelSnapshot.cs | 148 - .../src/Passenger/Data/PassengerDbContext.cs | 37 - .../Passenger/Data/PassengerReadDbContext.cs | 17 - ...RegisterPassengerConfigurationAttribute.cs | 4 - .../src/Passenger/Data/readme.md | 2 - .../Exceptions/InvalidAgeException.cs | 10 - .../Exceptions/InvalidNameException.cs | 10 - .../Exceptions/InvalidPassengerIdException.cs | 11 - .../InvalidPassportNumberException.cs | 10 - .../Exceptions/PassengerAlreadyExist.cs | 11 - .../Exceptions/PassengerNotFoundException.cs | 11 - .../V1/PassengerCreatedDomainEvent.cs | 5 - .../RegisteringNewUser/V1/RegisterNewUser.cs | 59 - .../src/Passenger/PassengerEventMapper.cs | 32 - .../src/Passenger/PassengerRoot.cs | 6 - .../Passenger/Passengers/Dtos/PassengerDto.cs | 2 - .../Passengers/Enums/PassengerType.cs | 9 - .../Exceptions/InvalidAgeException.cs | 10 - .../Exceptions/InvalidNameException.cs | 10 - .../InvalidPassportNumberException.cs | 10 - .../Exceptions/PassengerAlreadyExist.cs | 11 - .../Exceptions/PassengerNotFoundException.cs | 11 - .../V1/CompleteRegisterPassenger.cs | 117 - .../V1/CompleteRegisterPassengerMongo.cs | 61 - .../V1/GetPassengerById.cs | 89 - .../Passengers/Features/PassengerMappings.cs | 27 - .../Passenger/Passengers/Models/Passenger.cs | 44 - .../Passengers/Models/PassengerReadModel.cs | 11 - .../Passenger/Passengers/ValueObjects/Age.cs | 28 - .../Passenger/Passengers/ValueObjects/Name.cs | 28 - .../Passengers/ValueObjects/PassengerId.cs | 28 - .../Passengers/ValueObjects/PassportNumber.cs | 33 - .../src/BookingMonolith/tests/.gitkeep | 0 .../README.md | 111 - .../assets/booking-modular-monolith.drawio | 363 - .../assets/booking-modular-monolith.png | Bin 517223 -> 0 bytes .../booking.rest | 230 - .../deployments/.gitkeep | 0 .../deployments/configs/dashboards.md | 8 - .../dashboards/dotnet-core-endpoint.json | 908 -- .../grafana/dashboards/dotnet-core.json | 1307 --- .../grafana/dashboards/postgresql.json | 1459 --- .../configs/grafana/dashboards/rabbitmq.json | 8209 ----------------- .../provisioning/datasources/datasource.yml | 88 - .../deployments/configs/loki-config.yaml | 44 - .../deployments/configs/prometheus.yaml | 48 - .../deployments/configs/tempo.yaml | 49 - .../docker-compose.infrastructure.yaml | 361 - .../docker-compose/docker-compose.yaml | 365 - .../src/Api/dev.Dockerfile | 54 - .../src/Api/src/Api.csproj | 14 - .../SharedInfrastructureExtensions.cs | 134 - .../src/Api/src/Program.cs | 38 - .../Api/src/Properties/launchSettings.json | 15 - .../src/Api/src/appsettings.Development.json | 8 - .../src/Api/src/appsettings.docker.json | 2 - .../src/Api/src/appsettings.json | 62 - .../src/Api/src/appsettings.test.json | 2 - .../Features/CreatingBook/V1/CreateBooking.cs | 146 - .../Infrastructure/GrpcClientExtensions.cs | 33 - .../InfrastructureExtensions.cs | 38 - .../Infrastructure/MediatRExtensions.cs | 21 - .../src/GrpcClient/Protos/flight.proto | 85 - .../src/GrpcClient/Protos/passenger.proto | 34 - .../src/Modules/Booking/tests/.gitkeep | 0 .../Booking/Features/CreateBookingTests.cs | 85 - .../BookingIntegrationTestBase.cs | 20 - .../Fakes/FakeFlightResponse.cs | 31 - .../Fakes/FakeGetAvailableSeatsResponse.cs | 36 - .../Fakes/FakePassengerResponse.cs | 22 - .../Fakes/FakeReserveSeatResponse.cs | 14 - .../Integration.Test/Integration.Test.csproj | 22 - .../src/Modules/Booking/tests/tests.sln | 25 - .../Flight/src/Data/EfTxFlightBehavior.cs | 100 - .../Flight/src/Data/FlightDbContext.cs | 33 - .../InfrastructureExtensions.cs | 40 - .../Infrastructure/MediatRExtensions.cs | 23 - .../src/Modules/Flight/src/Flight.csproj | 28 - .../src/Modules/Flight/tests/.gitkeep | 0 .../tests/EndToEnd.Test/EndToEnd.Test.csproj | 22 - .../Flight/Features/CreateFlightTests.cs | 33 - .../Flight/Features/GetFlightByIdTests.cs | 34 - .../EndToEnd.Test/FlightEndToEndTestBase.cs | 20 - .../Aircraft/Features/CreateAircraftTests.cs | 33 - .../Airport/Features/CreateAirportTests.cs | 33 - .../Flight/Features/CreateFlightTests.cs | 33 - .../Flight/Features/DeleteFlightTests.cs | 45 - .../Features/GetAvailableFlightsTests.cs | 39 - .../Flight/Features/GetFlightByIdTests.cs | 56 - .../Flight/Features/UpdateFlightTests.cs | 40 - .../FlightIntegrationTestBase.cs | 20 - .../Integration.Test/Integration.Test.csproj | 22 - .../Seat/Features/GetAvailableSeatsTests.cs | 40 - .../Seat/Features/ReserveSeatTests.cs | 42 - .../Flight/tests/Unit.Test/Unit.Test.csproj | 23 - .../src/Modules/Flight/tests/tests.sln | 37 - .../Identity/src/Configurations/Config.cs | 83 - .../Identity/src/Data/EfTxIdentityBehavior.cs | 100 - .../src/Data/Seed/IdentityDataSeeder.cs | 104 - .../InfrastructureExtensions.cs | 45 - .../Infrastructure/MediatRExtensions.cs | 25 - .../src/Identity/Constants/Constants.cs | 14 - .../RegisteringNewUser/V1/RegisterNewUser.cs | 137 - .../src/Modules/Identity/tests/.gitkeep | 0 .../Identity/Features/RegisterNewUserTests.cs | 34 - .../IdentityIntegrationTestBase.cs | 21 - .../Integration.Test/Integration.Test.csproj | 22 - .../src/Modules/Identity/tests/tests.sln | 25 - .../src/Modules/Passenger/src/AssemblyInfo.cs | 6 - .../src/Data/EfTxPassengerBehavior.cs | 100 - .../InfrastructureExtensions.cs | 37 - .../Infrastructure/MediatRExtensions.cs | 23 - .../V1/CompleteRegisterPassenger.cs | 117 - .../src/Modules/Passenger/tests/.gitkeep | 0 .../Integration.Test/Integration.Test.csproj | 22 - .../CompleteRegisterPassengerTests.cs | 41 - .../Features/GetPassengerByIdTests.cs | 56 - .../PassengerIntegrationTestBase.cs | 21 - .../src/Modules/Passenger/tests/tests.sln | 25 - 3-microservices-architecture-style/README.md | 143 - .../deployments/configs/dashboards.md | 8 - .../dashboards/dotnet-core-endpoint.json | 908 -- .../grafana/dashboards/node-exporter.json | 892 -- .../configs/grafana/dashboards/rabbitmq.json | 8209 ----------------- .../provisioning/dashboards/dashboard.yml | 14 - .../deployments/configs/loki-config.yaml | 44 - .../configs/otel-collector-config.yaml | 131 - .../src/ApiGateway/src/ApiGateway.csproj | 5 - .../src/appsettings.Development.json | 8 - .../src/Services/Booking/Dockerfile | 47 - .../src/Services/Booking/dev.Dockerfile | 50 - .../Booking/src/Booking/AssemblyInfo.cs | 6 - .../Booking/src/Booking/Booking.csproj | 20 - .../Booking/Booking/Dtos/CreateReservation.cs | 4 - .../BookingAlreadyExistException.cs | 11 - .../Exceptions/FlightNotFoundException.cs | 11 - .../Exceptions/InvalidAircraftIdException.cs | 11 - .../InvalidArriveAirportIdException.cs | 11 - .../InvalidDepartureAirportIdException.cs | 11 - .../Exceptions/InvalidFlightDateException.cs | 11 - .../InvalidFlightNumberException.cs | 11 - .../InvalidPassengerNameException.cs | 11 - .../Exceptions/InvalidPriceException.cs | 12 - .../Booking/Exceptions/SeatNumberException.cs | 12 - .../Booking/Features/BookingMappings.cs | 23 - .../src/Booking/Booking/Models/Booking.cs | 50 - .../Booking/Models/BookingReadModel.cs | 12 - .../Booking/ValueObjects/PassengerInfo.cs | 23 - .../src/Booking/Booking/ValueObjects/Trip.cs | 69 - .../Booking/src/Booking/BookingEventMapper.cs | 27 - .../Booking/src/Booking/BookingProjection.cs | 54 - .../Booking/src/Booking/BookingRoot.cs | 6 - .../src/Booking/Configuration/GrpcOptions.cs | 7 - .../src/Booking/Data/BookingReadDbContext.cs | 18 - .../Fakes/FakeCreateBookingCommand.cs | 17 - .../tests/IntegrationTest/xunit.runner.json | 4 - .../.openapi-generator/VERSION | 1 - .../src/Services/Flight/Dockerfile | 48 - .../src/Services/Flight/dev.Dockerfile | 51 - .../src/Flight/Aircrafts/Dtos/AircraftDto.cs | 3 - .../AircraftAlreadyExistException.cs | 11 - .../Exceptions/InvalidAircraftIdException.cs | 11 - .../InvalidManufacturingYearException.cs | 10 - .../Exceptions/InvalidModelException.cs | 10 - .../Exceptions/InvalidNameException.cs | 10 - .../Aircrafts/Features/AircraftMappings.cs | 25 - .../CreatingAircraft/V1/CreateAircraft.cs | 108 - .../V1/CreateAircraftMongo.cs | 52 - .../src/Flight/Aircrafts/Models/Aircraft.cs | 35 - .../Aircrafts/Models/AircraftReadModel.cs | 13 - .../Aircrafts/ValueObjects/AircraftId.cs | 29 - .../ValueObjects/ManufacturingYear.cs | 28 - .../Flight/Aircrafts/ValueObjects/Model.cs | 28 - .../src/Flight/Aircrafts/ValueObjects/Name.cs | 28 - .../src/Flight/Airports/Dtos/AirportDto.cs | 3 - .../AirportAlreadyExistException.cs | 11 - .../Exceptions/InvalidAddressException.cs | 10 - .../Exceptions/InvalidAirportIdException.cs | 11 - .../Exceptions/InvalidCodeException.cs | 10 - .../Exceptions/InvalidNameException.cs | 10 - .../Airports/Features/AirportMappings.cs | 23 - .../CreatingAirport/V1/CreateAirport.cs | 105 - .../CreatingAirport/V1/CreateAirportMongo.cs | 51 - .../src/Flight/Airports/Models/Airport.cs | 35 - .../Airports/Models/AirportReadModel.cs | 13 - .../Flight/Airports/ValueObjects/Address.cs | 28 - .../Flight/Airports/ValueObjects/AirportId.cs | 29 - .../src/Flight/Airports/ValueObjects/Code.cs | 28 - .../src/Flight/Airports/ValueObjects/Name.cs | 28 - .../Flight/src/Flight/AssemblyInfo.cs | 6 - .../Configurations/AircraftConfiguration.cs | 56 - .../Configurations/AirportConfiguration.cs | 57 - .../Configurations/FlightConfiguration.cs | 113 - .../Data/Configurations/SeatConfiguration.cs | 50 - .../Flight/Data/DesignTimeDbContextFactory.cs | 17 - .../src/Flight/Data/FlightReadDbContext.cs | 27 - .../20230611230948_initial.Designer.cs | 583 -- .../Data/Migrations/20230611230948_initial.cs | 163 - .../FlightDbContextModelSnapshot.cs | 580 -- .../src/Flight/Data/Seed/FlightDataSeeder.cs | 88 - .../src/Flight/Data/Seed/InitialData.cs | 61 - .../Services/Flight/src/Flight/Data/readme.md | 2 - .../Flight/src/Flight/FlightEventMapper.cs | 51 - .../Services/Flight/src/Flight/FlightRoot.cs | 6 - .../src/Flight/Flights/Dtos/FlightDto.cs | 6 - .../src/Flight/Flights/Enums/FlightStatus.cs | 10 - .../Exceptions/FlightAlreadyExistException.cs | 11 - .../Exceptions/FlightNotFountException.cs | 11 - .../Exceptions/InvalidArriveDateException.cs | 11 - .../InvalidDepartureDateException.cs | 11 - .../Exceptions/InvalidDurationException.cs | 11 - .../Exceptions/InvalidFlightDateException.cs | 11 - .../Exceptions/InvalidFlightIdException.cs | 11 - .../InvalidFlightNumberException.cs | 11 - .../Exceptions/InvalidPriceException.cs | 11 - .../CreatingFlight/V1/CreateFlight.cs | 127 - .../CreatingFlight/V1/CreateFlightMongo.cs | 52 - .../DeletingFlight/V1/DeleteFlight.cs | 110 - .../DeletingFlight/V1/DeleteFlightMongo.cs | 56 - .../Flight/Flights/Features/FlightMappings.cs | 47 - .../V1/GetAvailableFlights.cs | 91 - .../GettingFlightById/V1/GetFlightById.cs | 92 - .../UpdatingFlight/V1/UpdateFlight.cs | 125 - .../UpdatingFlight/V1/UpdateFlightMongo.cs | 67 - .../src/Flight/Flights/Models/Flight.cs | 102 - .../Flight/Flights/Models/FlightReadModel.cs | 20 - .../Flight/Flights/ValueObjects/ArriveDate.cs | 28 - .../Flights/ValueObjects/DepartureDate.cs | 29 - .../Flights/ValueObjects/DurationMinutes.cs | 33 - .../Flight/Flights/ValueObjects/FlightDate.cs | 28 - .../Flight/Flights/ValueObjects/FlightId.cs | 29 - .../Flights/ValueObjects/FlightNumber.cs | 28 - .../src/Flight/Flights/ValueObjects/Price.cs | 28 - .../src/Flight/GrpcServer/Protos/flight.proto | 85 - .../GrpcServer/Services/FlightGrpcServices.cs | 55 - .../Flight/src/Flight/Seats/Dtos/SeatDto.cs | 5 - .../src/Flight/Seats/Enums/SeatClass.cs | 9 - .../Flight/src/Flight/Seats/Enums/SeatType.cs | 9 - .../Seats/Exceptions/AllSeatsFullException.cs | 10 - .../Exceptions/InvalidSeatIdException.cs | 11 - .../Exceptions/InvalidSeatNumberException.cs | 10 - .../Exceptions/SeatAlreadyExistException.cs | 11 - .../SeatNumberIncorrectException.cs | 10 - .../Features/CreatingSeat/V1/CreateSeat.cs | 113 - .../CreatingSeat/V1/CreateSeatMongo.cs | 52 - .../V1/GetAvailableSeats.cs | 96 - .../Features/ReservingSeat/V1/ReserveSeat.cs | 101 - .../ReservingSeat/V1/ReserveSeatMongo.cs | 45 - .../src/Flight/Seats/Features/SeatMappings.cs | 35 - .../Flight/src/Flight/Seats/Models/Seat.cs | 60 - .../src/Flight/Seats/Models/SeatReadModel.cs | 14 - .../src/Flight/Seats/ValueObjects/SeatId.cs | 29 - .../Flight/Seats/ValueObjects/SeatNumber.cs | 28 - .../Fakes/FakeCreateFlightCommand.cs | 21 - .../Fakes/FakeCreateFlightMongoCommand.cs | 22 - .../EndToEndTest/FlightTestDataSeeder.cs | 85 - .../tests/EndToEndTest/Routes/ApiRoutes.cs | 13 - .../tests/EndToEndTest/xunit.runner.json | 4 - .../Fakes/FakeCreateAircraftCommand.cs | 15 - .../Fakes/FakeCreateAirportCommand.cs | 14 - .../Fakes/FakeCreateFlightCommand.cs | 22 - .../Fakes/FakeCreateFlightMongoCommand.cs | 23 - .../Fakes/FakeCreateSeatCommand.cs | 19 - .../Fakes/FakeCreateSeatMongoCommand.cs | 19 - .../Fakes/FakeUpdateFlightCommand.cs | 20 - .../IntegrationTest/FlightTestDataSeeder.cs | 85 - .../tests/IntegrationTest/xunit.runner.json | 4 - .../.openapi-generator/VERSION | 1 - .../CreateAircraftCommandHandlerTests.cs | 53 - .../CreateAircraftCommandValidatorTests.cs | 30 - .../CreateAirportCommandHandlerTests.cs | 55 - .../CreateAirportCommandValidatorTests.cs | 30 - .../tests/UnitTest/Common/DbContextFactory.cs | 96 - .../tests/UnitTest/Common/MapperFactory.cs | 18 - .../tests/UnitTest/Common/UnitTestFixture.cs | 26 - .../Fakes/FakeCreateAircraftCommand.cs | 15 - .../Fakes/FakeCreateAirportCommand.cs | 14 - .../UnitTest/Fakes/FakeCreateFlightCommand.cs | 20 - .../UnitTest/Fakes/FakeCreateSeatCommand.cs | 21 - .../tests/UnitTest/Fakes/FakeFlightCreate.cs | 18 - .../tests/UnitTest/Fakes/FakeFlightUpdate.cs | 13 - .../FakeValidateCreateAircraftCommand.cs | 15 - .../Fakes/FakeValidateCreateAirportCommand.cs | 15 - .../Fakes/FakeValidateCreateFlightCommand.cs | 21 - .../Fakes/FakeValidateCreateSeatCommand.cs | 17 - .../Features/Domains/CreateFlightTests.cs | 34 - .../Features/Domains/UpdateFlightTests.cs | 40 - .../CreateFlightCommandHandlerTests.cs | 56 - .../CreateFlightCommandValidatorTests.cs | 33 - .../UnitTest/Flight/FlightMappingTests.cs | 39 - .../Features/CreateSeatCommandHandlerTests.cs | 57 - .../CreateSeatCommandValidatorTests.cs | 30 - .../tests/UnitTest/Seat/SeatMappingTests.cs | 40 - .../Flight/tests/UnitTest/xunit.runner.json | 4 - .../src/Services/Identity/Dockerfile | 47 - .../src/Services/Identity/dev.Dockerfile | 50 - ...-key-0AC3347A09AA5E44E947F3E30ED54871.json | 1 - ...-key-A57781A0405849BDE786A79636460E49.json | 1 - ...-key-B3C31EEE2718D3C5004C6E85AD74F26C.json | 1 - .../Identity/src/Identity/AssemblyInfo.cs | 6 - .../Identity/Configurations/AuthOptions.cs | 6 - .../Identity/Configurations/UserValidator.cs | 54 - .../Configurations/RoleClaimConfiguration.cs | 16 - .../Data/Configurations/RoleConfiguration.cs | 16 - .../Configurations/UserClaimConfiguration.cs | 16 - .../Data/Configurations/UserConfiguration.cs | 16 - .../Configurations/UserLoginConfiguration.cs | 17 - .../Configurations/UserRoleConfiguration.cs | 16 - .../Configurations/UserTokenConfiguration.cs | 16 - .../Data/DesignTimeDbContextFactory.cs | 16 - .../src/Identity/Data/IdentityContext.cs | 171 - .../20230331193410_initial.Designer.cs | 377 - .../Data/Migrations/20230331193410_initial.cs | 233 - .../IdentityContextModelSnapshot.cs | 374 - .../src/Identity/Data/Seed/InitialData.cs | 38 - .../Identity/src/Identity/Data/readme.md | 2 - .../IdentityServerExtensions.cs | 65 - .../Identity/src/Identity/Identity.csproj | 18 - .../RegisterIdentityUserException.cs | 10 - .../Identity/Features/IdentityMappings.cs | 15 - .../src/Identity/Identity/Models/Role.cs | 10 - .../src/Identity/Identity/Models/RoleClaim.cs | 10 - .../src/Identity/Identity/Models/User.cs | 14 - .../src/Identity/Identity/Models/UserClaim.cs | 10 - .../src/Identity/Identity/Models/UserLogin.cs | 10 - .../src/Identity/Identity/Models/UserRole.cs | 10 - .../src/Identity/Identity/Models/UserToken.cs | 10 - .../src/Identity/IdentityEventMapper.cs | 23 - .../Identity/src/Identity/IdentityRoot.cs | 5 - .../Fakes/FakeRegisterNewUserCommand.cs | 16 - .../IntegrationTest/IdentityTestDataSeeder.cs | 64 - .../tests/IntegrationTest/xunit.runner.json | 4 - .../.openapi-generator/VERSION | 1 - .../src/Services/Passenger/Dockerfile | 47 - .../src/Services/Passenger/dev.Dockerfile | 50 - .../Passenger/src/Passenger/AssemblyInfo.cs | 6 - .../Configurations/PassengerConfiguration.cs | 60 - .../Data/DesignTimeDbContextFactory.cs | 16 - .../20230611213031_initial.Designer.cs | 150 - .../Data/Migrations/20230611213031_initial.cs | 43 - .../PassengerDbContextModelSnapshot.cs | 147 - .../src/Passenger/Data/PassengerDbContext.cs | 27 - .../Passenger/Data/PassengerReadDbContext.cs | 18 - .../Passenger/src/Passenger/Data/readme.md | 2 - .../Exceptions/InvalidAgeException.cs | 10 - .../Exceptions/InvalidNameException.cs | 10 - .../Exceptions/InvalidPassengerIdException.cs | 12 - .../InvalidPassportNumberException.cs | 10 - .../Exceptions/PassengerAlreadyExist.cs | 11 - .../Exceptions/PassengerNotFoundException.cs | 11 - .../GrpcServer/Protos/passenger.proto | 34 - .../Services/PassengerGrpcServices.cs | 24 - .../V1/PassengerCreatedDomainEvent.cs | 5 - .../RegisteringNewUser/V1/RegisterNewUser.cs | 59 - .../Passenger/src/Passenger/Passenger.csproj | 24 - .../src/Passenger/PassengerEventMapper.cs | 33 - .../Passenger/src/Passenger/PassengerRoot.cs | 6 - .../Passenger/Passengers/Dtos/PassengerDto.cs | 2 - .../Passengers/Enums/PassengerType.cs | 9 - .../Exceptions/InvalidAgeException.cs | 9 - .../Exceptions/InvalidNameException.cs | 10 - .../InvalidPassportNumberException.cs | 10 - .../Exceptions/PassengerAlreadyExist.cs | 10 - .../Exceptions/PassengerNotFoundException.cs | 10 - .../V1/CompleteRegisterPassengerMongo.cs | 61 - .../V1/GetPassengerById.cs | 89 - .../Passengers/Features/PassengerMappings.cs | 28 - .../Passenger/Passengers/Models/Passenger.cs | 45 - .../Passengers/Models/PassengerReadModel.cs | 11 - .../Passenger/Passengers/ValueObjects/Age.cs | 28 - .../Passenger/Passengers/ValueObjects/Name.cs | 28 - .../Passengers/ValueObjects/PassengerId.cs | 29 - .../Passengers/ValueObjects/PassportNumber.cs | 33 - .../FakeCompleteRegisterPassengerCommand.cs | 19 - ...keCompleteRegisterPassengerMongoCommand.cs | 19 - .../IntegrationTest/Fakes/FakeUserCreated.cs | 16 - .../tests/IntegrationTest/xunit.runner.json | 4 - .../.openapi-generator/VERSION | 1 - README.md | 217 +- assets/architecture.excalidraw | 1143 --- .../booking-microservices.drawio | 0 .../booking-microservices.png | Bin assets/booking.png | Bin 0 -> 24757 bytes assets/logo.png | Bin 0 -> 22622 bytes assets/microservices.png | Bin 117464 -> 0 bytes assets/modular-monolith.png | Bin 101268 -> 0 bytes assets/monolith.png | Bin 75453 -> 0 bytes booking-microservices.sln | 312 + .../booking.rest => booking.rest | 4 +- .../configs/dashboards.md | 2 +- .../dashboards/dotnet-core-endpoint.json | 2 +- .../grafana/dashboards/dotnet-core.json | 2 +- .../grafana/dashboards/node-exporter.json | 2 +- .../grafana/dashboards/postgresql.json | 2 +- .../configs/grafana/dashboards/rabbitmq.json | 2 +- .../provisioning/dashboards/dashboard.yml | 2 +- .../provisioning/datasources/datasource.yml | 14 +- .../configs/loki-config.yaml | 0 .../configs/otel-collector-config.yaml | 26 +- .../configs/prometheus.yaml | 10 +- .../configs/tempo.yaml | 2 +- .../docker-compose.infrastructure.yaml | 40 +- .../docker-compose/docker-compose.yaml | 38 +- .../kubernetes/booking-cert-manager.yml | 2 +- .../kubernetes/booking-microservices.yml | 24 +- monolith-to-cloud-architecture.sln | 313 - package.json | 8 +- .../src => src}/ApiGateway/Dockerfile | 12 +- .../src => src}/ApiGateway/dev.Dockerfile | 12 +- src/ApiGateway/src/ApiGateway.csproj | 5 + .../src => src}/ApiGateway/src/Program.cs | 0 .../src/Properties/launchSettings.json | 2 +- .../src/appsettings.Development.json | 0 .../ApiGateway/src/appsettings.docker.json | 0 .../ApiGateway/src/appsettings.json | 8 +- .../BuildingBlocks}/BuildingBlocks.csproj | 0 .../Caching/CachingBehavior.cs | 0 .../BuildingBlocks}/Caching/ICacheRequest.cs | 0 .../Caching/IInvalidateCacheRequest.cs | 0 .../Caching/InvalidateCachingBehavior.cs | 0 .../Constants/IdentityConstant.cs | 0 .../EventBus.Messages/FlighContracts.cs | 0 .../EventBus.Messages/IdentityContracts.cs | 0 .../EventBus.Messages/PassengerContracts.cs | 0 .../EventBus.Messages/ReservationContracts.cs | 0 .../BuildingBlocks}/Core/CQRS/ICommand.cs | 0 .../Core/CQRS/ICommandHandler.cs | 0 .../BuildingBlocks}/Core/CQRS/IQuery.cs | 0 .../Core/CQRS/IQueryHandler.cs | 0 .../Core/CompositeEventMapper.cs | 0 .../BuildingBlocks}/Core/Event/EventType.cs | 0 .../Core/Event/IDomainEvent.cs | 0 .../BuildingBlocks}/Core/Event/IEvent.cs | 0 .../Core/Event/IHaveIntegrationEvent.cs | 0 .../Core/Event/IIntegrationEvent.cs | 0 .../Core/Event/IInternalCommand.cs | 0 .../Core/Event/InternalCommand.cs | 0 .../Core/Event/MessageEnvelope.cs | 0 .../BuildingBlocks}/Core/EventDispatcher.cs | 0 .../BuildingBlocks}/Core/IEventDispatcher.cs | 0 .../BuildingBlocks}/Core/IEventMapper.cs | 0 .../Core/IntegrationEventWrapper.cs | 0 .../BuildingBlocks}/Core/Model/Aggregate.cs | 0 .../BuildingBlocks}/Core/Model/Entity.cs | 0 .../BuildingBlocks}/Core/Model/IAggregate.cs | 0 .../BuildingBlocks}/Core/Model/IEntity.cs | 0 .../BuildingBlocks}/Core/Model/IVersion.cs | 0 .../Core/Pagination/Extensions.cs | 0 .../Core/Pagination/IPageList.cs | 0 .../Core/Pagination/IPageQuery.cs | 0 .../Core/Pagination/IPageRequest.cs | 0 .../Core/Pagination/PageList.cs | 0 .../EFCore/AppDbContextBase.cs | 0 .../EFCore/DesignTimeDbContextFactoryBase.cs | 0 .../BuildingBlocks}/EFCore/EfTxBehavior.cs | 0 .../BuildingBlocks}/EFCore/Extensions.cs | 0 .../BuildingBlocks}/EFCore/IDataSeeder.cs | 0 .../BuildingBlocks}/EFCore/IDbContext.cs | 0 .../BuildingBlocks}/EFCore/ISeedManager.cs | 0 .../BuildingBlocks}/EFCore/PostgresOptions.cs | 0 .../BuildingBlocks}/EFCore/SeedManagers.cs | 0 .../BackgroundWorkers/BackgroundWorker.cs | 0 .../BuildingBlocks}/EventStoreDB/Config.cs | 0 .../Events/AggregateEventSourcing.cs | 0 .../Events/AggregateStreamExtensions.cs | 0 .../EventStoreDB/Events/EventTypeMapper.cs | 0 .../Events/IAggregateEventSourcing.cs | 0 .../EventStoreDB/Events/IEventHandler.cs | 0 .../EventStoreDB/Events/IExternalEvent.cs | 0 .../EventStoreDB/Events/IProjection.cs | 0 .../EventStoreDB/Events/StreamEvent.cs | 0 .../Events/StreamEventExtensions.cs | 0 .../EventStoreDB/Events/StreamNameMapper.cs | 0 .../EventStoreDB/Extensions.cs | 0 .../Projections/IProjectionProcessor.cs | 0 .../Projections/IProjectionPublisher.cs | 0 .../Projections/ProjectionPublisher.cs | 0 .../Repository/EventStoreDBRepository.cs | 0 .../Repository/RepositoryExtensions.cs | 0 .../Serialization/EventStoreDBSerializer.cs | 0 .../JsonObjectContractProvider.cs | 0 .../NonDefaultConstructorContractResolver.cs | 0 .../Serialization/SerializationExtensions.cs | 0 ...StoreDBSubscriptionCheckpointRepository.cs | 0 .../EventStoreDBSubscriptionToAll.cs | 0 .../ISubscriptionCheckpointRepository.cs | 0 ...nMemorySubscriptionCheckpointRepository.cs | 0 .../Exception/AggregateNotFoundException.cs | 0 src/BuildingBlocks/Exception/AppException.cs | 14 + .../Exception/BadRequestException.cs | 13 + .../Exception/ConflictException.cs | 11 + .../Exception/CustomException.cs | 37 + .../Exception/DomainException.cs | 16 + .../Exception/GrpcExceptionInterceptor.cs | 0 .../Exception/InternalServerException.cs | 17 + .../Exception/NotFoundException.cs | 11 + .../Exception/ProblemDetailsWithCode.cs | 0 .../Exception/ValidationException.cs | 11 + .../BuildingBlocks}/HealthCheck/Extensions.cs | 0 .../HealthCheck/HealthOptions.cs | 0 .../BuildingBlocks}/Jwt/AuthHeaderHandler.cs | 0 .../BuildingBlocks}/Jwt/JwtExtensions.cs | 0 .../BuildingBlocks}/Logging/Extensions.cs | 0 .../BuildingBlocks}/Logging/FileOptions.cs | 0 .../Logging/LogEnrichHelper.cs | 0 .../BuildingBlocks}/Logging/LogOptions.cs | 0 .../Logging/LoggingBehavior.cs | 0 .../BuildingBlocks}/Mapster/Extensions.cs | 0 .../MassTransit/ConsumeFilter.cs | 0 .../BuildingBlocks}/MassTransit/Extensions.cs | 0 .../MassTransit/RabbitMqOptions.cs | 0 .../MassTransit/TransportType.cs | 0 .../BuildingBlocks}/Mongo/Extensions.cs | 0 .../BuildingBlocks}/Mongo/IMongoDbContext.cs | 0 .../BuildingBlocks}/Mongo/IMongoRepository.cs | 0 .../BuildingBlocks}/Mongo/IMongoUnitOfWork.cs | 0 .../BuildingBlocks}/Mongo/IRepository.cs | 0 .../BuildingBlocks}/Mongo/ITransactionAble.cs | 0 .../BuildingBlocks}/Mongo/IUnitOfWork.cs | 0 .../Mongo/ImmutablePocoConvention.cs | 0 .../MicroBootstrap.Persistence.Mongo.csproj | 0 .../BuildingBlocks}/Mongo/MongoDbContext.cs | 0 .../BuildingBlocks}/Mongo/MongoOptions.cs | 0 .../BuildingBlocks}/Mongo/MongoRepository.cs | 0 .../BuildingBlocks}/Mongo/MongoUnitOfWork.cs | 0 .../BuildingBlocks}/OpenApi/Extensions.cs | 0 .../SecuritySchemeDocumentTransformer.cs | 0 .../ActivityExtensions.cs | 0 .../OpenTelemetryCollector/ActivityInfo.cs | 0 .../ObservabilityPipelineBehavior.cs | 0 .../Commands/CommandHandlerActivity.cs | 0 .../Commands/CommandHandlerMetrics.cs | 0 .../Query/QueryHandlerActivity.cs | 0 .../Query/QueryHandlerMetrics.cs | 0 .../CreateActivityInfo.cs | 0 .../CustomeDiagnosticsProvider.cs | 0 .../IDiagnosticsProvider.cs | 0 .../OpenTelemetryCollector/Extensions.cs | 0 .../ObservabilityConstant.cs | 0 .../ObservabilityOptions.cs | 0 .../OpenTelemetryCollector/TelemetryTags.cs | 0 .../PersistMessageProcessor/Extensions.cs | 0 .../IPersistMessageDbContext.cs | 0 .../IPersistMessageProcessor.cs | 0 .../MessageDeliveryType.cs | 0 .../PersistMessageProcessor/MessageStatus.cs | 0 .../PersistMessageProcessor/PersistMessage.cs | 0 .../PersistMessageBackgroundService.cs | 0 .../PersistMessageDbContext.cs | 0 .../PersistMessageOptions.cs | 0 .../PersistMessageProcessor.cs | 0 .../Polly/CircuitBreakerOptions.cs | 0 .../BuildingBlocks}/Polly/Extensions.cs | 0 .../Polly/GrpcCircuitBreaker.cs | 0 .../BuildingBlocks}/Polly/GrpcRetry.cs | 0 .../Polly/HttpClientCircuitBreaker.cs | 0 .../BuildingBlocks}/Polly/HttpClientRetry.cs | 0 .../BuildingBlocks}/Polly/PolicyOptions.cs | 0 .../BuildingBlocks}/Polly/RetryOptions.cs | 0 .../ProblemDetails/Extensions.cs | 0 .../BuildingBlocks}/TestBase/TestBase.cs | 0 .../TestBase/TestContainers.cs | 0 .../Utils/NoSynchronizationContextScope.cs | 0 .../BuildingBlocks}/Utils/ServiceLocator.cs | 0 .../BuildingBlocks}/Utils/TypeProvider.cs | 0 .../BuildingBlocks}/Validation/Extensions.cs | 0 .../Validation/ValidationBehavior.cs | 0 .../Validation/ValidationError.cs | 0 .../Validation/ValidationResultModel.cs | 0 .../Web/ApiVersioningExtensions.cs | 0 .../BuildingBlocks}/Web/AppOptions.cs | 0 .../BuildingBlocks}/Web/BaseController.cs | 0 .../Web/ConfigurationExtensions.cs | 0 .../Web/ConfigurationHelper.cs | 0 .../Web/CorrelationExtensions.cs | 0 .../Web/CurrentUserProvider.cs | 0 .../BuildingBlocks}/Web/EndpointConfig.cs | 0 .../BuildingBlocks}/Web/IMinimalEndpoint.cs | 0 .../Web/MinimalApiExtensions.cs | 0 .../Web/ServiceCollectionExtensions.cs | 0 .../Web/ServiceProviderExtensions.cs | 0 .../Web/SlugifyParameterTransformer.cs | 0 src/Services/Booking/Dockerfile | 47 + .../Services/Booking}/dev.Dockerfile | 24 +- .../src/Booking.Api/Booking.Api.csproj | 0 .../Booking/src/Booking.Api/Program.cs | 0 .../Properties/launchSettings.json | 2 +- .../Booking.Api/appsettings.Development.json | 0 .../src/Booking.Api/appsettings.docker.json | 0 .../Booking/src/Booking.Api/appsettings.json | 0 .../src/Booking.Api/appsettings.test.json | 0 .../Booking/src/Booking}/AssemblyInfo.cs | 0 .../Booking/src/Booking}/Booking.csproj | 2 +- .../Booking/Dtos/CreateReservation.cs | 0 .../BookingAlreadyExistException.cs | 0 .../Exceptions/FlightNotFoundException.cs | 0 .../Exceptions/InvalidAircraftIdException.cs | 0 .../InvalidArriveAirportIdException.cs | 0 .../InvalidDepartureAirportIdException.cs | 0 .../Exceptions/InvalidFlightDateException.cs | 0 .../InvalidFlightNumberException.cs | 0 .../InvalidPassengerNameException.cs | 0 .../Exceptions/InvalidPriceException.cs | 0 .../Booking/Exceptions/SeatNumberException.cs | 0 .../Booking/Features/BookingMappings.cs | 0 .../Features/CreatingBook/V1/CreateBooking.cs | 0 .../src/Booking}/Booking/Models/Booking.cs | 0 .../Booking/Models/BookingReadModel.cs | 0 .../Booking/ValueObjects/PassengerInfo.cs | 0 .../src/Booking}/Booking/ValueObjects/Trip.cs | 0 .../src/Booking}/BookingEventMapper.cs | 0 .../Booking/src/Booking}/BookingProjection.cs | 0 .../Booking/src/Booking}/BookingRoot.cs | 0 .../src/Booking}/Configuration/GrpcOptions.cs | 0 .../src/Booking}/Data/BookingReadDbContext.cs | 0 .../Infrastructure/GrpcClientExtensions.cs | 0 .../InfrastructureExtensions.cs | 0 .../Infrastructure/MediatRExtensions.cs | 0 .../Booking/GrpcClient}/Protos/flight.proto | 0 .../GrpcClient}/Protos/passenger.proto | 2 +- .../Booking/Features/CreateBookingTests.cs | 0 .../BookingIntegrationTestBase.cs | 0 .../Fakes/FakeCreateBookingCommand.cs | 0 .../Fakes/FakeFlightResponse.cs | 0 .../Fakes/FakeGetAvailableSeatsResponse.cs | 0 .../Fakes/FakePassengerResponse.cs | 0 .../Fakes/FakeReserveSeatResponse.cs | 0 .../IntegrationTest/Integration.Test.csproj | 0 .../tests/IntegrationTest}/xunit.runner.json | 0 .../PerformanceTest/.openapi-generator-ignore | 0 .../PerformanceTest/.openapi-generator/FILES | 0 .../.openapi-generator/VERSION | 1 + .../Booking/tests/PerformanceTest/README.md | 0 .../Booking/tests/PerformanceTest/script.js | 2 +- .../Services/Booking/tests/tests.sln | 2 +- src/Services/Flight/Dockerfile | 48 + src/Services/Flight/dev.Dockerfile | 51 + .../Flight/src/Flight.Api/Flight.Api.csproj | 0 .../Services/Flight/src/Flight.Api/Program.cs | 0 .../Flight.Api/Properties/launchSettings.json | 2 +- .../Flight.Api/appsettings.Development.json | 0 .../src/Flight.Api/appsettings.docker.json | 0 .../Flight/src/Flight.Api/appsettings.json | 0 .../src/Flight.Api/appsettings.test.json | 0 .../src/Flight}/Aircrafts/Dtos/AircraftDto.cs | 0 .../AircraftAlreadyExistException.cs | 0 .../Exceptions/InvalidAircraftIdException.cs | 0 .../InvalidManufacturingYearException.cs | 0 .../Exceptions/InvalidModelException.cs | 0 .../Exceptions/InvalidNameException.cs | 0 .../Aircrafts/Features/AircraftMappings.cs | 0 .../CreatingAircraft/V1/CreateAircraft.cs | 0 .../V1/CreateAircraftMongo.cs | 0 .../src/Flight}/Aircrafts/Models/Aircraft.cs | 0 .../Aircrafts/Models/AircraftReadModel.cs | 0 .../Aircrafts/ValueObjects/AircraftId.cs | 0 .../ValueObjects/ManufacturingYear.cs | 0 .../Flight}/Aircrafts/ValueObjects/Model.cs | 0 .../Flight}/Aircrafts/ValueObjects/Name.cs | 0 .../src/Flight}/Airports/Dtos/AirportDto.cs | 0 .../AirportAlreadyExistException.cs | 0 .../Exceptions/InvalidAddressException.cs | 0 .../Exceptions/InvalidAirportIdException.cs | 0 .../Exceptions/InvalidCodeException.cs | 0 .../Exceptions/InvalidNameException.cs | 0 .../Airports/Features/AirportMappings.cs | 0 .../CreatingAirport/V1/CreateAirport.cs | 0 .../CreatingAirport/V1/CreateAirportMongo.cs | 0 .../src/Flight}/Airports/Models/Airport.cs | 0 .../Airports/Models/AirportReadModel.cs | 0 .../Flight}/Airports/ValueObjects/Address.cs | 0 .../Airports/ValueObjects/AirportId.cs | 0 .../src/Flight}/Airports/ValueObjects/Code.cs | 0 .../src/Flight}/Airports/ValueObjects/Name.cs | 0 .../Flight/src/Flight}/AssemblyInfo.cs | 0 .../Configurations/AircraftConfiguration.cs | 0 .../Configurations/AirportConfiguration.cs | 0 .../Configurations/FlightConfiguration.cs | 0 .../Data/Configurations/SeatConfiguration.cs | 0 .../Data/DesignTimeDbContextFactory.cs | 0 .../Flight/src/Flight/Data/FlightDbContext.cs | 0 .../src/Flight}/Data/FlightReadDbContext.cs | 0 .../20230611230948_initial.Designer.cs | 2 +- .../Data/Migrations/20230611230948_initial.cs | 0 .../FlightDbContextModelSnapshot.cs | 2 +- .../src/Flight}/Data/Seed/FlightDataSeeder.cs | 0 .../src/Flight}/Data/Seed/InitialData.cs | 0 .../Flight/src/Flight}/Data/readme.md | 0 .../InfrastructureExtensions.cs | 0 .../Infrastructure/MediatRExtensions.cs | 0 .../Services/Flight/src/Flight/Flight.csproj | 2 +- .../Flight/src/Flight}/FlightEventMapper.cs | 0 .../Services/Flight/src/Flight}/FlightRoot.cs | 0 .../src/Flight}/Flights/Dtos/FlightDto.cs | 0 .../src/Flight}/Flights/Enums/FlightStatus.cs | 0 .../Exceptions/FlightAlreadyExistException.cs | 0 .../Exceptions/FlightNotFountException.cs | 0 .../Exceptions/InvalidArriveDateException.cs | 0 .../InvalidDepartureDateException.cs | 0 .../Exceptions/InvalidDurationException.cs | 0 .../Exceptions/InvalidFlightDateException.cs | 0 .../Exceptions/InvalidFlightIdException.cs | 0 .../InvalidFlightNumberException.cs | 0 .../Exceptions/InvalidPriceException.cs | 0 .../CreatingFlight/V1/CreateFlight.cs | 0 .../CreatingFlight/V1/CreateFlightMongo.cs | 0 .../DeletingFlight/V1/DeleteFlight.cs | 0 .../DeletingFlight/V1/DeleteFlightMongo.cs | 0 .../Flights/Features/FlightMappings.cs | 0 .../V1/GetAvailableFlights.cs | 0 .../GettingFlightById/V1/GetFlightById.cs | 0 .../UpdatingFlight/V1/UpdateFlight.cs | 0 .../UpdatingFlight/V1/UpdateFlightMongo.cs | 0 .../src/Flight}/Flights/Models/Flight.cs | 0 .../Flight}/Flights/Models/FlightReadModel.cs | 0 .../Flights/ValueObjects/ArriveDate.cs | 0 .../Flights/ValueObjects/DepartureDate.cs | 0 .../Flights/ValueObjects/DurationMinutes.cs | 0 .../Flights/ValueObjects/FlightDate.cs | 0 .../Flight}/Flights/ValueObjects/FlightId.cs | 0 .../Flights/ValueObjects/FlightNumber.cs | 0 .../src/Flight}/Flights/ValueObjects/Price.cs | 0 .../Flight/GrpcServer}/Protos/flight.proto | 0 .../GrpcServer/Services/FlightGrpcServices.cs | 0 .../Flight/src/Flight}/Seats/Dtos/SeatDto.cs | 0 .../src/Flight}/Seats/Enums/SeatClass.cs | 0 .../src/Flight}/Seats/Enums/SeatType.cs | 0 .../Seats/Exceptions/AllSeatsFullException.cs | 0 .../Exceptions/InvalidSeatIdException.cs | 0 .../Exceptions/InvalidSeatNumberException.cs | 0 .../Exceptions/SeatAlreadyExistException.cs | 0 .../SeatNumberIncorrectException.cs | 0 .../Features/CreatingSeat/V1/CreateSeat.cs | 0 .../CreatingSeat/V1/CreateSeatMongo.cs | 0 .../V1/GetAvailableSeats.cs | 0 .../Features/ReservingSeat/V1/ReserveSeat.cs | 0 .../ReservingSeat/V1/ReserveSeatMongo.cs | 0 .../Flight}/Seats/Features/SeatMappings.cs | 0 .../Flight/src/Flight}/Seats/Models/Seat.cs | 0 .../src/Flight}/Seats/Models/SeatReadModel.cs | 0 .../src/Flight}/Seats/ValueObjects/SeatId.cs | 0 .../Flight}/Seats/ValueObjects/SeatNumber.cs | 0 .../tests/EndToEndTest/EndToEnd.Test.csproj | 0 .../Fakes/FakeCreateFlightCommand.cs | 0 .../Fakes/FakeCreateFlightMongoCommand.cs | 0 .../Flight/Features/CreateFlightTests.cs | 0 .../Flight/Features/GetFlightByIdTests.cs | 0 .../EndToEndTest/FlightEndToEndTestBase.cs | 0 .../EndToEndTest}/FlightTestDataSeeder.cs | 0 .../tests/EndToEndTest}/Routes/ApiRoutes.cs | 0 .../tests/EndToEndTest}/xunit.runner.json | 0 .../Aircraft/Features/CreateAircraftTests.cs | 0 .../Airport/Features/CreateAirportTests.cs | 0 .../Fakes/FakeCreateAircraftCommand.cs | 0 .../Fakes/FakeCreateAirportCommand.cs | 0 .../Fakes/FakeCreateFlightCommand.cs | 0 .../Fakes/FakeCreateFlightMongoCommand.cs | 0 .../Fakes/FakeCreateSeatCommand.cs | 0 .../Fakes/FakeCreateSeatMongoCommand.cs | 0 .../Fakes/FakeUpdateFlightCommand.cs | 0 .../Flight/Features/CreateFlightTests.cs | 0 .../Flight/Features/DeleteFlightTests.cs | 0 .../Features/GetAvailableFlightsTests.cs | 0 .../Flight/Features/GetFlightByIdTests.cs | 0 .../Flight/Features/UpdateFlightTests.cs | 0 .../FlightIntegrationTestBase.cs | 0 .../IntegrationTest}/FlightTestDataSeeder.cs | 0 .../IntegrationTest/Integration.Test.csproj | 0 .../Seat/Features/GetAvailableSeatsTests.cs | 0 .../Seat/Features/ReserveSeatTests.cs | 0 .../tests/IntegrationTest}/xunit.runner.json | 0 .../PerformanceTest/.openapi-generator-ignore | 0 .../PerformanceTest/.openapi-generator/FILES | 0 .../.openapi-generator/VERSION | 1 + .../Flight/tests/PerformanceTest/README.md | 0 .../Flight/tests/PerformanceTest/script.js | 2 +- .../CreateAircraftCommandHandlerTests.cs | 0 .../CreateAircraftCommandValidatorTests.cs | 0 .../CreateAirportCommandHandlerTests.cs | 0 .../CreateAirportCommandValidatorTests.cs | 0 .../UnitTest}/Common/DbContextFactory.cs | 0 .../tests/UnitTest}/Common/MapperFactory.cs | 0 .../tests/UnitTest}/Common/UnitTestFixture.cs | 0 .../Fakes/FakeCreateAircraftCommand.cs | 0 .../Fakes/FakeCreateAirportCommand.cs | 0 .../Fakes/FakeCreateFlightCommand.cs | 0 .../UnitTest}/Fakes/FakeCreateSeatCommand.cs | 0 .../tests/UnitTest}/Fakes/FakeFlightCreate.cs | 0 .../tests/UnitTest}/Fakes/FakeFlightUpdate.cs | 0 .../FakeValidateCreateAircraftCommand.cs | 0 .../Fakes/FakeValidateCreateAirportCommand.cs | 0 .../Fakes/FakeValidateCreateFlightCommand.cs | 0 .../Fakes/FakeValidateCreateSeatCommand.cs | 0 .../Features/Domains/CreateFlightTests.cs | 0 .../Features/Domains/UpdateFlightTests.cs | 0 .../CreateFlightCommandHandlerTests.cs | 0 .../CreateFlightCommandValidatorTests.cs | 0 .../UnitTest}/Flight/FlightMappingTests.cs | 0 .../Features/CreateSeatCommandHandlerTests.cs | 0 .../CreateSeatCommandValidatorTests.cs | 0 .../tests/UnitTest}/Seat/SeatMappingTests.cs | 0 .../Flight/tests/UnitTest/Unit.Test.csproj | 0 .../Flight/tests/UnitTest}/xunit.runner.json | 0 .../Services/Flight/tests/tests.sln | 2 +- src/Services/Identity/Dockerfile | 47 + src/Services/Identity/dev.Dockerfile | 50 + .../src/Identity.Api/Identity.Api.csproj | 0 .../Identity/src/Identity.Api/Program.cs | 0 .../Properties/launchSettings.json | 2 +- .../Identity.Api/appsettings.Development.json | 0 .../src/Identity.Api/appsettings.docker.json | 0 .../src/Identity.Api/appsettings.json | 0 .../src/Identity.Api/appsettings.test.json | 0 ...-key-0AC3347A09AA5E44E947F3E30ED54871.json | 1 + ...-key-A57781A0405849BDE786A79636460E49.json | 1 + ...-key-B3C31EEE2718D3C5004C6E85AD74F26C.json | 1 + .../Identity/src/Identity}/AssemblyInfo.cs | 0 .../Identity}/Configurations/AuthOptions.cs | 0 .../src/Identity/Configurations/Config.cs | 0 .../Identity}/Configurations/UserValidator.cs | 0 .../Configurations/RoleClaimConfiguration.cs | 0 .../Data/Configurations/RoleConfiguration.cs | 0 .../Configurations/UserClaimConfiguration.cs | 0 .../Data/Configurations/UserConfiguration.cs | 0 .../Configurations/UserLoginConfiguration.cs | 0 .../Configurations/UserRoleConfiguration.cs | 0 .../Configurations/UserTokenConfiguration.cs | 0 .../Data/DesignTimeDbContextFactory.cs | 0 .../src/Identity}/Data/IdentityContext.cs | 0 .../20230331193410_initial.Designer.cs | 2 +- .../Data/Migrations/20230331193410_initial.cs | 0 .../IdentityContextModelSnapshot.cs | 2 +- .../Identity/Data/Seed/IdentityDataSeeder.cs | 0 .../src/Identity}/Data/Seed/InitialData.cs | 0 .../Identity/src/Identity}/Data/readme.md | 0 .../IdentityServerExtensions.cs | 0 .../InfrastructureExtensions.cs | 0 .../Infrastructure/MediatRExtensions.cs | 0 .../Identity/src/Identity}/Identity.csproj | 2 +- .../Identity/Identity/Constants/Constants.cs | 0 .../RegisterIdentityUserException.cs | 0 .../Identity/Features/IdentityMappings.cs | 0 .../RegisteringNewUser/V1/RegisterNewUser.cs | 0 .../src/Identity}/Identity/Models/Role.cs | 0 .../Identity}/Identity/Models/RoleClaim.cs | 0 .../src/Identity}/Identity/Models/User.cs | 0 .../Identity}/Identity/Models/UserClaim.cs | 0 .../Identity}/Identity/Models/UserLogin.cs | 0 .../src/Identity}/Identity/Models/UserRole.cs | 0 .../Identity}/Identity/Models/UserToken.cs | 0 .../src/Identity}/IdentityEventMapper.cs | 0 .../Identity/src/Identity}/IdentityRoot.cs | 0 .../Fakes/FakeRegisterNewUserCommand.cs | 0 .../Identity/Features/RegisterNewUserTests.cs | 0 .../IdentityIntegrationTestBase.cs | 0 .../IdentityTestDataSeeder.cs | 0 .../IntegrationTest/Integration.Test.csproj | 0 .../tests/IntegrationTest}/xunit.runner.json | 0 .../PerformanceTest/.openapi-generator-ignore | 0 .../PerformanceTest/.openapi-generator/FILES | 0 .../.openapi-generator/VERSION | 1 + .../Identity/tests/PerformanceTest/README.md | 0 .../Identity/tests/PerformanceTest/script.js | 2 +- .../Services/Identity/tests/tests.sln | 2 +- src/Services/Passenger/Dockerfile | 47 + src/Services/Passenger/dev.Dockerfile | 50 + .../src/Passenger.Api/Passenger.Api.csproj | 0 .../Passenger/src/Passenger.Api/Program.cs | 0 .../Properties/launchSettings.json | 2 +- .../appsettings.Development.json | 0 .../src/Passenger.Api/appsettings.docker.json | 0 .../src/Passenger.Api/appsettings.json | 0 .../src/Passenger.Api/appsettings.test.json | 0 .../Passenger/src/Passenger}/AssemblyInfo.cs | 0 .../Configurations/PassengerConfiguration.cs | 0 .../Data/DesignTimeDbContextFactory.cs | 0 .../20230611213031_initial.Designer.cs | 2 +- .../Data/Migrations/20230611213031_initial.cs | 0 .../PassengerDbContextModelSnapshot.cs | 2 +- .../src/Passenger}/Data/PassengerDbContext.cs | 0 .../Passenger}/Data/PassengerReadDbContext.cs | 0 .../Passenger/src/Passenger}/Data/readme.md | 0 .../Exceptions/InvalidAgeException.cs | 0 .../Exceptions/InvalidNameException.cs | 0 .../Exceptions/InvalidPassengerIdException.cs | 0 .../InvalidPassportNumberException.cs | 0 .../Exceptions/PassengerAlreadyExist.cs | 0 .../Exceptions/PassengerNotFoundException.cs | 0 .../InfrastructureExtensions.cs | 0 .../Infrastructure/MediatRExtensions.cs | 0 .../GrpcServer}/Protos/passenger.proto | 2 +- .../Services/PassengerGrpcServices.cs | 0 .../V1/PassengerCreatedDomainEvent.cs | 0 .../RegisteringNewUser/V1/RegisterNewUser.cs | 0 .../Passenger/src/Passenger}/Passenger.csproj | 2 +- .../src/Passenger}/PassengerEventMapper.cs | 0 .../Passenger/src/Passenger}/PassengerRoot.cs | 0 .../Passengers/Dtos/PassengerDto.cs | 0 .../Passengers/Enums/PassengerType.cs | 0 .../Exceptions/InvalidAgeException.cs | 0 .../Exceptions/InvalidNameException.cs | 0 .../InvalidPassportNumberException.cs | 0 .../Exceptions/PassengerAlreadyExist.cs | 0 .../Exceptions/PassengerNotFoundException.cs | 0 .../V1/CompleteRegisterPassenger.cs | 0 .../V1/CompleteRegisterPassengerMongo.cs | 0 .../V1/GetPassengerById.cs | 0 .../Passengers/Features/PassengerMappings.cs | 0 .../Passenger}/Passengers/Models/Passenger.cs | 0 .../Passengers/Models/PassengerReadModel.cs | 0 .../Passenger}/Passengers/ValueObjects/Age.cs | 0 .../Passengers/ValueObjects/Name.cs | 0 .../Passengers/ValueObjects/PassengerId.cs | 0 .../Passengers/ValueObjects/PassportNumber.cs | 0 .../FakeCompleteRegisterPassengerCommand.cs | 0 ...keCompleteRegisterPassengerMongoCommand.cs | 0 .../IntegrationTest}/Fakes/FakeUserCreated.cs | 0 .../IntegrationTest/Integration.Test.csproj | 0 .../CompleteRegisterPassengerTests.cs | 0 .../Features/GetPassengerByIdTests.cs | 0 .../PassengerIntegrationTestBase.cs | 0 .../tests/IntegrationTest}/xunit.runner.json | 0 .../PerformanceTest/.openapi-generator-ignore | 0 .../PerformanceTest/.openapi-generator/FILES | 0 .../.openapi-generator/VERSION | 1 + .../Passenger/tests/PerformanceTest/README.md | 0 .../Passenger/tests/PerformanceTest/script.js | 2 +- .../Services/Passenger/tests/tests.sln | 2 +- 1109 files changed, 1090 insertions(+), 52147 deletions(-) delete mode 100644 1-monolith-architecture-style/README.md delete mode 100644 1-monolith-architecture-style/assets/booking-monolith.drawio delete mode 100644 1-monolith-architecture-style/assets/booking-monolith.png delete mode 100644 1-monolith-architecture-style/booking.rest delete mode 100644 1-monolith-architecture-style/deployments/configs/grafana/dashboards/dotnet-core.json delete mode 100644 1-monolith-architecture-style/deployments/configs/grafana/dashboards/node-exporter.json delete mode 100644 1-monolith-architecture-style/deployments/configs/grafana/dashboards/postgresql.json delete mode 100644 1-monolith-architecture-style/deployments/configs/grafana/provisioning/dashboards/dashboard.yml delete mode 100644 1-monolith-architecture-style/deployments/configs/grafana/provisioning/datasources/datasource.yml delete mode 100644 1-monolith-architecture-style/deployments/configs/otel-collector-config.yaml delete mode 100644 1-monolith-architecture-style/deployments/configs/prometheus.yaml delete mode 100644 1-monolith-architecture-style/deployments/configs/tempo.yaml delete mode 100644 1-monolith-architecture-style/deployments/docker-compose/docker-compose.infrastructure.yaml delete mode 100644 1-monolith-architecture-style/deployments/docker-compose/docker-compose.yaml delete mode 100644 1-monolith-architecture-style/src/Api/src/Api.csproj delete mode 100644 1-monolith-architecture-style/src/Api/src/Extensions/MediatRExtensions.cs delete mode 100644 1-monolith-architecture-style/src/Api/src/Extensions/SharedInfrastructureExtensions.cs delete mode 100644 1-monolith-architecture-style/src/Api/src/Program.cs delete mode 100644 1-monolith-architecture-style/src/Api/src/Properties/launchSettings.json delete mode 100644 1-monolith-architecture-style/src/Api/src/appsettings.docker.json delete mode 100644 1-monolith-architecture-style/src/Api/src/appsettings.json delete mode 100644 1-monolith-architecture-style/src/Api/src/appsettings.test.json delete mode 100644 1-monolith-architecture-style/src/Api/src/keys/is-signing-key-296345BF73910ADD1DAC302B848E47E7.json delete mode 100644 1-monolith-architecture-style/src/Api/src/keys/is-signing-key-73D9025BDA857BF270C99C6594EE4246.json delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Booking/BookingEventMapper.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Booking/BookingProjection.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Booking/BookingRoot.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Booking/Bookings/Dtos/CreateReservation.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Booking/Bookings/Exceptions/BookingAlreadyExistException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Booking/Bookings/Exceptions/FlightNotFoundException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Booking/Bookings/Exceptions/InvalidAircraftIdException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Booking/Bookings/Exceptions/InvalidArriveAirportIdException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Booking/Bookings/Exceptions/InvalidDepartureAirportIdException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Booking/Bookings/Exceptions/InvalidFlightDateException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Booking/Bookings/Exceptions/InvalidFlightNumberException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Booking/Bookings/Exceptions/InvalidPassengerNameException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Booking/Bookings/Exceptions/InvalidPriceException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Booking/Bookings/Exceptions/SeatNumberException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Booking/Bookings/Features/BookingMappings.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Booking/Bookings/Features/CreatingBook/V1/CreateBooking.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Booking/Bookings/Models/Booking.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Booking/Bookings/Models/BookingReadModel.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Booking/Bookings/ValueObjects/PassengerInfo.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Booking/Bookings/ValueObjects/Trip.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Booking/Data/BookingReadDbContext.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/BookingMonolith.csproj delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/BookingMonolithRoot.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Aircrafts/Dtos/AircraftDto.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Aircrafts/Exceptions/AircraftAlreadyExistException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Aircrafts/Exceptions/InvalidAircraftIdException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Aircrafts/Exceptions/InvalidManufacturingYearException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Aircrafts/Exceptions/InvalidModelException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Aircrafts/Exceptions/InvalidNameException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Aircrafts/Features/AircraftMappings.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Aircrafts/Features/CreatingAircraft/V1/CreateAircraft.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Aircrafts/Features/CreatingAircraft/V1/CreateAircraftMongo.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Aircrafts/Models/Aircraft.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Aircrafts/Models/AircraftReadModel.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Aircrafts/ValueObjects/AircraftId.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Aircrafts/ValueObjects/ManufacturingYear.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Aircrafts/ValueObjects/Model.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Aircrafts/ValueObjects/Name.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Airports/Dtos/AirportDto.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Airports/Exceptions/AirportAlreadyExistException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Airports/Exceptions/InvalidAddressException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Airports/Exceptions/InvalidAirportIdException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Airports/Exceptions/InvalidCodeException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Airports/Exceptions/InvalidNameException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Airports/Features/AirportMappings.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Airports/Features/CreatingAirport/V1/CreateAirport.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Airports/Features/CreatingAirport/V1/CreateAirportMongo.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Airports/Models/Airport.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Airports/Models/AirportReadModel.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Airports/ValueObjects/Address.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Airports/ValueObjects/AirportId.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Airports/ValueObjects/Code.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Airports/ValueObjects/Name.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Data/Configurations/AircraftConfiguration.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Data/Configurations/AirportConfiguration.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Data/Configurations/FlightConfiguration.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Data/Configurations/SeatConfiguration.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Data/DesignTimeDbContextFactory.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Data/EfTxFlightBehavior.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Data/FlightDbContext.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Data/FlightReadDbContext.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Data/Migrations/20250407215512_initial.Designer.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Data/Migrations/20250407215512_initial.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Data/Migrations/FlightDbContextModelSnapshot.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Data/RegisterFlightConfigurationAttribute.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Data/Seed/FlightDataSeeder.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Data/Seed/InitialData.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Data/readme.md delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/FlightEventMapper.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/FlightRoot.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Flights/Dtos/FlightDto.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Flights/Enums/FlightStatus.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Flights/Exceptions/FlightAlreadyExistException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Flights/Exceptions/FlightNotFountException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Flights/Exceptions/InvalidArriveDateException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Flights/Exceptions/InvalidDepartureDateException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Flights/Exceptions/InvalidDurationException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Flights/Exceptions/InvalidFlightDateException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Flights/Exceptions/InvalidFlightIdException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Flights/Exceptions/InvalidFlightNumberException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Flights/Exceptions/InvalidPriceException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Flights/Features/CreatingFlight/V1/CreateFlight.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Flights/Features/CreatingFlight/V1/CreateFlightMongo.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Flights/Features/DeletingFlight/V1/DeleteFlight.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Flights/Features/DeletingFlight/V1/DeleteFlightMongo.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Flights/Features/FlightMappings.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Flights/Features/GettingAvailableFlights/V1/GetAvailableFlights.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Flights/Features/GettingFlightById/V1/GetFlightById.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Flights/Features/UpdatingFlight/V1/UpdateFlight.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Flights/Features/UpdatingFlight/V1/UpdateFlightMongo.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Flights/Models/Flight.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Flights/Models/FlightReadModel.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Flights/ValueObjects/ArriveDate.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Flights/ValueObjects/DepartureDate.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Flights/ValueObjects/DurationMinutes.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Flights/ValueObjects/FlightDate.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Flights/ValueObjects/FlightId.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Flights/ValueObjects/FlightNumber.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Flights/ValueObjects/Price.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Seats/Dtos/SeatDto.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Seats/Enums/SeatClass.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Seats/Enums/SeatType.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Seats/Exceptions/AllSeatsFullException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Seats/Exceptions/InvalidSeatIdException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Seats/Exceptions/InvalidSeatNumberException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Seats/Exceptions/SeatAlreadyExistException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Seats/Exceptions/SeatNumberIncorrectException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Seats/Features/CreatingSeat/V1/CreateSeat.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Seats/Features/CreatingSeat/V1/CreateSeatMongo.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Seats/Features/GettingAvailableSeats/V1/GetAvailableSeats.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Seats/Features/ReservingSeat/V1/ReserveSeat.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Seats/Features/ReservingSeat/V1/ReserveSeatMongo.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Seats/Features/SeatMappings.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Seats/Models/Seat.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Seats/Models/SeatReadModel.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Seats/ValueObjects/SeatId.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Flight/Seats/ValueObjects/SeatNumber.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/Configurations/AuthOptions.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/Configurations/Config.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/Configurations/UserValidator.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/Data/Configurations/RoleClaimConfiguration.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/Data/Configurations/RoleConfiguration.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/Data/Configurations/UserClaimConfiguration.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/Data/Configurations/UserConfiguration.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/Data/Configurations/UserLoginConfiguration.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/Data/Configurations/UserRoleConfiguration.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/Data/Configurations/UserTokenConfiguration.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/Data/DesignTimeDbContextFactory.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/Data/EfTxIdentityBehavior.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/Data/IdentityContext.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/Data/Migrations/20250407214345_initial.Designer.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/Data/Migrations/20250407214345_initial.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/Data/Migrations/IdentityContextModelSnapshot.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/Data/RegisterIdentityConfigurationAttribute.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/Data/Seed/IdentityDataSeeder.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/Data/Seed/InitialData.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/Data/readme.md delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/Extensions/Infrastructure/IdentityServerExtensions.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/Identities/Constants/Constants.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/Identities/Exceptions/RegisterIdentityUserException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/Identities/Features/IdentityMappings.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/Identities/Features/RegisteringNewUser/V1/RegisterNewUser.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/Identities/Models/Role.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/Identities/Models/RoleClaim.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/Identities/Models/User.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/Identities/Models/UserClaim.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/Identities/Models/UserLogin.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/Identities/Models/UserRole.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/Identities/Models/UserToken.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/IdentityEventMapper.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Identity/IdentityRoot.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Data/Configurations/PassengerConfiguration.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Data/DesignTimeDbContextFactory.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Data/EfTxPassengerBehavior.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Data/Migrations/20250407215445_initial.Designer.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Data/Migrations/20250407215445_initial.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Data/Migrations/PassengerDbContextModelSnapshot.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Data/PassengerDbContext.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Data/PassengerReadDbContext.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Data/RegisterPassengerConfigurationAttribute.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Data/readme.md delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Exceptions/InvalidAgeException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Exceptions/InvalidNameException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Exceptions/InvalidPassengerIdException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Exceptions/InvalidPassportNumberException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Exceptions/PassengerAlreadyExist.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Exceptions/PassengerNotFoundException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Identity/Consumers/RegisteringNewUser/V1/PassengerCreatedDomainEvent.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Identity/Consumers/RegisteringNewUser/V1/RegisterNewUser.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/PassengerEventMapper.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/PassengerRoot.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Passengers/Dtos/PassengerDto.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Passengers/Enums/PassengerType.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Passengers/Exceptions/InvalidAgeException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Passengers/Exceptions/InvalidNameException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Passengers/Exceptions/InvalidPassportNumberException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Passengers/Exceptions/PassengerAlreadyExist.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Passengers/Exceptions/PassengerNotFoundException.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Passengers/Features/CompletingRegisterPassenger/V1/CompleteRegisterPassenger.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Passengers/Features/CompletingRegisterPassenger/V1/CompleteRegisterPassengerMongo.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Passengers/Features/GettingPassengerById/V1/GetPassengerById.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Passengers/Features/PassengerMappings.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Passengers/Models/Passenger.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Passengers/Models/PassengerReadModel.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Passengers/ValueObjects/Age.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Passengers/ValueObjects/Name.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Passengers/ValueObjects/PassengerId.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/src/Passenger/Passengers/ValueObjects/PassportNumber.cs delete mode 100644 1-monolith-architecture-style/src/BookingMonolith/tests/.gitkeep delete mode 100644 2-modular-monolith-architecture-style/README.md delete mode 100644 2-modular-monolith-architecture-style/assets/booking-modular-monolith.drawio delete mode 100644 2-modular-monolith-architecture-style/assets/booking-modular-monolith.png delete mode 100644 2-modular-monolith-architecture-style/booking.rest delete mode 100644 2-modular-monolith-architecture-style/deployments/.gitkeep delete mode 100644 2-modular-monolith-architecture-style/deployments/configs/dashboards.md delete mode 100644 2-modular-monolith-architecture-style/deployments/configs/grafana/dashboards/dotnet-core-endpoint.json delete mode 100644 2-modular-monolith-architecture-style/deployments/configs/grafana/dashboards/dotnet-core.json delete mode 100644 2-modular-monolith-architecture-style/deployments/configs/grafana/dashboards/postgresql.json delete mode 100644 2-modular-monolith-architecture-style/deployments/configs/grafana/dashboards/rabbitmq.json delete mode 100644 2-modular-monolith-architecture-style/deployments/configs/grafana/provisioning/datasources/datasource.yml delete mode 100644 2-modular-monolith-architecture-style/deployments/configs/loki-config.yaml delete mode 100644 2-modular-monolith-architecture-style/deployments/configs/prometheus.yaml delete mode 100644 2-modular-monolith-architecture-style/deployments/configs/tempo.yaml delete mode 100644 2-modular-monolith-architecture-style/deployments/docker-compose/docker-compose.infrastructure.yaml delete mode 100644 2-modular-monolith-architecture-style/deployments/docker-compose/docker-compose.yaml delete mode 100644 2-modular-monolith-architecture-style/src/Api/dev.Dockerfile delete mode 100644 2-modular-monolith-architecture-style/src/Api/src/Api.csproj delete mode 100644 2-modular-monolith-architecture-style/src/Api/src/Extensions/SharedInfrastructureExtensions.cs delete mode 100644 2-modular-monolith-architecture-style/src/Api/src/Program.cs delete mode 100644 2-modular-monolith-architecture-style/src/Api/src/Properties/launchSettings.json delete mode 100644 2-modular-monolith-architecture-style/src/Api/src/appsettings.Development.json delete mode 100644 2-modular-monolith-architecture-style/src/Api/src/appsettings.docker.json delete mode 100644 2-modular-monolith-architecture-style/src/Api/src/appsettings.json delete mode 100644 2-modular-monolith-architecture-style/src/Api/src/appsettings.test.json delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Booking/src/Booking/Features/CreatingBook/V1/CreateBooking.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Booking/src/Extensions/Infrastructure/GrpcClientExtensions.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Booking/src/Extensions/Infrastructure/InfrastructureExtensions.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Booking/src/Extensions/Infrastructure/MediatRExtensions.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Booking/src/GrpcClient/Protos/flight.proto delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Booking/src/GrpcClient/Protos/passenger.proto delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Booking/tests/.gitkeep delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Booking/tests/Integration.Test/Booking/Features/CreateBookingTests.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Booking/tests/Integration.Test/BookingIntegrationTestBase.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Booking/tests/Integration.Test/Fakes/FakeFlightResponse.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Booking/tests/Integration.Test/Fakes/FakeGetAvailableSeatsResponse.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Booking/tests/Integration.Test/Fakes/FakePassengerResponse.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Booking/tests/Integration.Test/Fakes/FakeReserveSeatResponse.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Booking/tests/Integration.Test/Integration.Test.csproj delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Booking/tests/tests.sln delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Flight/src/Data/EfTxFlightBehavior.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Flight/src/Data/FlightDbContext.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Flight/src/Extensions/Infrastructure/InfrastructureExtensions.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Flight/src/Extensions/Infrastructure/MediatRExtensions.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Flight/src/Flight.csproj delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Flight/tests/.gitkeep delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Flight/tests/EndToEnd.Test/EndToEnd.Test.csproj delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Flight/tests/EndToEnd.Test/Flight/Features/CreateFlightTests.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Flight/tests/EndToEnd.Test/Flight/Features/GetFlightByIdTests.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Flight/tests/EndToEnd.Test/FlightEndToEndTestBase.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Flight/tests/Integration.Test/Aircraft/Features/CreateAircraftTests.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Flight/tests/Integration.Test/Airport/Features/CreateAirportTests.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Flight/tests/Integration.Test/Flight/Features/CreateFlightTests.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Flight/tests/Integration.Test/Flight/Features/DeleteFlightTests.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Flight/tests/Integration.Test/Flight/Features/GetAvailableFlightsTests.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Flight/tests/Integration.Test/Flight/Features/GetFlightByIdTests.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Flight/tests/Integration.Test/Flight/Features/UpdateFlightTests.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Flight/tests/Integration.Test/FlightIntegrationTestBase.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Flight/tests/Integration.Test/Integration.Test.csproj delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Flight/tests/Integration.Test/Seat/Features/GetAvailableSeatsTests.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Flight/tests/Integration.Test/Seat/Features/ReserveSeatTests.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Flight/tests/Unit.Test/Unit.Test.csproj delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Flight/tests/tests.sln delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Identity/src/Configurations/Config.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Identity/src/Data/EfTxIdentityBehavior.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Identity/src/Data/Seed/IdentityDataSeeder.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Identity/src/Extensions/Infrastructure/InfrastructureExtensions.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Identity/src/Extensions/Infrastructure/MediatRExtensions.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Identity/src/Identity/Constants/Constants.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Identity/src/Identity/Features/RegisteringNewUser/V1/RegisterNewUser.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Identity/tests/.gitkeep delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Identity/tests/Integration.Test/Identity/Features/RegisterNewUserTests.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Identity/tests/Integration.Test/IdentityIntegrationTestBase.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Identity/tests/Integration.Test/Integration.Test.csproj delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Identity/tests/tests.sln delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Passenger/src/AssemblyInfo.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Passenger/src/Data/EfTxPassengerBehavior.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Passenger/src/Extensions/Infrastructure/InfrastructureExtensions.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Passenger/src/Extensions/Infrastructure/MediatRExtensions.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Passenger/src/Passengers/Features/CompletingRegisterPassenger/V1/CompleteRegisterPassenger.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Passenger/tests/.gitkeep delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Passenger/tests/Integration.Test/Integration.Test.csproj delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Passenger/tests/Integration.Test/Passenger/Features/CompleteRegisterPassengerTests.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Passenger/tests/Integration.Test/Passenger/Features/GetPassengerByIdTests.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Passenger/tests/Integration.Test/PassengerIntegrationTestBase.cs delete mode 100644 2-modular-monolith-architecture-style/src/Modules/Passenger/tests/tests.sln delete mode 100644 3-microservices-architecture-style/README.md delete mode 100644 3-microservices-architecture-style/deployments/configs/dashboards.md delete mode 100644 3-microservices-architecture-style/deployments/configs/grafana/dashboards/dotnet-core-endpoint.json delete mode 100644 3-microservices-architecture-style/deployments/configs/grafana/dashboards/node-exporter.json delete mode 100644 3-microservices-architecture-style/deployments/configs/grafana/dashboards/rabbitmq.json delete mode 100644 3-microservices-architecture-style/deployments/configs/grafana/provisioning/dashboards/dashboard.yml delete mode 100644 3-microservices-architecture-style/deployments/configs/loki-config.yaml delete mode 100644 3-microservices-architecture-style/deployments/configs/otel-collector-config.yaml delete mode 100644 3-microservices-architecture-style/src/ApiGateway/src/ApiGateway.csproj delete mode 100644 3-microservices-architecture-style/src/ApiGateway/src/appsettings.Development.json delete mode 100644 3-microservices-architecture-style/src/Services/Booking/Dockerfile delete mode 100644 3-microservices-architecture-style/src/Services/Booking/dev.Dockerfile delete mode 100644 3-microservices-architecture-style/src/Services/Booking/src/Booking/AssemblyInfo.cs delete mode 100644 3-microservices-architecture-style/src/Services/Booking/src/Booking/Booking.csproj delete mode 100644 3-microservices-architecture-style/src/Services/Booking/src/Booking/Booking/Dtos/CreateReservation.cs delete mode 100644 3-microservices-architecture-style/src/Services/Booking/src/Booking/Booking/Exceptions/BookingAlreadyExistException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Booking/src/Booking/Booking/Exceptions/FlightNotFoundException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Booking/src/Booking/Booking/Exceptions/InvalidAircraftIdException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Booking/src/Booking/Booking/Exceptions/InvalidArriveAirportIdException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Booking/src/Booking/Booking/Exceptions/InvalidDepartureAirportIdException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Booking/src/Booking/Booking/Exceptions/InvalidFlightDateException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Booking/src/Booking/Booking/Exceptions/InvalidFlightNumberException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Booking/src/Booking/Booking/Exceptions/InvalidPassengerNameException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Booking/src/Booking/Booking/Exceptions/InvalidPriceException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Booking/src/Booking/Booking/Exceptions/SeatNumberException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Booking/src/Booking/Booking/Features/BookingMappings.cs delete mode 100644 3-microservices-architecture-style/src/Services/Booking/src/Booking/Booking/Models/Booking.cs delete mode 100644 3-microservices-architecture-style/src/Services/Booking/src/Booking/Booking/Models/BookingReadModel.cs delete mode 100644 3-microservices-architecture-style/src/Services/Booking/src/Booking/Booking/ValueObjects/PassengerInfo.cs delete mode 100644 3-microservices-architecture-style/src/Services/Booking/src/Booking/Booking/ValueObjects/Trip.cs delete mode 100644 3-microservices-architecture-style/src/Services/Booking/src/Booking/BookingEventMapper.cs delete mode 100644 3-microservices-architecture-style/src/Services/Booking/src/Booking/BookingProjection.cs delete mode 100644 3-microservices-architecture-style/src/Services/Booking/src/Booking/BookingRoot.cs delete mode 100644 3-microservices-architecture-style/src/Services/Booking/src/Booking/Configuration/GrpcOptions.cs delete mode 100644 3-microservices-architecture-style/src/Services/Booking/src/Booking/Data/BookingReadDbContext.cs delete mode 100644 3-microservices-architecture-style/src/Services/Booking/tests/IntegrationTest/Fakes/FakeCreateBookingCommand.cs delete mode 100644 3-microservices-architecture-style/src/Services/Booking/tests/IntegrationTest/xunit.runner.json delete mode 100644 3-microservices-architecture-style/src/Services/Booking/tests/PerformanceTest/.openapi-generator/VERSION delete mode 100644 3-microservices-architecture-style/src/Services/Flight/Dockerfile delete mode 100644 3-microservices-architecture-style/src/Services/Flight/dev.Dockerfile delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Aircrafts/Dtos/AircraftDto.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Aircrafts/Exceptions/AircraftAlreadyExistException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Aircrafts/Exceptions/InvalidAircraftIdException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Aircrafts/Exceptions/InvalidManufacturingYearException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Aircrafts/Exceptions/InvalidModelException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Aircrafts/Exceptions/InvalidNameException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Aircrafts/Features/AircraftMappings.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Aircrafts/Features/CreatingAircraft/V1/CreateAircraft.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Aircrafts/Features/CreatingAircraft/V1/CreateAircraftMongo.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Aircrafts/Models/Aircraft.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Aircrafts/Models/AircraftReadModel.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Aircrafts/ValueObjects/AircraftId.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Aircrafts/ValueObjects/ManufacturingYear.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Aircrafts/ValueObjects/Model.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Aircrafts/ValueObjects/Name.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Airports/Dtos/AirportDto.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Airports/Exceptions/AirportAlreadyExistException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Airports/Exceptions/InvalidAddressException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Airports/Exceptions/InvalidAirportIdException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Airports/Exceptions/InvalidCodeException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Airports/Exceptions/InvalidNameException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Airports/Features/AirportMappings.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Airports/Features/CreatingAirport/V1/CreateAirport.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Airports/Features/CreatingAirport/V1/CreateAirportMongo.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Airports/Models/Airport.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Airports/Models/AirportReadModel.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Airports/ValueObjects/Address.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Airports/ValueObjects/AirportId.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Airports/ValueObjects/Code.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Airports/ValueObjects/Name.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/AssemblyInfo.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Data/Configurations/AircraftConfiguration.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Data/Configurations/AirportConfiguration.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Data/Configurations/FlightConfiguration.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Data/Configurations/SeatConfiguration.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Data/DesignTimeDbContextFactory.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Data/FlightReadDbContext.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Data/Migrations/20230611230948_initial.Designer.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Data/Migrations/20230611230948_initial.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Data/Migrations/FlightDbContextModelSnapshot.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Data/Seed/FlightDataSeeder.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Data/Seed/InitialData.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Data/readme.md delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/FlightEventMapper.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/FlightRoot.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Flights/Dtos/FlightDto.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Flights/Enums/FlightStatus.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Flights/Exceptions/FlightAlreadyExistException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Flights/Exceptions/FlightNotFountException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Flights/Exceptions/InvalidArriveDateException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Flights/Exceptions/InvalidDepartureDateException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Flights/Exceptions/InvalidDurationException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Flights/Exceptions/InvalidFlightDateException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Flights/Exceptions/InvalidFlightIdException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Flights/Exceptions/InvalidFlightNumberException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Flights/Exceptions/InvalidPriceException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Flights/Features/CreatingFlight/V1/CreateFlight.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Flights/Features/CreatingFlight/V1/CreateFlightMongo.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Flights/Features/DeletingFlight/V1/DeleteFlight.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Flights/Features/DeletingFlight/V1/DeleteFlightMongo.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Flights/Features/FlightMappings.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Flights/Features/GettingAvailableFlights/V1/GetAvailableFlights.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Flights/Features/GettingFlightById/V1/GetFlightById.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Flights/Features/UpdatingFlight/V1/UpdateFlight.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Flights/Features/UpdatingFlight/V1/UpdateFlightMongo.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Flights/Models/Flight.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Flights/Models/FlightReadModel.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Flights/ValueObjects/ArriveDate.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Flights/ValueObjects/DepartureDate.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Flights/ValueObjects/DurationMinutes.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Flights/ValueObjects/FlightDate.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Flights/ValueObjects/FlightId.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Flights/ValueObjects/FlightNumber.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Flights/ValueObjects/Price.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/GrpcServer/Protos/flight.proto delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/GrpcServer/Services/FlightGrpcServices.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Seats/Dtos/SeatDto.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Seats/Enums/SeatClass.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Seats/Enums/SeatType.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Seats/Exceptions/AllSeatsFullException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Seats/Exceptions/InvalidSeatIdException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Seats/Exceptions/InvalidSeatNumberException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Seats/Exceptions/SeatAlreadyExistException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Seats/Exceptions/SeatNumberIncorrectException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Seats/Features/CreatingSeat/V1/CreateSeat.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Seats/Features/CreatingSeat/V1/CreateSeatMongo.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Seats/Features/GettingAvailableSeats/V1/GetAvailableSeats.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Seats/Features/ReservingSeat/V1/ReserveSeat.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Seats/Features/ReservingSeat/V1/ReserveSeatMongo.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Seats/Features/SeatMappings.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Seats/Models/Seat.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Seats/Models/SeatReadModel.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Seats/ValueObjects/SeatId.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/src/Flight/Seats/ValueObjects/SeatNumber.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/EndToEndTest/Fakes/FakeCreateFlightCommand.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/EndToEndTest/Fakes/FakeCreateFlightMongoCommand.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/EndToEndTest/FlightTestDataSeeder.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/EndToEndTest/Routes/ApiRoutes.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/EndToEndTest/xunit.runner.json delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/IntegrationTest/Fakes/FakeCreateAircraftCommand.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/IntegrationTest/Fakes/FakeCreateAirportCommand.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/IntegrationTest/Fakes/FakeCreateFlightCommand.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/IntegrationTest/Fakes/FakeCreateFlightMongoCommand.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/IntegrationTest/Fakes/FakeCreateSeatCommand.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/IntegrationTest/Fakes/FakeCreateSeatMongoCommand.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/IntegrationTest/Fakes/FakeUpdateFlightCommand.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/IntegrationTest/FlightTestDataSeeder.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/IntegrationTest/xunit.runner.json delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/PerformanceTest/.openapi-generator/VERSION delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/UnitTest/Aircraft/Features/CreateAircraftTests/CreateAircraftCommandHandlerTests.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/UnitTest/Aircraft/Features/CreateAircraftTests/CreateAircraftCommandValidatorTests.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/UnitTest/Airport/Features/CreateAirportTests/CreateAirportCommandHandlerTests.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/UnitTest/Airport/Features/CreateAirportTests/CreateAirportCommandValidatorTests.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/UnitTest/Common/DbContextFactory.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/UnitTest/Common/MapperFactory.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/UnitTest/Common/UnitTestFixture.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/UnitTest/Fakes/FakeCreateAircraftCommand.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/UnitTest/Fakes/FakeCreateAirportCommand.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/UnitTest/Fakes/FakeCreateFlightCommand.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/UnitTest/Fakes/FakeCreateSeatCommand.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/UnitTest/Fakes/FakeFlightCreate.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/UnitTest/Fakes/FakeFlightUpdate.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/UnitTest/Fakes/FakeValidateCreateAircraftCommand.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/UnitTest/Fakes/FakeValidateCreateAirportCommand.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/UnitTest/Fakes/FakeValidateCreateFlightCommand.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/UnitTest/Fakes/FakeValidateCreateSeatCommand.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/UnitTest/Flight/Features/Domains/CreateFlightTests.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/UnitTest/Flight/Features/Domains/UpdateFlightTests.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/UnitTest/Flight/Features/Handlers/CreateFlight/CreateFlightCommandHandlerTests.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/UnitTest/Flight/Features/Handlers/CreateFlight/CreateFlightCommandValidatorTests.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/UnitTest/Flight/FlightMappingTests.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/UnitTest/Seat/Features/CreateSeatCommandHandlerTests.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/UnitTest/Seat/Features/CreateSeatCommandValidatorTests.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/UnitTest/Seat/SeatMappingTests.cs delete mode 100644 3-microservices-architecture-style/src/Services/Flight/tests/UnitTest/xunit.runner.json delete mode 100644 3-microservices-architecture-style/src/Services/Identity/Dockerfile delete mode 100644 3-microservices-architecture-style/src/Services/Identity/dev.Dockerfile delete mode 100644 3-microservices-architecture-style/src/Services/Identity/src/Identity.Api/keys/is-signing-key-0AC3347A09AA5E44E947F3E30ED54871.json delete mode 100644 3-microservices-architecture-style/src/Services/Identity/src/Identity.Api/keys/is-signing-key-A57781A0405849BDE786A79636460E49.json delete mode 100644 3-microservices-architecture-style/src/Services/Identity/src/Identity.Api/keys/is-signing-key-B3C31EEE2718D3C5004C6E85AD74F26C.json delete mode 100644 3-microservices-architecture-style/src/Services/Identity/src/Identity/AssemblyInfo.cs delete mode 100644 3-microservices-architecture-style/src/Services/Identity/src/Identity/Configurations/AuthOptions.cs delete mode 100644 3-microservices-architecture-style/src/Services/Identity/src/Identity/Configurations/UserValidator.cs delete mode 100644 3-microservices-architecture-style/src/Services/Identity/src/Identity/Data/Configurations/RoleClaimConfiguration.cs delete mode 100644 3-microservices-architecture-style/src/Services/Identity/src/Identity/Data/Configurations/RoleConfiguration.cs delete mode 100644 3-microservices-architecture-style/src/Services/Identity/src/Identity/Data/Configurations/UserClaimConfiguration.cs delete mode 100644 3-microservices-architecture-style/src/Services/Identity/src/Identity/Data/Configurations/UserConfiguration.cs delete mode 100644 3-microservices-architecture-style/src/Services/Identity/src/Identity/Data/Configurations/UserLoginConfiguration.cs delete mode 100644 3-microservices-architecture-style/src/Services/Identity/src/Identity/Data/Configurations/UserRoleConfiguration.cs delete mode 100644 3-microservices-architecture-style/src/Services/Identity/src/Identity/Data/Configurations/UserTokenConfiguration.cs delete mode 100644 3-microservices-architecture-style/src/Services/Identity/src/Identity/Data/DesignTimeDbContextFactory.cs delete mode 100644 3-microservices-architecture-style/src/Services/Identity/src/Identity/Data/IdentityContext.cs delete mode 100644 3-microservices-architecture-style/src/Services/Identity/src/Identity/Data/Migrations/20230331193410_initial.Designer.cs delete mode 100644 3-microservices-architecture-style/src/Services/Identity/src/Identity/Data/Migrations/20230331193410_initial.cs delete mode 100644 3-microservices-architecture-style/src/Services/Identity/src/Identity/Data/Migrations/IdentityContextModelSnapshot.cs delete mode 100644 3-microservices-architecture-style/src/Services/Identity/src/Identity/Data/Seed/InitialData.cs delete mode 100644 3-microservices-architecture-style/src/Services/Identity/src/Identity/Data/readme.md delete mode 100644 3-microservices-architecture-style/src/Services/Identity/src/Identity/Extensions/Infrastructure/IdentityServerExtensions.cs delete mode 100644 3-microservices-architecture-style/src/Services/Identity/src/Identity/Identity.csproj delete mode 100644 3-microservices-architecture-style/src/Services/Identity/src/Identity/Identity/Exceptions/RegisterIdentityUserException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Identity/src/Identity/Identity/Features/IdentityMappings.cs delete mode 100644 3-microservices-architecture-style/src/Services/Identity/src/Identity/Identity/Models/Role.cs delete mode 100644 3-microservices-architecture-style/src/Services/Identity/src/Identity/Identity/Models/RoleClaim.cs delete mode 100644 3-microservices-architecture-style/src/Services/Identity/src/Identity/Identity/Models/User.cs delete mode 100644 3-microservices-architecture-style/src/Services/Identity/src/Identity/Identity/Models/UserClaim.cs delete mode 100644 3-microservices-architecture-style/src/Services/Identity/src/Identity/Identity/Models/UserLogin.cs delete mode 100644 3-microservices-architecture-style/src/Services/Identity/src/Identity/Identity/Models/UserRole.cs delete mode 100644 3-microservices-architecture-style/src/Services/Identity/src/Identity/Identity/Models/UserToken.cs delete mode 100644 3-microservices-architecture-style/src/Services/Identity/src/Identity/IdentityEventMapper.cs delete mode 100644 3-microservices-architecture-style/src/Services/Identity/src/Identity/IdentityRoot.cs delete mode 100644 3-microservices-architecture-style/src/Services/Identity/tests/IntegrationTest/Fakes/FakeRegisterNewUserCommand.cs delete mode 100644 3-microservices-architecture-style/src/Services/Identity/tests/IntegrationTest/IdentityTestDataSeeder.cs delete mode 100644 3-microservices-architecture-style/src/Services/Identity/tests/IntegrationTest/xunit.runner.json delete mode 100644 3-microservices-architecture-style/src/Services/Identity/tests/PerformanceTest/.openapi-generator/VERSION delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/Dockerfile delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/dev.Dockerfile delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/AssemblyInfo.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/Data/Configurations/PassengerConfiguration.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/Data/DesignTimeDbContextFactory.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/Data/Migrations/20230611213031_initial.Designer.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/Data/Migrations/20230611213031_initial.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/Data/Migrations/PassengerDbContextModelSnapshot.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/Data/PassengerDbContext.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/Data/PassengerReadDbContext.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/Data/readme.md delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/Exceptions/InvalidAgeException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/Exceptions/InvalidNameException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/Exceptions/InvalidPassengerIdException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/Exceptions/InvalidPassportNumberException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/Exceptions/PassengerAlreadyExist.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/Exceptions/PassengerNotFoundException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/GrpcServer/Protos/passenger.proto delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/GrpcServer/Services/PassengerGrpcServices.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/Identity/Consumers/RegisteringNewUser/V1/PassengerCreatedDomainEvent.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/Identity/Consumers/RegisteringNewUser/V1/RegisterNewUser.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/Passenger.csproj delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/PassengerEventMapper.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/PassengerRoot.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/Passengers/Dtos/PassengerDto.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/Passengers/Enums/PassengerType.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/Passengers/Exceptions/InvalidAgeException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/Passengers/Exceptions/InvalidNameException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/Passengers/Exceptions/InvalidPassportNumberException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/Passengers/Exceptions/PassengerAlreadyExist.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/Passengers/Exceptions/PassengerNotFoundException.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/Passengers/Features/CompletingRegisterPassenger/V1/CompleteRegisterPassengerMongo.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/Passengers/Features/GettingPassengerById/V1/GetPassengerById.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/Passengers/Features/PassengerMappings.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/Passengers/Models/Passenger.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/Passengers/Models/PassengerReadModel.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/Passengers/ValueObjects/Age.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/Passengers/ValueObjects/Name.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/Passengers/ValueObjects/PassengerId.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/src/Passenger/Passengers/ValueObjects/PassportNumber.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/tests/IntegrationTest/Fakes/FakeCompleteRegisterPassengerCommand.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/tests/IntegrationTest/Fakes/FakeCompleteRegisterPassengerMongoCommand.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/tests/IntegrationTest/Fakes/FakeUserCreated.cs delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/tests/IntegrationTest/xunit.runner.json delete mode 100644 3-microservices-architecture-style/src/Services/Passenger/tests/PerformanceTest/.openapi-generator/VERSION delete mode 100644 assets/architecture.excalidraw rename {3-microservices-architecture-style/assets => assets}/booking-microservices.drawio (100%) rename {3-microservices-architecture-style/assets => assets}/booking-microservices.png (100%) create mode 100644 assets/booking.png create mode 100644 assets/logo.png delete mode 100644 assets/microservices.png delete mode 100644 assets/modular-monolith.png delete mode 100644 assets/monolith.png create mode 100644 booking-microservices.sln rename 3-microservices-architecture-style/booking.rest => booking.rest (98%) rename {1-monolith-architecture-style/deployments => deployments}/configs/dashboards.md (96%) rename {1-monolith-architecture-style/deployments => deployments}/configs/grafana/dashboards/dotnet-core-endpoint.json (99%) rename {3-microservices-architecture-style/deployments => deployments}/configs/grafana/dashboards/dotnet-core.json (99%) rename {2-modular-monolith-architecture-style/deployments => deployments}/configs/grafana/dashboards/node-exporter.json (99%) rename {3-microservices-architecture-style/deployments => deployments}/configs/grafana/dashboards/postgresql.json (99%) rename {1-monolith-architecture-style/deployments => deployments}/configs/grafana/dashboards/rabbitmq.json (99%) rename {2-modular-monolith-architecture-style/deployments => deployments}/configs/grafana/provisioning/dashboards/dashboard.yml (98%) rename {3-microservices-architecture-style/deployments => deployments}/configs/grafana/provisioning/datasources/datasource.yml (94%) rename {1-monolith-architecture-style/deployments => deployments}/configs/loki-config.yaml (100%) rename {2-modular-monolith-architecture-style/deployments => deployments}/configs/otel-collector-config.yaml (95%) rename {3-microservices-architecture-style/deployments => deployments}/configs/prometheus.yaml (96%) rename {3-microservices-architecture-style/deployments => deployments}/configs/tempo.yaml (97%) rename {3-microservices-architecture-style/deployments => deployments}/docker-compose/docker-compose.infrastructure.yaml (94%) rename {3-microservices-architecture-style/deployments => deployments}/docker-compose/docker-compose.yaml (96%) rename {3-microservices-architecture-style/deployments => deployments}/kubernetes/booking-cert-manager.yml (94%) rename {3-microservices-architecture-style/deployments => deployments}/kubernetes/booking-microservices.yml (98%) delete mode 100644 monolith-to-cloud-architecture.sln rename {3-microservices-architecture-style/src => src}/ApiGateway/Dockerfile (56%) rename {3-microservices-architecture-style/src => src}/ApiGateway/dev.Dockerfile (62%) create mode 100644 src/ApiGateway/src/ApiGateway.csproj rename {3-microservices-architecture-style/src => src}/ApiGateway/src/Program.cs (100%) rename {3-microservices-architecture-style/src => src}/ApiGateway/src/Properties/launchSettings.json (98%) rename {1-monolith-architecture-style/src/Api => src/ApiGateway}/src/appsettings.Development.json (100%) rename {3-microservices-architecture-style/src => src}/ApiGateway/src/appsettings.docker.json (100%) rename {3-microservices-architecture-style/src => src}/ApiGateway/src/appsettings.json (94%) rename {building-blocks => src/BuildingBlocks}/BuildingBlocks.csproj (100%) rename {building-blocks => src/BuildingBlocks}/Caching/CachingBehavior.cs (100%) rename {building-blocks => src/BuildingBlocks}/Caching/ICacheRequest.cs (100%) rename {building-blocks => src/BuildingBlocks}/Caching/IInvalidateCacheRequest.cs (100%) rename {building-blocks => src/BuildingBlocks}/Caching/InvalidateCachingBehavior.cs (100%) rename {building-blocks => src/BuildingBlocks}/Constants/IdentityConstant.cs (100%) rename {building-blocks => src/BuildingBlocks}/Contracts/EventBus.Messages/FlighContracts.cs (100%) rename {building-blocks => src/BuildingBlocks}/Contracts/EventBus.Messages/IdentityContracts.cs (100%) rename {building-blocks => src/BuildingBlocks}/Contracts/EventBus.Messages/PassengerContracts.cs (100%) rename {building-blocks => src/BuildingBlocks}/Contracts/EventBus.Messages/ReservationContracts.cs (100%) rename {building-blocks => src/BuildingBlocks}/Core/CQRS/ICommand.cs (100%) rename {building-blocks => src/BuildingBlocks}/Core/CQRS/ICommandHandler.cs (100%) rename {building-blocks => src/BuildingBlocks}/Core/CQRS/IQuery.cs (100%) rename {building-blocks => src/BuildingBlocks}/Core/CQRS/IQueryHandler.cs (100%) rename {building-blocks => src/BuildingBlocks}/Core/CompositeEventMapper.cs (100%) rename {building-blocks => src/BuildingBlocks}/Core/Event/EventType.cs (100%) rename {building-blocks => src/BuildingBlocks}/Core/Event/IDomainEvent.cs (100%) rename {building-blocks => src/BuildingBlocks}/Core/Event/IEvent.cs (100%) rename {building-blocks => src/BuildingBlocks}/Core/Event/IHaveIntegrationEvent.cs (100%) rename {building-blocks => src/BuildingBlocks}/Core/Event/IIntegrationEvent.cs (100%) rename {building-blocks => src/BuildingBlocks}/Core/Event/IInternalCommand.cs (100%) rename {building-blocks => src/BuildingBlocks}/Core/Event/InternalCommand.cs (100%) rename {building-blocks => src/BuildingBlocks}/Core/Event/MessageEnvelope.cs (100%) rename {building-blocks => src/BuildingBlocks}/Core/EventDispatcher.cs (100%) rename {building-blocks => src/BuildingBlocks}/Core/IEventDispatcher.cs (100%) rename {building-blocks => src/BuildingBlocks}/Core/IEventMapper.cs (100%) rename {building-blocks => src/BuildingBlocks}/Core/IntegrationEventWrapper.cs (100%) rename {building-blocks => src/BuildingBlocks}/Core/Model/Aggregate.cs (100%) rename {building-blocks => src/BuildingBlocks}/Core/Model/Entity.cs (100%) rename {building-blocks => src/BuildingBlocks}/Core/Model/IAggregate.cs (100%) rename {building-blocks => src/BuildingBlocks}/Core/Model/IEntity.cs (100%) rename {building-blocks => src/BuildingBlocks}/Core/Model/IVersion.cs (100%) rename {building-blocks => src/BuildingBlocks}/Core/Pagination/Extensions.cs (100%) rename {building-blocks => src/BuildingBlocks}/Core/Pagination/IPageList.cs (100%) rename {building-blocks => src/BuildingBlocks}/Core/Pagination/IPageQuery.cs (100%) rename {building-blocks => src/BuildingBlocks}/Core/Pagination/IPageRequest.cs (100%) rename {building-blocks => src/BuildingBlocks}/Core/Pagination/PageList.cs (100%) rename {building-blocks => src/BuildingBlocks}/EFCore/AppDbContextBase.cs (100%) rename {building-blocks => src/BuildingBlocks}/EFCore/DesignTimeDbContextFactoryBase.cs (100%) rename {building-blocks => src/BuildingBlocks}/EFCore/EfTxBehavior.cs (100%) rename {building-blocks => src/BuildingBlocks}/EFCore/Extensions.cs (100%) rename {building-blocks => src/BuildingBlocks}/EFCore/IDataSeeder.cs (100%) rename {building-blocks => src/BuildingBlocks}/EFCore/IDbContext.cs (100%) rename {building-blocks => src/BuildingBlocks}/EFCore/ISeedManager.cs (100%) rename {building-blocks => src/BuildingBlocks}/EFCore/PostgresOptions.cs (100%) rename {building-blocks => src/BuildingBlocks}/EFCore/SeedManagers.cs (100%) rename {building-blocks => src/BuildingBlocks}/EventStoreDB/BackgroundWorkers/BackgroundWorker.cs (100%) rename {building-blocks => src/BuildingBlocks}/EventStoreDB/Config.cs (100%) rename {building-blocks => src/BuildingBlocks}/EventStoreDB/Events/AggregateEventSourcing.cs (100%) rename {building-blocks => src/BuildingBlocks}/EventStoreDB/Events/AggregateStreamExtensions.cs (100%) rename {building-blocks => src/BuildingBlocks}/EventStoreDB/Events/EventTypeMapper.cs (100%) rename {building-blocks => src/BuildingBlocks}/EventStoreDB/Events/IAggregateEventSourcing.cs (100%) rename {building-blocks => src/BuildingBlocks}/EventStoreDB/Events/IEventHandler.cs (100%) rename {building-blocks => src/BuildingBlocks}/EventStoreDB/Events/IExternalEvent.cs (100%) rename {building-blocks => src/BuildingBlocks}/EventStoreDB/Events/IProjection.cs (100%) rename {building-blocks => src/BuildingBlocks}/EventStoreDB/Events/StreamEvent.cs (100%) rename {building-blocks => src/BuildingBlocks}/EventStoreDB/Events/StreamEventExtensions.cs (100%) rename {building-blocks => src/BuildingBlocks}/EventStoreDB/Events/StreamNameMapper.cs (100%) rename {building-blocks => src/BuildingBlocks}/EventStoreDB/Extensions.cs (100%) rename {building-blocks => src/BuildingBlocks}/EventStoreDB/Projections/IProjectionProcessor.cs (100%) rename {building-blocks => src/BuildingBlocks}/EventStoreDB/Projections/IProjectionPublisher.cs (100%) rename {building-blocks => src/BuildingBlocks}/EventStoreDB/Projections/ProjectionPublisher.cs (100%) rename {building-blocks => src/BuildingBlocks}/EventStoreDB/Repository/EventStoreDBRepository.cs (100%) rename {building-blocks => src/BuildingBlocks}/EventStoreDB/Repository/RepositoryExtensions.cs (100%) rename {building-blocks => src/BuildingBlocks}/EventStoreDB/Serialization/EventStoreDBSerializer.cs (100%) rename {building-blocks => src/BuildingBlocks}/EventStoreDB/Serialization/JsonObjectContractProvider.cs (100%) rename {building-blocks => src/BuildingBlocks}/EventStoreDB/Serialization/NonDefaultConstructorContractResolver.cs (100%) rename {building-blocks => src/BuildingBlocks}/EventStoreDB/Serialization/SerializationExtensions.cs (100%) rename {building-blocks => src/BuildingBlocks}/EventStoreDB/Subscriptions/EventStoreDBSubscriptionCheckpointRepository.cs (100%) rename {building-blocks => src/BuildingBlocks}/EventStoreDB/Subscriptions/EventStoreDBSubscriptionToAll.cs (100%) rename {building-blocks => src/BuildingBlocks}/EventStoreDB/Subscriptions/ISubscriptionCheckpointRepository.cs (100%) rename {building-blocks => src/BuildingBlocks}/EventStoreDB/Subscriptions/InMemorySubscriptionCheckpointRepository.cs (100%) rename {building-blocks => src/BuildingBlocks}/Exception/AggregateNotFoundException.cs (100%) create mode 100644 src/BuildingBlocks/Exception/AppException.cs create mode 100644 src/BuildingBlocks/Exception/BadRequestException.cs create mode 100644 src/BuildingBlocks/Exception/ConflictException.cs create mode 100644 src/BuildingBlocks/Exception/CustomException.cs create mode 100644 src/BuildingBlocks/Exception/DomainException.cs rename {building-blocks => src/BuildingBlocks}/Exception/GrpcExceptionInterceptor.cs (100%) create mode 100644 src/BuildingBlocks/Exception/InternalServerException.cs create mode 100644 src/BuildingBlocks/Exception/NotFoundException.cs rename {building-blocks => src/BuildingBlocks}/Exception/ProblemDetailsWithCode.cs (100%) create mode 100644 src/BuildingBlocks/Exception/ValidationException.cs rename {building-blocks => src/BuildingBlocks}/HealthCheck/Extensions.cs (100%) rename {building-blocks => src/BuildingBlocks}/HealthCheck/HealthOptions.cs (100%) rename {building-blocks => src/BuildingBlocks}/Jwt/AuthHeaderHandler.cs (100%) rename {building-blocks => src/BuildingBlocks}/Jwt/JwtExtensions.cs (100%) rename {building-blocks => src/BuildingBlocks}/Logging/Extensions.cs (100%) rename {building-blocks => src/BuildingBlocks}/Logging/FileOptions.cs (100%) rename {building-blocks => src/BuildingBlocks}/Logging/LogEnrichHelper.cs (100%) rename {building-blocks => src/BuildingBlocks}/Logging/LogOptions.cs (100%) rename {building-blocks => src/BuildingBlocks}/Logging/LoggingBehavior.cs (100%) rename {building-blocks => src/BuildingBlocks}/Mapster/Extensions.cs (100%) rename {building-blocks => src/BuildingBlocks}/MassTransit/ConsumeFilter.cs (100%) rename {building-blocks => src/BuildingBlocks}/MassTransit/Extensions.cs (100%) rename {building-blocks => src/BuildingBlocks}/MassTransit/RabbitMqOptions.cs (100%) rename {building-blocks => src/BuildingBlocks}/MassTransit/TransportType.cs (100%) rename {building-blocks => src/BuildingBlocks}/Mongo/Extensions.cs (100%) rename {building-blocks => src/BuildingBlocks}/Mongo/IMongoDbContext.cs (100%) rename {building-blocks => src/BuildingBlocks}/Mongo/IMongoRepository.cs (100%) rename {building-blocks => src/BuildingBlocks}/Mongo/IMongoUnitOfWork.cs (100%) rename {building-blocks => src/BuildingBlocks}/Mongo/IRepository.cs (100%) rename {building-blocks => src/BuildingBlocks}/Mongo/ITransactionAble.cs (100%) rename {building-blocks => src/BuildingBlocks}/Mongo/IUnitOfWork.cs (100%) rename {building-blocks => src/BuildingBlocks}/Mongo/ImmutablePocoConvention.cs (100%) rename {building-blocks => src/BuildingBlocks}/Mongo/MicroBootstrap.Persistence.Mongo.csproj (100%) rename {building-blocks => src/BuildingBlocks}/Mongo/MongoDbContext.cs (100%) rename {building-blocks => src/BuildingBlocks}/Mongo/MongoOptions.cs (100%) rename {building-blocks => src/BuildingBlocks}/Mongo/MongoRepository.cs (100%) rename {building-blocks => src/BuildingBlocks}/Mongo/MongoUnitOfWork.cs (100%) rename {building-blocks => src/BuildingBlocks}/OpenApi/Extensions.cs (100%) rename {building-blocks => src/BuildingBlocks}/OpenApi/SecuritySchemeDocumentTransformer.cs (100%) rename {building-blocks => src/BuildingBlocks}/OpenTelemetryCollector/ActivityExtensions.cs (100%) rename {building-blocks => src/BuildingBlocks}/OpenTelemetryCollector/ActivityInfo.cs (100%) rename {building-blocks => src/BuildingBlocks}/OpenTelemetryCollector/Behaviors/ObservabilityPipelineBehavior.cs (100%) rename {building-blocks => src/BuildingBlocks}/OpenTelemetryCollector/CoreDiagnostics/Commands/CommandHandlerActivity.cs (100%) rename {building-blocks => src/BuildingBlocks}/OpenTelemetryCollector/CoreDiagnostics/Commands/CommandHandlerMetrics.cs (100%) rename {building-blocks => src/BuildingBlocks}/OpenTelemetryCollector/CoreDiagnostics/Query/QueryHandlerActivity.cs (100%) rename {building-blocks => src/BuildingBlocks}/OpenTelemetryCollector/CoreDiagnostics/Query/QueryHandlerMetrics.cs (100%) rename {building-blocks => src/BuildingBlocks}/OpenTelemetryCollector/CreateActivityInfo.cs (100%) rename {building-blocks => src/BuildingBlocks}/OpenTelemetryCollector/DiagnosticsProvider/CustomeDiagnosticsProvider.cs (100%) rename {building-blocks => src/BuildingBlocks}/OpenTelemetryCollector/DiagnosticsProvider/IDiagnosticsProvider.cs (100%) rename {building-blocks => src/BuildingBlocks}/OpenTelemetryCollector/Extensions.cs (100%) rename {building-blocks => src/BuildingBlocks}/OpenTelemetryCollector/ObservabilityConstant.cs (100%) rename {building-blocks => src/BuildingBlocks}/OpenTelemetryCollector/ObservabilityOptions.cs (100%) rename {building-blocks => src/BuildingBlocks}/OpenTelemetryCollector/TelemetryTags.cs (100%) rename {building-blocks => src/BuildingBlocks}/PersistMessageProcessor/Extensions.cs (100%) rename {building-blocks => src/BuildingBlocks}/PersistMessageProcessor/IPersistMessageDbContext.cs (100%) rename {building-blocks => src/BuildingBlocks}/PersistMessageProcessor/IPersistMessageProcessor.cs (100%) rename {building-blocks => src/BuildingBlocks}/PersistMessageProcessor/MessageDeliveryType.cs (100%) rename {building-blocks => src/BuildingBlocks}/PersistMessageProcessor/MessageStatus.cs (100%) rename {building-blocks => src/BuildingBlocks}/PersistMessageProcessor/PersistMessage.cs (100%) rename {building-blocks => src/BuildingBlocks}/PersistMessageProcessor/PersistMessageBackgroundService.cs (100%) rename {building-blocks => src/BuildingBlocks}/PersistMessageProcessor/PersistMessageDbContext.cs (100%) rename {building-blocks => src/BuildingBlocks}/PersistMessageProcessor/PersistMessageOptions.cs (100%) rename {building-blocks => src/BuildingBlocks}/PersistMessageProcessor/PersistMessageProcessor.cs (100%) rename {building-blocks => src/BuildingBlocks}/Polly/CircuitBreakerOptions.cs (100%) rename {building-blocks => src/BuildingBlocks}/Polly/Extensions.cs (100%) rename {building-blocks => src/BuildingBlocks}/Polly/GrpcCircuitBreaker.cs (100%) rename {building-blocks => src/BuildingBlocks}/Polly/GrpcRetry.cs (100%) rename {building-blocks => src/BuildingBlocks}/Polly/HttpClientCircuitBreaker.cs (100%) rename {building-blocks => src/BuildingBlocks}/Polly/HttpClientRetry.cs (100%) rename {building-blocks => src/BuildingBlocks}/Polly/PolicyOptions.cs (100%) rename {building-blocks => src/BuildingBlocks}/Polly/RetryOptions.cs (100%) rename {building-blocks => src/BuildingBlocks}/ProblemDetails/Extensions.cs (100%) rename {building-blocks => src/BuildingBlocks}/TestBase/TestBase.cs (100%) rename {building-blocks => src/BuildingBlocks}/TestBase/TestContainers.cs (100%) rename {building-blocks => src/BuildingBlocks}/Utils/NoSynchronizationContextScope.cs (100%) rename {building-blocks => src/BuildingBlocks}/Utils/ServiceLocator.cs (100%) rename {building-blocks => src/BuildingBlocks}/Utils/TypeProvider.cs (100%) rename {building-blocks => src/BuildingBlocks}/Validation/Extensions.cs (100%) rename {building-blocks => src/BuildingBlocks}/Validation/ValidationBehavior.cs (100%) rename {building-blocks => src/BuildingBlocks}/Validation/ValidationError.cs (100%) rename {building-blocks => src/BuildingBlocks}/Validation/ValidationResultModel.cs (100%) rename {building-blocks => src/BuildingBlocks}/Web/ApiVersioningExtensions.cs (100%) rename {building-blocks => src/BuildingBlocks}/Web/AppOptions.cs (100%) rename {building-blocks => src/BuildingBlocks}/Web/BaseController.cs (100%) rename {building-blocks => src/BuildingBlocks}/Web/ConfigurationExtensions.cs (100%) rename {building-blocks => src/BuildingBlocks}/Web/ConfigurationHelper.cs (100%) rename {building-blocks => src/BuildingBlocks}/Web/CorrelationExtensions.cs (100%) rename {building-blocks => src/BuildingBlocks}/Web/CurrentUserProvider.cs (100%) rename {building-blocks => src/BuildingBlocks}/Web/EndpointConfig.cs (100%) rename {building-blocks => src/BuildingBlocks}/Web/IMinimalEndpoint.cs (100%) rename {building-blocks => src/BuildingBlocks}/Web/MinimalApiExtensions.cs (100%) rename {building-blocks => src/BuildingBlocks}/Web/ServiceCollectionExtensions.cs (100%) rename {building-blocks => src/BuildingBlocks}/Web/ServiceProviderExtensions.cs (100%) rename {building-blocks => src/BuildingBlocks}/Web/SlugifyParameterTransformer.cs (100%) create mode 100644 src/Services/Booking/Dockerfile rename {1-monolith-architecture-style/src/BookingMonolith => src/Services/Booking}/dev.Dockerfile (50%) rename {3-microservices-architecture-style/src => src}/Services/Booking/src/Booking.Api/Booking.Api.csproj (100%) rename {3-microservices-architecture-style/src => src}/Services/Booking/src/Booking.Api/Program.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Booking/src/Booking.Api/Properties/launchSettings.json (98%) rename {3-microservices-architecture-style/src => src}/Services/Booking/src/Booking.Api/appsettings.Development.json (100%) rename {3-microservices-architecture-style/src => src}/Services/Booking/src/Booking.Api/appsettings.docker.json (100%) rename {3-microservices-architecture-style/src => src}/Services/Booking/src/Booking.Api/appsettings.json (100%) rename {3-microservices-architecture-style/src => src}/Services/Booking/src/Booking.Api/appsettings.test.json (100%) rename {1-monolith-architecture-style/src/BookingMonolith/src => src/Services/Booking/src/Booking}/AssemblyInfo.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Booking/src => src/Services/Booking/src/Booking}/Booking.csproj (86%) rename {2-modular-monolith-architecture-style/src/Modules/Booking/src => src/Services/Booking/src/Booking}/Booking/Dtos/CreateReservation.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Booking/src => src/Services/Booking/src/Booking}/Booking/Exceptions/BookingAlreadyExistException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Booking/src => src/Services/Booking/src/Booking}/Booking/Exceptions/FlightNotFoundException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Booking/src => src/Services/Booking/src/Booking}/Booking/Exceptions/InvalidAircraftIdException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Booking/src => src/Services/Booking/src/Booking}/Booking/Exceptions/InvalidArriveAirportIdException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Booking/src => src/Services/Booking/src/Booking}/Booking/Exceptions/InvalidDepartureAirportIdException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Booking/src => src/Services/Booking/src/Booking}/Booking/Exceptions/InvalidFlightDateException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Booking/src => src/Services/Booking/src/Booking}/Booking/Exceptions/InvalidFlightNumberException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Booking/src => src/Services/Booking/src/Booking}/Booking/Exceptions/InvalidPassengerNameException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Booking/src => src/Services/Booking/src/Booking}/Booking/Exceptions/InvalidPriceException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Booking/src => src/Services/Booking/src/Booking}/Booking/Exceptions/SeatNumberException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Booking/src => src/Services/Booking/src/Booking}/Booking/Features/BookingMappings.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Booking/src/Booking/Booking/Features/CreatingBook/V1/CreateBooking.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Booking/src => src/Services/Booking/src/Booking}/Booking/Models/Booking.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Booking/src => src/Services/Booking/src/Booking}/Booking/Models/BookingReadModel.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Booking/src => src/Services/Booking/src/Booking}/Booking/ValueObjects/PassengerInfo.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Booking/src => src/Services/Booking/src/Booking}/Booking/ValueObjects/Trip.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Booking/src => src/Services/Booking/src/Booking}/BookingEventMapper.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Booking/src => src/Services/Booking/src/Booking}/BookingProjection.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Booking/src => src/Services/Booking/src/Booking}/BookingRoot.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Booking/src => src/Services/Booking/src/Booking}/Configuration/GrpcOptions.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Booking/src => src/Services/Booking/src/Booking}/Data/BookingReadDbContext.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Booking/src/Booking/Extensions/Infrastructure/GrpcClientExtensions.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Booking/src/Booking/Extensions/Infrastructure/InfrastructureExtensions.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Booking/src/Booking/Extensions/Infrastructure/MediatRExtensions.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src/GrpcServer => src/Services/Booking/src/Booking/GrpcClient}/Protos/flight.proto (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src/GrpcServer => src/Services/Booking/src/Booking/GrpcClient}/Protos/passenger.proto (96%) rename {3-microservices-architecture-style/src => src}/Services/Booking/tests/IntegrationTest/Booking/Features/CreateBookingTests.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Booking/tests/IntegrationTest/BookingIntegrationTestBase.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Booking/tests/Integration.Test => src/Services/Booking/tests/IntegrationTest}/Fakes/FakeCreateBookingCommand.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Booking/tests/IntegrationTest/Fakes/FakeFlightResponse.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Booking/tests/IntegrationTest/Fakes/FakeGetAvailableSeatsResponse.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Booking/tests/IntegrationTest/Fakes/FakePassengerResponse.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Booking/tests/IntegrationTest/Fakes/FakeReserveSeatResponse.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Booking/tests/IntegrationTest/Integration.Test.csproj (100%) rename {2-modular-monolith-architecture-style/src/Modules/Booking/tests/Integration.Test => src/Services/Booking/tests/IntegrationTest}/xunit.runner.json (100%) rename {3-microservices-architecture-style/src => src}/Services/Booking/tests/PerformanceTest/.openapi-generator-ignore (100%) rename {3-microservices-architecture-style/src => src}/Services/Booking/tests/PerformanceTest/.openapi-generator/FILES (100%) create mode 100644 src/Services/Booking/tests/PerformanceTest/.openapi-generator/VERSION rename {3-microservices-architecture-style/src => src}/Services/Booking/tests/PerformanceTest/README.md (100%) rename {3-microservices-architecture-style/src => src}/Services/Booking/tests/PerformanceTest/script.js (98%) rename {3-microservices-architecture-style/src => src}/Services/Booking/tests/tests.sln (99%) create mode 100644 src/Services/Flight/Dockerfile create mode 100644 src/Services/Flight/dev.Dockerfile rename {3-microservices-architecture-style/src => src}/Services/Flight/src/Flight.Api/Flight.Api.csproj (100%) rename {3-microservices-architecture-style/src => src}/Services/Flight/src/Flight.Api/Program.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Flight/src/Flight.Api/Properties/launchSettings.json (98%) rename {3-microservices-architecture-style/src => src}/Services/Flight/src/Flight.Api/appsettings.Development.json (100%) rename {3-microservices-architecture-style/src => src}/Services/Flight/src/Flight.Api/appsettings.docker.json (100%) rename {3-microservices-architecture-style/src => src}/Services/Flight/src/Flight.Api/appsettings.json (100%) rename {3-microservices-architecture-style/src => src}/Services/Flight/src/Flight.Api/appsettings.test.json (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Aircrafts/Dtos/AircraftDto.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Aircrafts/Exceptions/AircraftAlreadyExistException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Aircrafts/Exceptions/InvalidAircraftIdException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Aircrafts/Exceptions/InvalidManufacturingYearException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Aircrafts/Exceptions/InvalidModelException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Aircrafts/Exceptions/InvalidNameException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Aircrafts/Features/AircraftMappings.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Aircrafts/Features/CreatingAircraft/V1/CreateAircraft.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Aircrafts/Features/CreatingAircraft/V1/CreateAircraftMongo.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Aircrafts/Models/Aircraft.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Aircrafts/Models/AircraftReadModel.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Aircrafts/ValueObjects/AircraftId.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Aircrafts/ValueObjects/ManufacturingYear.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Aircrafts/ValueObjects/Model.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Aircrafts/ValueObjects/Name.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Airports/Dtos/AirportDto.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Airports/Exceptions/AirportAlreadyExistException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Airports/Exceptions/InvalidAddressException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Airports/Exceptions/InvalidAirportIdException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Airports/Exceptions/InvalidCodeException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Airports/Exceptions/InvalidNameException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Airports/Features/AirportMappings.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Airports/Features/CreatingAirport/V1/CreateAirport.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Airports/Features/CreatingAirport/V1/CreateAirportMongo.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Airports/Models/Airport.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Airports/Models/AirportReadModel.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Airports/ValueObjects/Address.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Airports/ValueObjects/AirportId.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Airports/ValueObjects/Code.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Airports/ValueObjects/Name.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Booking/src => src/Services/Flight/src/Flight}/AssemblyInfo.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Data/Configurations/AircraftConfiguration.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Data/Configurations/AirportConfiguration.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Data/Configurations/FlightConfiguration.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Data/Configurations/SeatConfiguration.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Data/DesignTimeDbContextFactory.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Flight/src/Flight/Data/FlightDbContext.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Data/FlightReadDbContext.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Data/Migrations/20230611230948_initial.Designer.cs (99%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Data/Migrations/20230611230948_initial.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Data/Migrations/FlightDbContextModelSnapshot.cs (99%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Data/Seed/FlightDataSeeder.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Data/Seed/InitialData.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Data/readme.md (100%) rename {3-microservices-architecture-style/src => src}/Services/Flight/src/Flight/Extensions/Infrastructure/InfrastructureExtensions.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Flight/src/Flight/Extensions/Infrastructure/MediatRExtensions.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Flight/src/Flight/Flight.csproj (90%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/FlightEventMapper.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/FlightRoot.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Flights/Dtos/FlightDto.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Flights/Enums/FlightStatus.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Flights/Exceptions/FlightAlreadyExistException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Flights/Exceptions/FlightNotFountException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Flights/Exceptions/InvalidArriveDateException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Flights/Exceptions/InvalidDepartureDateException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Flights/Exceptions/InvalidDurationException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Flights/Exceptions/InvalidFlightDateException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Flights/Exceptions/InvalidFlightIdException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Flights/Exceptions/InvalidFlightNumberException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Flights/Exceptions/InvalidPriceException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Flights/Features/CreatingFlight/V1/CreateFlight.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Flights/Features/CreatingFlight/V1/CreateFlightMongo.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Flights/Features/DeletingFlight/V1/DeleteFlight.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Flights/Features/DeletingFlight/V1/DeleteFlightMongo.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Flights/Features/FlightMappings.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Flights/Features/GettingAvailableFlights/V1/GetAvailableFlights.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Flights/Features/GettingFlightById/V1/GetFlightById.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Flights/Features/UpdatingFlight/V1/UpdateFlight.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Flights/Features/UpdatingFlight/V1/UpdateFlightMongo.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Flights/Models/Flight.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Flights/Models/FlightReadModel.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Flights/ValueObjects/ArriveDate.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Flights/ValueObjects/DepartureDate.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Flights/ValueObjects/DurationMinutes.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Flights/ValueObjects/FlightDate.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Flights/ValueObjects/FlightId.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Flights/ValueObjects/FlightNumber.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Flights/ValueObjects/Price.cs (100%) rename {3-microservices-architecture-style/src/Services/Booking/src/Booking/GrpcClient => src/Services/Flight/src/Flight/GrpcServer}/Protos/flight.proto (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/GrpcServer/Services/FlightGrpcServices.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Seats/Dtos/SeatDto.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Seats/Enums/SeatClass.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Seats/Enums/SeatType.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Seats/Exceptions/AllSeatsFullException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Seats/Exceptions/InvalidSeatIdException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Seats/Exceptions/InvalidSeatNumberException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Seats/Exceptions/SeatAlreadyExistException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Seats/Exceptions/SeatNumberIncorrectException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Seats/Features/CreatingSeat/V1/CreateSeat.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Seats/Features/CreatingSeat/V1/CreateSeatMongo.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Seats/Features/GettingAvailableSeats/V1/GetAvailableSeats.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Seats/Features/ReservingSeat/V1/ReserveSeat.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Seats/Features/ReservingSeat/V1/ReserveSeatMongo.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Seats/Features/SeatMappings.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Seats/Models/Seat.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Seats/Models/SeatReadModel.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Seats/ValueObjects/SeatId.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Flight/src/Flight}/Seats/ValueObjects/SeatNumber.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Flight/tests/EndToEndTest/EndToEnd.Test.csproj (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/EndToEnd.Test => src/Services/Flight/tests/EndToEndTest}/Fakes/FakeCreateFlightCommand.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/EndToEnd.Test => src/Services/Flight/tests/EndToEndTest}/Fakes/FakeCreateFlightMongoCommand.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Flight/tests/EndToEndTest/Flight/Features/CreateFlightTests.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Flight/tests/EndToEndTest/Flight/Features/GetFlightByIdTests.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Flight/tests/EndToEndTest/FlightEndToEndTestBase.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/EndToEnd.Test => src/Services/Flight/tests/EndToEndTest}/FlightTestDataSeeder.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/EndToEnd.Test => src/Services/Flight/tests/EndToEndTest}/Routes/ApiRoutes.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/EndToEnd.Test => src/Services/Flight/tests/EndToEndTest}/xunit.runner.json (100%) rename {3-microservices-architecture-style/src => src}/Services/Flight/tests/IntegrationTest/Aircraft/Features/CreateAircraftTests.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Flight/tests/IntegrationTest/Airport/Features/CreateAirportTests.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Integration.Test => src/Services/Flight/tests/IntegrationTest}/Fakes/FakeCreateAircraftCommand.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Integration.Test => src/Services/Flight/tests/IntegrationTest}/Fakes/FakeCreateAirportCommand.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Integration.Test => src/Services/Flight/tests/IntegrationTest}/Fakes/FakeCreateFlightCommand.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Integration.Test => src/Services/Flight/tests/IntegrationTest}/Fakes/FakeCreateFlightMongoCommand.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Integration.Test => src/Services/Flight/tests/IntegrationTest}/Fakes/FakeCreateSeatCommand.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Integration.Test => src/Services/Flight/tests/IntegrationTest}/Fakes/FakeCreateSeatMongoCommand.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Integration.Test => src/Services/Flight/tests/IntegrationTest}/Fakes/FakeUpdateFlightCommand.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Flight/tests/IntegrationTest/Flight/Features/CreateFlightTests.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Flight/tests/IntegrationTest/Flight/Features/DeleteFlightTests.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Flight/tests/IntegrationTest/Flight/Features/GetAvailableFlightsTests.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Flight/tests/IntegrationTest/Flight/Features/GetFlightByIdTests.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Flight/tests/IntegrationTest/Flight/Features/UpdateFlightTests.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Flight/tests/IntegrationTest/FlightIntegrationTestBase.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Integration.Test => src/Services/Flight/tests/IntegrationTest}/FlightTestDataSeeder.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Flight/tests/IntegrationTest/Integration.Test.csproj (100%) rename {3-microservices-architecture-style/src => src}/Services/Flight/tests/IntegrationTest/Seat/Features/GetAvailableSeatsTests.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Flight/tests/IntegrationTest/Seat/Features/ReserveSeatTests.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Integration.Test => src/Services/Flight/tests/IntegrationTest}/xunit.runner.json (100%) rename {3-microservices-architecture-style/src => src}/Services/Flight/tests/PerformanceTest/.openapi-generator-ignore (100%) rename {3-microservices-architecture-style/src => src}/Services/Flight/tests/PerformanceTest/.openapi-generator/FILES (100%) create mode 100644 src/Services/Flight/tests/PerformanceTest/.openapi-generator/VERSION rename {3-microservices-architecture-style/src => src}/Services/Flight/tests/PerformanceTest/README.md (100%) rename {3-microservices-architecture-style/src => src}/Services/Flight/tests/PerformanceTest/script.js (99%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Unit.Test => src/Services/Flight/tests/UnitTest}/Aircraft/Features/CreateAircraftTests/CreateAircraftCommandHandlerTests.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Unit.Test => src/Services/Flight/tests/UnitTest}/Aircraft/Features/CreateAircraftTests/CreateAircraftCommandValidatorTests.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Unit.Test => src/Services/Flight/tests/UnitTest}/Airport/Features/CreateAirportTests/CreateAirportCommandHandlerTests.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Unit.Test => src/Services/Flight/tests/UnitTest}/Airport/Features/CreateAirportTests/CreateAirportCommandValidatorTests.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Unit.Test => src/Services/Flight/tests/UnitTest}/Common/DbContextFactory.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Unit.Test => src/Services/Flight/tests/UnitTest}/Common/MapperFactory.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Unit.Test => src/Services/Flight/tests/UnitTest}/Common/UnitTestFixture.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Unit.Test => src/Services/Flight/tests/UnitTest}/Fakes/FakeCreateAircraftCommand.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Unit.Test => src/Services/Flight/tests/UnitTest}/Fakes/FakeCreateAirportCommand.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Unit.Test => src/Services/Flight/tests/UnitTest}/Fakes/FakeCreateFlightCommand.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Unit.Test => src/Services/Flight/tests/UnitTest}/Fakes/FakeCreateSeatCommand.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Unit.Test => src/Services/Flight/tests/UnitTest}/Fakes/FakeFlightCreate.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Unit.Test => src/Services/Flight/tests/UnitTest}/Fakes/FakeFlightUpdate.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Unit.Test => src/Services/Flight/tests/UnitTest}/Fakes/FakeValidateCreateAircraftCommand.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Unit.Test => src/Services/Flight/tests/UnitTest}/Fakes/FakeValidateCreateAirportCommand.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Unit.Test => src/Services/Flight/tests/UnitTest}/Fakes/FakeValidateCreateFlightCommand.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Unit.Test => src/Services/Flight/tests/UnitTest}/Fakes/FakeValidateCreateSeatCommand.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Unit.Test => src/Services/Flight/tests/UnitTest}/Flight/Features/Domains/CreateFlightTests.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Unit.Test => src/Services/Flight/tests/UnitTest}/Flight/Features/Domains/UpdateFlightTests.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Unit.Test => src/Services/Flight/tests/UnitTest}/Flight/Features/Handlers/CreateFlight/CreateFlightCommandHandlerTests.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Unit.Test => src/Services/Flight/tests/UnitTest}/Flight/Features/Handlers/CreateFlight/CreateFlightCommandValidatorTests.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Unit.Test => src/Services/Flight/tests/UnitTest}/Flight/FlightMappingTests.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Unit.Test => src/Services/Flight/tests/UnitTest}/Seat/Features/CreateSeatCommandHandlerTests.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Unit.Test => src/Services/Flight/tests/UnitTest}/Seat/Features/CreateSeatCommandValidatorTests.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Unit.Test => src/Services/Flight/tests/UnitTest}/Seat/SeatMappingTests.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Flight/tests/UnitTest/Unit.Test.csproj (100%) rename {2-modular-monolith-architecture-style/src/Modules/Flight/tests/Unit.Test => src/Services/Flight/tests/UnitTest}/xunit.runner.json (100%) rename {3-microservices-architecture-style/src => src}/Services/Flight/tests/tests.sln (99%) create mode 100644 src/Services/Identity/Dockerfile create mode 100644 src/Services/Identity/dev.Dockerfile rename {3-microservices-architecture-style/src => src}/Services/Identity/src/Identity.Api/Identity.Api.csproj (100%) rename {3-microservices-architecture-style/src => src}/Services/Identity/src/Identity.Api/Program.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Identity/src/Identity.Api/Properties/launchSettings.json (98%) rename {3-microservices-architecture-style/src => src}/Services/Identity/src/Identity.Api/appsettings.Development.json (100%) rename {3-microservices-architecture-style/src => src}/Services/Identity/src/Identity.Api/appsettings.docker.json (100%) rename {3-microservices-architecture-style/src => src}/Services/Identity/src/Identity.Api/appsettings.json (100%) rename {3-microservices-architecture-style/src => src}/Services/Identity/src/Identity.Api/appsettings.test.json (100%) create mode 100644 src/Services/Identity/src/Identity.Api/keys/is-signing-key-0AC3347A09AA5E44E947F3E30ED54871.json create mode 100644 src/Services/Identity/src/Identity.Api/keys/is-signing-key-A57781A0405849BDE786A79636460E49.json create mode 100644 src/Services/Identity/src/Identity.Api/keys/is-signing-key-B3C31EEE2718D3C5004C6E85AD74F26C.json rename {2-modular-monolith-architecture-style/src/Modules/Flight/src => src/Services/Identity/src/Identity}/AssemblyInfo.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Identity/src => src/Services/Identity/src/Identity}/Configurations/AuthOptions.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Identity/src/Identity/Configurations/Config.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Identity/src => src/Services/Identity/src/Identity}/Configurations/UserValidator.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Identity/src => src/Services/Identity/src/Identity}/Data/Configurations/RoleClaimConfiguration.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Identity/src => src/Services/Identity/src/Identity}/Data/Configurations/RoleConfiguration.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Identity/src => src/Services/Identity/src/Identity}/Data/Configurations/UserClaimConfiguration.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Identity/src => src/Services/Identity/src/Identity}/Data/Configurations/UserConfiguration.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Identity/src => src/Services/Identity/src/Identity}/Data/Configurations/UserLoginConfiguration.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Identity/src => src/Services/Identity/src/Identity}/Data/Configurations/UserRoleConfiguration.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Identity/src => src/Services/Identity/src/Identity}/Data/Configurations/UserTokenConfiguration.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Identity/src => src/Services/Identity/src/Identity}/Data/DesignTimeDbContextFactory.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Identity/src => src/Services/Identity/src/Identity}/Data/IdentityContext.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Identity/src => src/Services/Identity/src/Identity}/Data/Migrations/20230331193410_initial.Designer.cs (99%) rename {2-modular-monolith-architecture-style/src/Modules/Identity/src => src/Services/Identity/src/Identity}/Data/Migrations/20230331193410_initial.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Identity/src => src/Services/Identity/src/Identity}/Data/Migrations/IdentityContextModelSnapshot.cs (99%) rename {3-microservices-architecture-style/src => src}/Services/Identity/src/Identity/Data/Seed/IdentityDataSeeder.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Identity/src => src/Services/Identity/src/Identity}/Data/Seed/InitialData.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Identity/src => src/Services/Identity/src/Identity}/Data/readme.md (100%) rename {2-modular-monolith-architecture-style/src/Modules/Identity/src => src/Services/Identity/src/Identity}/Extensions/Infrastructure/IdentityServerExtensions.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Identity/src/Identity/Extensions/Infrastructure/InfrastructureExtensions.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Identity/src/Identity/Extensions/Infrastructure/MediatRExtensions.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Identity/src => src/Services/Identity/src/Identity}/Identity.csproj (83%) rename {3-microservices-architecture-style/src => src}/Services/Identity/src/Identity/Identity/Constants/Constants.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Identity/src => src/Services/Identity/src/Identity}/Identity/Exceptions/RegisterIdentityUserException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Identity/src => src/Services/Identity/src/Identity}/Identity/Features/IdentityMappings.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Identity/src/Identity/Identity/Features/RegisteringNewUser/V1/RegisterNewUser.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Identity/src => src/Services/Identity/src/Identity}/Identity/Models/Role.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Identity/src => src/Services/Identity/src/Identity}/Identity/Models/RoleClaim.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Identity/src => src/Services/Identity/src/Identity}/Identity/Models/User.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Identity/src => src/Services/Identity/src/Identity}/Identity/Models/UserClaim.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Identity/src => src/Services/Identity/src/Identity}/Identity/Models/UserLogin.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Identity/src => src/Services/Identity/src/Identity}/Identity/Models/UserRole.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Identity/src => src/Services/Identity/src/Identity}/Identity/Models/UserToken.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Identity/src => src/Services/Identity/src/Identity}/IdentityEventMapper.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Identity/src => src/Services/Identity/src/Identity}/IdentityRoot.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Identity/tests/Integration.Test => src/Services/Identity/tests/IntegrationTest}/Fakes/FakeRegisterNewUserCommand.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Identity/tests/IntegrationTest/Identity/Features/RegisterNewUserTests.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Identity/tests/IntegrationTest/IdentityIntegrationTestBase.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Identity/tests/Integration.Test => src/Services/Identity/tests/IntegrationTest}/IdentityTestDataSeeder.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Identity/tests/IntegrationTest/Integration.Test.csproj (100%) rename {2-modular-monolith-architecture-style/src/Modules/Identity/tests/Integration.Test => src/Services/Identity/tests/IntegrationTest}/xunit.runner.json (100%) rename {3-microservices-architecture-style/src => src}/Services/Identity/tests/PerformanceTest/.openapi-generator-ignore (100%) rename {3-microservices-architecture-style/src => src}/Services/Identity/tests/PerformanceTest/.openapi-generator/FILES (100%) create mode 100644 src/Services/Identity/tests/PerformanceTest/.openapi-generator/VERSION rename {3-microservices-architecture-style/src => src}/Services/Identity/tests/PerformanceTest/README.md (100%) rename {3-microservices-architecture-style/src => src}/Services/Identity/tests/PerformanceTest/script.js (99%) rename {3-microservices-architecture-style/src => src}/Services/Identity/tests/tests.sln (99%) create mode 100644 src/Services/Passenger/Dockerfile create mode 100644 src/Services/Passenger/dev.Dockerfile rename {3-microservices-architecture-style/src => src}/Services/Passenger/src/Passenger.Api/Passenger.Api.csproj (100%) rename {3-microservices-architecture-style/src => src}/Services/Passenger/src/Passenger.Api/Program.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Passenger/src/Passenger.Api/Properties/launchSettings.json (98%) rename {3-microservices-architecture-style/src => src}/Services/Passenger/src/Passenger.Api/appsettings.Development.json (100%) rename {3-microservices-architecture-style/src => src}/Services/Passenger/src/Passenger.Api/appsettings.docker.json (100%) rename {3-microservices-architecture-style/src => src}/Services/Passenger/src/Passenger.Api/appsettings.json (100%) rename {3-microservices-architecture-style/src => src}/Services/Passenger/src/Passenger.Api/appsettings.test.json (100%) rename {2-modular-monolith-architecture-style/src/Modules/Identity/src => src/Services/Passenger/src/Passenger}/AssemblyInfo.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/Data/Configurations/PassengerConfiguration.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/Data/DesignTimeDbContextFactory.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/Data/Migrations/20230611213031_initial.Designer.cs (99%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/Data/Migrations/20230611213031_initial.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/Data/Migrations/PassengerDbContextModelSnapshot.cs (99%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/Data/PassengerDbContext.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/Data/PassengerReadDbContext.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/Data/readme.md (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/Exceptions/InvalidAgeException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/Exceptions/InvalidNameException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/Exceptions/InvalidPassengerIdException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/Exceptions/InvalidPassportNumberException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/Exceptions/PassengerAlreadyExist.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/Exceptions/PassengerNotFoundException.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Passenger/src/Passenger/Extensions/Infrastructure/InfrastructureExtensions.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Passenger/src/Passenger/Extensions/Infrastructure/MediatRExtensions.cs (100%) rename {3-microservices-architecture-style/src/Services/Booking/src/Booking/GrpcClient => src/Services/Passenger/src/Passenger/GrpcServer}/Protos/passenger.proto (96%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/GrpcServer/Services/PassengerGrpcServices.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/Identity/Consumers/RegisteringNewUser/V1/PassengerCreatedDomainEvent.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/Identity/Consumers/RegisteringNewUser/V1/RegisterNewUser.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/Passenger.csproj (87%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/PassengerEventMapper.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/PassengerRoot.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/Passengers/Dtos/PassengerDto.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/Passengers/Enums/PassengerType.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/Passengers/Exceptions/InvalidAgeException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/Passengers/Exceptions/InvalidNameException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/Passengers/Exceptions/InvalidPassportNumberException.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/Passengers/Exceptions/PassengerAlreadyExist.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/Passengers/Exceptions/PassengerNotFoundException.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Passenger/src/Passenger/Passengers/Features/CompletingRegisterPassenger/V1/CompleteRegisterPassenger.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/Passengers/Features/CompletingRegisterPassenger/V1/CompleteRegisterPassengerMongo.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/Passengers/Features/GettingPassengerById/V1/GetPassengerById.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/Passengers/Features/PassengerMappings.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/Passengers/Models/Passenger.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/Passengers/Models/PassengerReadModel.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/Passengers/ValueObjects/Age.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/Passengers/ValueObjects/Name.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/Passengers/ValueObjects/PassengerId.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/src => src/Services/Passenger/src/Passenger}/Passengers/ValueObjects/PassportNumber.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/tests/Integration.Test => src/Services/Passenger/tests/IntegrationTest}/Fakes/FakeCompleteRegisterPassengerCommand.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/tests/Integration.Test => src/Services/Passenger/tests/IntegrationTest}/Fakes/FakeCompleteRegisterPassengerMongoCommand.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/tests/Integration.Test => src/Services/Passenger/tests/IntegrationTest}/Fakes/FakeUserCreated.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Passenger/tests/IntegrationTest/Integration.Test.csproj (100%) rename {3-microservices-architecture-style/src => src}/Services/Passenger/tests/IntegrationTest/Passenger/Features/CompleteRegisterPassengerTests.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Passenger/tests/IntegrationTest/Passenger/Features/GetPassengerByIdTests.cs (100%) rename {3-microservices-architecture-style/src => src}/Services/Passenger/tests/IntegrationTest/PassengerIntegrationTestBase.cs (100%) rename {2-modular-monolith-architecture-style/src/Modules/Passenger/tests/Integration.Test => src/Services/Passenger/tests/IntegrationTest}/xunit.runner.json (100%) rename {3-microservices-architecture-style/src => src}/Services/Passenger/tests/PerformanceTest/.openapi-generator-ignore (100%) rename {3-microservices-architecture-style/src => src}/Services/Passenger/tests/PerformanceTest/.openapi-generator/FILES (100%) create mode 100644 src/Services/Passenger/tests/PerformanceTest/.openapi-generator/VERSION rename {3-microservices-architecture-style/src => src}/Services/Passenger/tests/PerformanceTest/README.md (100%) rename {3-microservices-architecture-style/src => src}/Services/Passenger/tests/PerformanceTest/script.js (99%) rename {3-microservices-architecture-style/src => src}/Services/Passenger/tests/tests.sln (99%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c658578..9e2366c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,8 +25,8 @@ jobs: if: success() id: build-test-flight-step with: - project-path: '3-microservices-architecture-style/src/Services/Flight/src/Flight.Api' - tests-path: '3-microservices-architecture-style/src/Services/Flight/tests/' + project-path: 'src/Services/Flight/src/Flight.Api' + tests-path: 'src/Services/Flight/tests/' # wildcard search for files with the ".cobertura.xml" extension in all subdirectories of the current directory # https://www.jamescroft.co.uk/combining-multiple-code-coverage-results-in-azure-devops/ # https://stackoverflow.com/questions/53255065/dotnet-unit-test-with-coverlet-how-to-get-coverage-for-entire-solution-and-not @@ -40,8 +40,8 @@ jobs: if: success() id: build-test-identity-step with: - project-path: '3-microservices-architecture-style/src/Services/Identity/src/Identity.Api' - tests-path: '3-microservices-architecture-style/src/Services/Identity/tests/' + project-path: 'src/Services/Identity/src/Identity.Api' + tests-path: 'src/Services/Identity/tests/' # wildcard search for files with the ".cobertura.xml" extension in all subdirectories of the current directory # https://www.jamescroft.co.uk/combining-multiple-code-coverage-results-in-azure-devops/ # https://stackoverflow.com/questions/53255065/dotnet-unit-test-with-coverlet-how-to-get-coverage-for-entire-solution-and-not @@ -55,8 +55,8 @@ jobs: if: success() id: build-test-passenger-step with: - project-path: '3-microservices-architecture-style/src/Services/Passenger/src/Passenger.Api' - tests-path: '3-microservices-architecture-style/src/Services/Passenger/tests/' + project-path: 'src/Services/Passenger/src/Passenger.Api' + tests-path: 'src/Services/Passenger/tests/' # wildcard search for files with the ".cobertura.xml" extension in all subdirectories of the current directory # https://www.jamescroft.co.uk/combining-multiple-code-coverage-results-in-azure-devops/ # https://stackoverflow.com/questions/53255065/dotnet-unit-test-with-coverlet-how-to-get-coverage-for-entire-solution-and-not @@ -70,8 +70,8 @@ jobs: if: success() id: build-test-booking-step with: - project-path: '3-microservices-architecture-style/src/Services/Booking/src/Booking.Api' - tests-path: '3-microservices-architecture-style/src/Services/Booking/tests/' + project-path: 'src/Services/Booking/src/Booking.Api' + tests-path: 'src/Services/Booking/tests/' # wildcard search for files with the ".cobertura.xml" extension in all subdirectories of the current directory # https://www.jamescroft.co.uk/combining-multiple-code-coverage-results-in-azure-devops/ # https://stackoverflow.com/questions/53255065/dotnet-unit-test-with-coverlet-how-to-get-coverage-for-entire-solution-and-not @@ -98,7 +98,7 @@ jobs: tag-name: ${{ steps.last_release.outputs.tag_name }} registry-username: ${{ secrets.DOCKERHUB_USERNAME }} registry-password: ${{ secrets.DOCKERHUB_PASSWORD }} - dockerfile-path: '3-microservices-architecture-style/src/Services/Identity/Dockerfile' + dockerfile-path: 'src/Services/Identity/Dockerfile' image-name: 'booking-microservices-identity' - name: Build and Publish Flight Microservice to Docker @@ -108,7 +108,7 @@ jobs: tag-name: ${{ steps.last_release.outputs.tag_name }} registry-username: ${{ secrets.DOCKERHUB_USERNAME }} registry-password: ${{ secrets.DOCKERHUB_PASSWORD }} - dockerfile-path: '3-microservices-architecture-style/src/Services/Flight/Dockerfile' + dockerfile-path: 'src/Services/Flight/Dockerfile' image-name: 'booking-microservices-flight' - name: Build and Publish Passenger Microservice to Docker @@ -118,7 +118,7 @@ jobs: tag-name: ${{ steps.last_release.outputs.tag_name }} registry-username: ${{ secrets.DOCKERHUB_USERNAME }} registry-password: ${{ secrets.DOCKERHUB_PASSWORD }} - dockerfile-path: '3-microservices-architecture-style/src/Services/Passenger/Dockerfile' + dockerfile-path: 'src/Services/Passenger/Dockerfile' image-name: 'booking-microservices-passenger' - name: Build and Publish Booking Microservice to Docker @@ -128,5 +128,5 @@ jobs: tag-name: ${{ steps.last_release.outputs.tag_name }} registry-username: ${{ secrets.DOCKERHUB_USERNAME }} registry-password: ${{ secrets.DOCKERHUB_PASSWORD }} - dockerfile-path: '3-microservices-architecture-style/src/Services/Booking/Dockerfile' + dockerfile-path: 'src/Services/Booking/Dockerfile' image-name: 'booking-microservices-booking' diff --git a/1-monolith-architecture-style/README.md b/1-monolith-architecture-style/README.md deleted file mode 100644 index b09544e..0000000 --- a/1-monolith-architecture-style/README.md +++ /dev/null @@ -1,110 +0,0 @@ -# 🪁 Monolith Architecture Style - -> In **Monolith Architecture**, the entire application is built as a single, tightly coupled unit. All components (e.g., Api, business logic, and data access) are part of the same codebase and deployed together. - -# Table of Contents - -- [Key Features](#key-features) -- [When to Use](#when-to-use) -- [Challenges](#challenges) -- [Monolith Architecture Design](#monolith-architecture-design) -- [Development Setup](#development-setup) - - [Dotnet Tools Packages](#dotnet-tools-packages) - - [Husky](#husky) - - [Upgrade Nuget Packages](#upgrade-nuget-packages) -- [How to Run](#how-to-run) - - [Docker Compose](#docker-compose) - - [Build](#build) - - [Run](#run) - - [Test](#test) -- [Documentation Apis](#documentation-apis) - - -## Key Features -1. **Single Codebase**: All components (UI, business logic, data access) are part of one project. -2. **Tight Coupling**: Components are highly dependent on each other, making changes riskier. -3. **Simple Deployment**: The entire application is deployed as a single unit. -4. **Centralized Database**: Typically uses a single database for all data storage and access. - - -## When to Use -1. **Small to Medium Projects**: Ideal for applications with limited complexity and scope. -2. **Rapid Development**: Suitable for projects requiring quick development and deployment. -3. **Small Teams**: Works well for small teams with limited resources. -4. **Low Scalability Needs**: Best for applications with predictable and low traffic. - - -## Challenges -- Harder to maintain as the codebase grows. -- Limited scalability (scaling requires scaling the entire application). -- Difficult to adopt new technologies incrementally. - -## Monolith Architecture Design - -![](./assets/booking-monolith.png) - - -## Development Setup - -### Dotnet Tools Packages -For installing our requirement packages with .NET cli tools, we need to install `dotnet tool manifest`. -```bash -dotnet new tool-manifest -``` -And after that we can restore our dotnet tools packages with .NET cli tools from `.config` folder and `dotnet-tools.json` file. -``` -dotnet tool restore -``` - -### Husky -Here we use `husky` to handel some pre commit rules and we used `conventional commits` rules and `formatting` as pre commit rules, here in [package.json](.././package.json). of course, we can add more rules for pre commit in future. (find more about husky in the [documentation](https://typicode.github.io/husky/get-started.html)) -We need to install `husky` package for `manage` `pre commits hooks` and also I add two packages `@commitlint/cli` and `@commitlint/config-conventional` for handling conventional commits rules in [package.json](.././package.json). -Run the command bellow in the root of project to install all npm dependencies related to husky: - -```bash -npm install -``` - -> Note: In the root of project we have `.husky` folder and it has `commit-msg` file for handling conventional commits rules with provide user friendly message and `pre-commit` file that we can run our `scripts` as a `pre-commit` hooks. that here we call `format` script from [package.json](./package.json) for formatting purpose. - -### Upgrade Nuget Packages -For upgrading our nuget packages to last version, we use the great package [dotnet-outdated](https://github.com/dotnet-outdated/dotnet-outdated). -Run the command below in the root of project to upgrade all of packages to last version: -```bash -dotnet outdated -u -``` - -## How to Run - -> ### Docker Compose - -To run this app in `Docker`, use the [docker-compose.yaml](./deployments/docker-compose/docker-compose.yaml) and execute the below command at the `root` of the application: - -```bash -docker-compose -f ./deployments/docker-compose/docker-compose.yaml up -d -``` - -> ### Build -To `build` monolith app, run this command in the `root` of the project: -```bash -dotnet build -``` - -> ### Run -To `run` monolith app, run this command in the root of the `Api` folder where the `csproj` file is located: -```bash -dotnet run -``` - -> ### Test - -To `test` monolith app, run this command in the `root` of the project: -```bash -dotnet test -``` - -> ### Documentation Apis - -Each microservice provides `API documentation` and navigate to `/swagger` for `Swagger OpenAPI` or `/scalar/v1` for `Scalar OpenAPI` to visit list of endpoints. - -As part of API testing, I created the [booking.rest](./booking.rest) file which can be run with the [REST Client](https://github.com/Huachao/vscode-restclient) `VSCode plugin`. diff --git a/1-monolith-architecture-style/assets/booking-monolith.drawio b/1-monolith-architecture-style/assets/booking-monolith.drawio deleted file mode 100644 index d4033ca..0000000 --- a/1-monolith-architecture-style/assets/booking-monolith.drawio +++ /dev/null @@ -1,348 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/1-monolith-architecture-style/assets/booking-monolith.png b/1-monolith-architecture-style/assets/booking-monolith.png deleted file mode 100644 index f090df570b61fd4f75def003f94619290fe81d69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 400604 zcmeFa+j3h;@~<~`gb%SJ_6swo@#|MuVh zar+8oKr*h+` zLXCI$PkATnKR+&x`F7Cd4J7zEdwhJF&b_{QyFdTDc(H$avwXRG-FZ>EX+C^g{?7B; zy^qJ2XRZ0^aK?*IZ__Kvl^4+f&MeZI($-crwQ}?^|4{Z_PrMy3^S)#cjy{b~hga$0 z?8fW)e0Dv)ynk{qzql93ayTBHWuJag%`TiD=Qn33uFj6(r1X58S|64~$ef%X=W|}SHfrma^PA3Z zcZM^mozpS<4vh2rpIuSo<4P3%nb*CXRXXQCcRC-Ze{W1afBaB*_Us=&!^XkM$Folv z$qXANALpMgPKS<=Qg(ATz8=24JRW%a4GhM)v+MI2zl!|%VSaJFdwf2g$y+an zv(Llp@!&YSka1EG?vERH=CipnaXS2P{AmVtw`a#E!`b%nU^gbU*6u#=KJqIA3T3m z+4{Luel*a-Q=}{#_xZ=`v-xO#aXf3>o!v%UE*YWOOzeO@;T&q6<6 zT^?UB0C(2m*?)Y}EN%~yDi_gw9Gx8h7j&A~>cQc^hENnV5)tb~u8&oAb@S_u%w z#r3Oz9bPS5qJuq;F2DXcQwm-Pd0V@rIr{k=yz^7p%NO&^KK)e6o5^1zoBLC#DnqRU zq$!*Wy2gG%%~T_Lc=EnY@M2~aytsx|yb}E2`P^uE(y>ey zButd2is1O{Tn1)5yE8u@54fN=aDfuzkJj6`(Z92yNr=PSr!=)IAn%VmZjylI4bo*Ve{;-+rIB_F>=s*&tm*DL#yKX-EIU!o&Lvw{;DJKkVmQ?`2SNp@+|&$k4G3f zm8%{6V|k=hDW}imOj0ZqGl;XsCB=%PZfowbiBj&#ABRnfIf}i*52bH&ItHIUeqOnx z_m#%Ccp!Ncz;S(~BueEx~wEOEAuzJ@atN2y>m}EE5(90_^OpGKm2HN0>9y-|3Zi1XKeE8 z$@sW9IQ=}WUVJ+E`OP>FQhrVQ=aBA> z)JCnH+HGqx8nwF3N^?>Xr+cH(QN1wkcKhYmlYU`;r&ij3TPg2% zPbaUty-%%4r_`)_>|M9tRu=7gpZByrwU@n0v(CG_(@(8>jlbib(c^pacQmT6X=8h* zc60B2Z)?TZlV?^G78?(D2Ru9VvK=_o%!3%=jDrjHI4y;e@w zJJq{mqGz-2^~R{R*IK-u^s2PmW2HTgqrXe9C!?GFcxQUo;k3YYzPqT=*M7NmesjHV zJD0stIv$+S?pxYVKN@^HzC{~r(zViFzPoBIo1a=;+v9f|h5bYO?7bb%4;<^Y`+KzS zrUFft?VUn89=2}z_ANA~-?aa2rPO*`kZv69ckk1F{j{~;tofA3kg>Ufb^Ffd0j?*k2UrZwtOz9ie?ke&asc z$M@l7`jcO;rTfRL-`-zHim@;{;wF7ou;6=LO$8Ztfjjp6uOhHOK99Xk0=5#;=!OlIsC{ z(yYQ$i}s?jM0Q8Wk1`AWpu?np(>`on2Ol5@*>Uxob}gZ+*F+QFCmb>tVm^ti^C)z+jrYVBUO+mqU-c9(l51CFEO$xZ>; zME=Iv@jUupq>Z+LW7F|KXZG%XBPaXyj`DQfn!uaTF&#r@Z(7T~ZHQymhKy$YO1pHU z-de(Mp*vg4)}kL{&_cI579Mk1@4?$6_1yDYFCm?hyl%%Dby; z32?1>8xe_mi1D+C{yN^xPOZ&StM)$jf4^P>-%Q0fx29Ux z)n0VKbOrS}_62(|7MG!y(ZBokQQ#`^91QQI{S1-=e+KB{+d&Z-IT& zZt#8Vq_%x5W^P<_txS8M4|wY>?e8|V!3*EX^YqjHwQjhF=fR*|=~S!OcIZ&VUfLG= z5IC^Vs$*XR%XRoxzaqY|joPJly(z817)@x`C}LL&oD=6(0yl$mu*Zx=pKp!=KV#Fu z3N>i~UTBJWv6{x1b+P01QP!>zm=?b#XwrfH(zNCGppCwX_;v~(X-}Jc$Mbz~ z@@RD*b`vb1PhC-p4R+V@E`Uk2!_ah)a0m97^Cd9>^r?ac zXip6q_Oa{mZG8kkz_W?>Y=>j!7$y6^gr^w?_`*Kl1kPB%4@iQi#=Cq4QD2A?QPey>5>N1j(6kmJ66fmeE& z&(YF9x}^`dK{N2#KKQITMk{XL_f7|JZAb4=R2E+X+4H7Wi5}ri3^)gs!mAlo^$^e` zm7p>l6-dpIE@tgOeEtWI9V6_Sy?ug;_rf)cc z^bEx1@BOY?$ewjTzoK=%t%NOma#0C%4AtdwulY>VXOibKQ8Gc!e6LmSAk}g%TppYN z0+q8S2WNOmpX|R96lf7IR&G;L7!^?K8EvJF^+9L>`l&QmLYm-aj-qt9uf{i!hB}&3 z?@wus_XOHSoAF*HPI@gW6{KGJ+$8S?DSsQDq}-@vdtE79A~7KyNI^Uo$IvcB4n)7H zy%i-ZB)J<}61w0eEY!SmLyRfh>amB`jCbGQp(Vr%$Ls0shla#5h|q)neI)@}Ac+%^ zaF0IX5q9Alq8^NM72In-s!CCCes?sYUFG&t?&TTLeMCH_a4}JhZWHa%geO4WA?-+~ zQ4XUhp;ZPRX}?~ooZBe&m%axn4eizgjjO4(3RtzS9;-;c1OAr>M`*>MArS$js>}QF zkdOrUteG^Ge1(?p zIqLZvozW8;a9tVnKBEBgl~J7m*BfZE{tdK3CR*?+?NtsYSd0a_U;@u(GC)6XLz9is zsK^A`8Ts#Mr5TSwIjkxgT)E_$o*^1jE72h0q{R$5`Gddp#<5yq9f?NJzitf~(!wJzShr+#Ju;rb+gdcOk^GA8He!R$O?nW13(EuV z2J!%bM8vEGO_N39NMEN~D4q!`LOb~#NNu`IeAGeyu%O+{`gBDDMgY(Q$|JHHV{2d3 zoA6uWC(-7V>+pv95B+SEQ9e7tTL+EuEyq{dqF>a#^dsr`Mx`xct&38XdB(;2<;SJy zL>n><+mX^BF} zoj&$68EY!{^1Fx(SsFkm$GVp31*6zT%Yp~dOCek6S0Y?`8r>%H#rKgLcvu+LL0}ARV&Zvi4c|e>L?kqjZP*j_J=c(vx;g{>5>a3E zS#5C=c6AiC99yAHv5o3=+C_AIFA%#CM)YK0EymD@n0BC_^bNcZ%3lV0ABkGAqq<5okf&YS!M(Vl+bmp4gRCs*c6W$@ZCG!poM7G2BH643# z0%OKA&M2stkVjCr`Uslw4&)*84rw#}v#nqB4r7*t2&^_5{js>`9oi@8CqFP&3E|U* zfwM0hJLrUn_S1HCNO)}(&qHteFYbi5iKNme-qR6Fa6Ng-UT-hKD~uy{Mc%=l$@3j# z10pt z@aFMuvGw6er}5JEivh)I=wNwT@0D+aCn(+#$Bw}Afn~~pI}&b$KlFo$$OoTHD+#lx zmxx51JM+^qy1}ub94lk+g`TONIPw`bN=(?(E`(f!4XtAnp#%C6`eW~d$HX*@U(zew zn{-v^tndo?{m?6nF@EF~%0tizJ(D63A)7%5aa!2XDdXJ%$BLCY&MMFcbzbPy(0QKc zdD_>hBJXATByTVK*l;}R@Ig37JHb=TaN_?2zCurmuS%`u*%jmIY#jI0D*a{PKicK& zns}2ai~JI@s(wPIveQ$WxQUbqzUKi^~&K&780&E84`(g4vP*F2}_T!9UgC-mlFaJ z&_eupkfdCPgfllGH!S<~D3cJZZ%D9~KJ#D`g5$cLjQ4S5-Xg`*Lfc9u+Nd_iGO6|O zyRg;~E0FrjmfD+RQ#3^Tn{t)y5?yeA&zOKmu0!>@C`j&T8pF_Hs-@8eycfylKF=#v zcsMORS)@h}$Zs^T^no;aZVH{W*vS$l)M5N>nt5Th@ThqHrgi8uy=sz_I6Chp9gLrG z4JisF+H+nl?&X-@1JVx7Ai7q1GgJ}dK|gAED#4hR%pIaF5UQk=mH&1O2lSP08*qx)4uFTj5f_pDS22+B@LuR>fJB(ywy_V69lg}wU)#K z{r-q|>1i7W9vR~m2{7Ll{0d$3WALs0BL0Ph8sF-^Q_G|6wRp9PR-fx2&6XO1xF6pK zEjce8+K~3GEC~I;WAHxShXo1#lRhi$>e$Oeq5Yu|h$Nx9=&$2UL?C%A;XT3Q%3B(B6N~pO}?sUnmpufSd z&WR&q>J@n%p5YlHBxpepGQ5)0Ek6eR=u_?$G;=gY4hgy?(C&z_)>7k9YK1)?(H3R1 zm)cR+OE(%u)JkL}x4=Z~*3Dm5N z=soDUVzEPKfJSI9Xf{QE(Atby5B<~8qoeKp1xLq1esByx3h*Uz0AJV#XwMwF=-06Y z?TZ4@bMR0^1-Y&cR8QbxaGyFV<2hu17O`8b5pV^OAruaK$N2l z?|}+uXM8X5b2etQ0~r@_MBG2djeBqKY>^>&k-tGx@Jv%ncH3T(ZxGiR574*I@w|VR zMd?HyZn=)dLq~{Gj69%M;I|l4WnP^V`j_{C1o%!M3-!7PMLHTq5Ha9ANn`Dp^V^QO zs8lOE2=4$-$#?V44z|lE3-SR%gb(Sv^vUOL7?X%X8j0fF&edaG10CZ{^G?2ty-@a- z_A9(x-b0@PVTb);Tn0C-@+IRmkdC(b7Td-5d(H`AU*$(+OI?_(H#B4HgLdJS8l?qU zh8@+?d##FX@d!@^{}D|xB4qR_JU(<8eQ{m`WCDLD6kojRARss`!SuCG0zTN{?S}23wx^Eo=;Z5{aYx)eGvagqSnE ztzM+f&MS$XmP`Q|CzkU#&0R5&9$Yk(_ z_Rt7$%v{LA#ZFD^BQj~! z4{wR1K~{M$vfAxL~y6*e%*zPbl| z5D`sq(KtLt?r+5N&@SFDeUTyQiVRJW(G>A?yv4-mA9)MR9FeaacZdrZlkgPrG$LvO z-N7c#cLtwibAf>mwXIXJBIDs0=(PlPq~ATgSmi()FVCRs#26{6t*vw1!#?Tdfid7m z#>=@w>0B#e7nQMyG;w51kdv4Pk6bkShmJ@yMeu!Dd%zq!&m)h>aLAH+NIAyia!ly2 zvXbHcfxMIJ7U;xWX+&Uof7qLzvvBm0nS+$mR!y^Lj5qW2=v4YuGe3@J(Z$+PBSlGW ziQLFD>RKYp;ZdKOw+T)n0+1ae(u8dy+DH4aDS@qt$Vd}BFX&jIk6<-*CAu!Ph3_$A zXLKRj1x|E+HtFSR$Xw`=cSgp=LfH10qpr5Zf?}R!55B8~KIDGhEuIfA6r80Ffd8d! z=w%S=J@jGLvUlOxC;g!NW;T6(`(3eGRojNISb3~mx{x%Bh`x*D}R^>T= z7r|%h1LP2X(91-}B<$NanoqyMgUK!+cj5;4GHkEjw|or-kdH#X;I}S$f?f}ti2e~T zWWPhc!av|WVi%*3diX|`^0{^*gWA&+fo~9vj)(}f3tdkelnrx?@$#d6VneZKL=7T` zjpva~c?Nx;Zo{U=DLp87=oxHtm;I-;MAlKBwI zY37fC3xe0kafF8AU~mmKk%&p;gQS@f`X6@5ei20ryy?u2I?Wk9_5J(HWFyddF>}8> z63aq2Xqz96EC>JU-v_=iiU!@A%z&?s;j2Ig=>|;#KdblETk=A6y;c3^#2Edjk$4M?Kj(@M7>S_8@dg%I#N2Wi#URL3*bdWOzSpy?8g` z73wwYH#~^X25pH*`z?K1_R-zkW4tE(?vMdzkrEcp@hI<# z8G2|+_CxRmdM7`w_`_Kt^&PXA%-W>(@~#W=ezA}6tTa^KoCUz&3ap6SliA_SbJ(>h zvMB94($73B-UD93=jJ@N58eWwBwZxlAi^7w&}2iA5630Rbi9uUW#~UM7_^IhX^2iC z_7Qf~xS2Y(Q#_6~k+}i?pcm)|kyr7Cyej52w?=yMo3>Qj6MQyo8!|zgz^i6fL}q{y zVQhP{7cp~B|I~-Hi|Tb@2U5eMTR(7v*{&B$$q{v*3# zzcL$QgxYa5HiCT$8-YHHnSjVjv46&npr@FLdqZxyC-UOVV~W0nO~!tPY@z?@OL}j# z8K2Z6vaM`_x1c|G$QfKQOx){xjpkpVzleZ`4e{uh=ud>K6Gx0$DKUw-(lJHu8N-Ml z83A4f|7(M|2Yp8S(io!apgXdZW;Bg|B@6(~p^4ZHn~QBuw!52RC&?d#m*oXzYDfRc zoWQ`-RrD@>K-c2uil_7?crRGPc&wQw+Wo+H&~hpdqE8*G;63z#v*_YY@j}GDz+A?Z zlAZ#~r?E*i%P@FtAui2qfJfTSEQ&dG_6Z*ae~E8Pb2DyigBdscCO0$k@?zGqK_uQW z$a3V>KaO?ePl{`xON zv8eY_90r*V>}QNjtQ_l9q(Q{WD(Dzyx3C{z+h_xPjy$T@m7Nv8rM?C31EWQ3)0mrM zD=pS}jW(c*0w3UGCw(AZpiS5^bRT-iv2&e)&*RTCM(~ueM}DJ=1K03gd8$U=;BjL9 z&^BkO_2nWER;5^LFiLivNVp30s}T zkNOcKC!UBt)+QMjh^!zmbeacA`WXBW<3szEH|B3L{ke3e3=9a3#V)xH7JEfZE$N2H z#4~P~Y!|YK&46xQz9sH)wk&)Lu}Vij(wKm;6Jz}HLFl&_S7PnPrNy*<6THLsoo7&o z$U9*7m>C2^DjVGtv&iRl5?-J`$)_=4WZ6o@^^A`(YpC59A3^7MM!!Ni zu)WH5_=3qM5&HpqGVk{F_&4)s_+`U!b98h*yE>XTeW7t9P(jx{)v4P|cC}oZvQ7Z;^1o)JRNWkt`aJm}Q^= zoe76WIIIy(U`oawAhM@W)M54>4*fm0= z!X?zLa%r?`(U5AW<8Zq$ySCTq9@Q7_8ls)l4iGP?Z$!_8f@y^|BZ@K2!~0A$z!Vc| z!WkwMYy~C z9pNsP@B02dOhhalP_3fY!wl;}oBR_=yV1r__qZs1rz&G=wPVOddfI=JUkx2`3=@ru zPWugah8tlLi{V(818Yh~CNq%Soxv4dzknIGmvCByMS+#N-vO6&4=}gFuI~Lr2cS|F zRa_wXVREuJyLtWoRqgk$@$jwXh)TG zd((e^FmLX4wwlud?K6}qKO}lYGLw)aU{jcoG*)4fBk2kn)O1Clm(%8|N6iL&K_aE&6cF4VB+B&roWud=;MAXg8^5oOncr-f@#;^Z3FKr--$N}!wQiJ z9{_*hZ$r?UQe9-^9;j^68`Dm>F2KIvS=tY5h*TNeU!XZ|m}5hDI$#mwrhakRnJ$Yw z5c0+NFm!$ z@KU%bgu8i13PA(Qp*;zYF+Gr$CZ(|mo);!bV-siLsR6JxU=chX=NVJ)0|tkkF$5a$ z$&icfb^432tGeCeNH<8E5_&Ka=14?NyxcJ5CzGA_1O7bP#5{E6Y+x82*$Q{DiX6nWllI-QVT>K?%r!{~@#qh1oUq(56)szM?*o}c4&8%ad^>o5Ymoz;SPkI zV+x884Ce_G_&n{8=^AW4zty=DWE*>kdq(@6VhMYnyZ*`|I@u(6bcN#_q4!9RHT1q( zLYc;uFn=U4GX18lPg9Aw{Jg`I5Z}QRe1sT6en-d~ZA#%J#w)N8-}FAilnv~L@(g}a zkJ(pUj7T*z{U#OxmF~F*OA>UE>DHn->X&XW2Rp^Z>EZ2+rMa`y^LL+4N(a+CdGRUx z{V+Ki`q2+VHzVxKpy+teE<^ZPyU-W7v{}2j)yakrv-BgDt3vzWuSlEY9lFx; zN~IlPUoZ%~w@*2V#M6ez{5JQ?a3=J2y_C6h2D?l zwHY?OnCDoIG9|6T!E|>U{^MNx>iB)_DSVe))F=7v@p4d?FR?5SEhlHUCKM|YVaKGJ zPB_*!M$bS%1ZclLVtO7}A2bP8fn+h!0f8+jWintwLIz&Ej{tHcSYRd5Y*?hU42~m- zwpu8cv8jFG^+-IKYJo(S{ubdg3T-GS$IAT#=hR>>oijKb%UA5190E7P)u!=t4bImy zFo6}$7D*ZmB@vW9BGrKgOpS*Qt+2!(Jnlss@Y_)``2?+1P1?5M5){Ah2*$)SRuUwq z#R!Rm7O|{S?tq)&ibzgygr`U_38l0tNl7Fh1q!5q4^p9K(UV*MI|W&lQV{`x628+j z;R-1Y8i=&$AIV#`C%lnfB)<{FU@3@*+evEPT|c;Qof~kMA(!vuS=h#~2x-YnET|7j zTQX4-LDy(!3WSoVA#Jq`cNW^Q4$Z69Kyq9jB0|I~2CXHDi-a#Fj-=KkabK5ciUcLp z%KawA5*T0CEb;vmXkz^24K)RA8kLzCLmQa%=p;FTt3$1+fqsK=(pt1e0NsVz@eQnH z1aIMe`PC&v5!7OdLQ3mRJ&@IOJ|+>64HI+G zO2Nl!7MCj$SmWE!k@t;avM%$EL69V4=()wjZ%u24M#DnOlTo;gKx#?^WZA~; z%uAl4C)8CVlO;Ja!5zBFqx`C8@BJ|`VtY*1;=U%6$lf1GWgZPObH4%Z;0wMV-XKUz zk0ugtOe*GYWEylsyJE7(1kI!a>^C|zyd!l7sK@@wXL|V}7baFxfLTPO4TwNHd`oaU zA$`uVOhhzoGJ$*&$*%@$n}o+uEirn z1|}EbbwS6>>*BfOC1V>Hi<*;X=uX-gOFFSd>S|;F{jZFb+vR)KvD9ji=-23fH|uC= zt|&=|ggM1Aa#||1D^$ckrx(F-S_b}Is#Rk;8Yx7B1ZJcZpj;zfj%UJ;2G^QS(Pv>1 z7&h#@h(uEol|3|Efc%QKqIY0bQM@W1o_Zw=bxB_Ln;u!v|aU4b{{)S^& z)VEerZF|4ByNw0=uA{+HXT8o8F~H_Iv9E5nxS_UJx#$?RBxyrCLW@OdDUrhns?@}8 z7`dYN5p}coPLkMr`CXet)XpT7@FY7<^ktLGM1T%&c!&C49vl>nmic{nm5BwBC>{aw zXG95{phqmvGZCvD>zK#^cc6nK@y^JTdd7E{?4U>I-^j1YsUkz|hs$PTVZ^(8I=M4B z+EE97FP+Rc5`IdU&w_SvRwU=fL}5(EqLc9g;CL1RMC9<*6|}+wi=|=csYnQ+FK`me zvFMjJl!QAYdFYpj)<6&G6822`v;y5@Z?#|EUqy$67YxVpoJ+@?l$xgU0ZU64_&m$Y z!giZb;8I`ijYU-G)A$?jIxRc^>zFvJM~B`O*BZS=zhJ-hOpQ`SVsMHWWD&T~vyPb( zEI)yR;~B@9;z%J)>03U>d%%W9ADlc59xLv@yeAd)*0goo=~7(uJ0WVcd}%1@+ULakT=gikH9V2Uz)d$}p@M~4|RBt1;sXd0yP5Mu()KbWec zo{iXDr1LV0Oc|?_VyYJE26u^eSi;~)vq%`L>9P>NCkH_Tt+(+kxgvZ;(#K;Iou8mj zk)i?}B3>jyhFi0R%#o4-w~#V<&#y1EcRPiHo%VP0>mw#AH*0O-`jk$U^sg~%xG$k0 zG?Y`O&LuFNYD_rM2Lz~ABNmXBE0}U@Ka7E7bkoMD85_(MCHtk7NAoxi(ulMn<0PhO zfM8uLD*d#^qRaFw$z(O3Ha)}tE@HZKwASBS#rXb z>g6NLCglVty}G9#4|=b5_j?E5&z}ho-^DljZlh{SP-+-GM8C+55h;TDJ!cod;P`uC zQ=DZW!A@z42zp-fgGuXq7^Yo6=(QW2$#Uk%y8?++=_e6PR&a>FQXO5)-1Fy43`&d(XU zO><#bKrG>=Bp%YcDT!x_4*FtK5|0EvJU^^!!i*;B8k5_U#M4HLAdIDQWcErM~UJ9Q!kKZQm zEoPIdo053W-E2zYrQ!~ol6WB5s_}ZWs))A{XEOS^DTzmn5+B*9&88$C(Wr>Wf>Smn z@tj*RGtIcH86h!`%z~WUJKU7S!%NkxdcV2Ah(2F+;5PLTdkFR;*mXo zUfq<$BbyXDY)ay>F2tN5a*Z}6@yMVt>pYb~FyCrZ5|6x)O-Vd(Xk@={O5#OnyiG|w zGT6v!GlOkY5^qxyFIHyhd!&^to053sOm0fzZA#)rhA$b(e@|7yiG~G zSWDrmUFJnLCGo`8o053PABPv$Kb7m0t}CYUb)SbHuZOp5r^=0=3bmg~g|Gcn-Z{VB z8_v&%*B=+$mp%ThTK)Bsc+YvUW%JI4cO~)ib3aZ=yb8-9Y~{U@c+X~#Zu{h?(zB6& z?9QSGrF8nI((dX?diLsiF&ierLSdh{y8bwy4tM6W`A5!Q%rCgS{b4+tJveoCeLmxc zB3F<3$OV7Th97)`qct8J&uZD}^YQ7aAKAV+8($CKULFtp;?2k7OU`|qf4Vpwo^qnV zuMhK!>$l^j*BRXOd-wQ!JX>&PXMR2&(BHSm7growZ@D4$;_?q=ndkY?+Xz1R^Hw?I zkDKx7^;tUkZ0ncj8Mm%;O@8MO#5EcJe~oM29A8}xFGj`88SU4(CTFc5TiZO# zy7Dz`)0$t*XJZuUpHSHpt3QgBDwnr@DOU=2|H}&Iu2j#~W205f)yz5*sp*6jKaR+AXX+6_67xt@zy#3(CF@^U!)JQVF@7c%ftL;=K&IcPc^emMRVrgY}lwvPwX zQ9z%^H)K7ipB`WH)>`^m+P(UWUfsS0bbad@*zLv9`}S;baWw0^Z{HjpwhO)U-NNzV zi>>CxS^M~~del9feQNF%XGia;4g2!w^635P&PjQ+)tuButZXAII%)({^~dTdXS3tO z)A=c7u30a8Gk8f2kC&&HM=uZNY_!XEDcd*0ohEI5^K$#_bZ>N56q|Yv)L^214~4RM zx|=q}v=VMqV6!3~^%~4{VPg|21;%=Aw#T;C5j9^})9uPsYx7V;gQ^Bpq9m{1jT55I zRjM6B!4%m<`Hr1o8wkbAiWVI=kTjKo4{+q0dqEi^T-c-C5M zR0E)v$h|6YdAV~pf}(mD+;e|qW1GRKAQZJ>)5wzd=g3l9ARAd%>pQYmJG0^m6}7A> zYj3QX6ZL|nx^wn!m~AZt#v-=rb56>-&D4gBx)f1$11eXUw{(pvTO+UnF^w*HnAzyc zWodNDaJT2?XgVTMdziMkHD+*PI$HOY8a-T(x)bCr!U1MIL%pTj8?oBREzQhBvi@^y z9v(Hh`HubQkvZR?Dgf)Mtp#X(9x9UAzE}ll6{DqFOUnVPk!A&@^&C2mC~adqoycDt)m5I~-y~8`@$`p(s_K z*L^;^JlVUko?w-gWz_Ca=A#xg73JKb#8r!KyI3nnEof)}EvOBF1i9^N*P6uE#ig#Q zb3@}8Q)+)$%`3(fF3ZL=)rxf+f^1CTytFcsl{&8Aifufo*~-eDB(X@N(qYYStHHP> zG2yuB}WWl^S$I3S6wUVNGgxl#ckLO&4bz$EfQZ0z_tCa?B zvp^LdBv=Ww#x4A6eE_%5jlM77_y^<2Sj0F|mzeR5+NNwvW=byA}?I{jl6pp_44k$i1s zFy`>lI91*`UaJ+l+6)~%OO4i7JJe~IQggJ;{X9>_I<<{Yd}5H#H?fuO^hs%+c)uD|gW&3JxiM+S1+Dgl!h9=Tr zb?o0Stz@Ns2Wf3RA+7IL(n>uh?M-X~h&D&_pmnH?1y_R&-sQHn@=#Kv($PanJ-k1H zjBME9R7=kdy`lni%+~F9X+zh_Zc+7^%D&8KT8*80chD`k0x57K9wm|yi3-WZR2_HC zu6AP+CM&{=9ju%J-Q9>ut=6|*0Gi58hGTTe@LjLGpKIWDomz!AEouSZ*T8NbL)9cI z8r|WgFG(qz@0#@&HS(yRsMbbukU*=vsBNi+&Mbb^rnGJ(T8PbUv0!QxHw&WuwJMtk zV=-c*T(OMxyy(AUWX(x8oV1FxebN%qKPtmvsp&Hs8tvrwz&F=Q9c|}6*XCNe*A0l( zKGwvFjkMU@TT2nOH1EgZE^ zwc=s5;U_Gln-khzFdi0@XRWnb)#_m7kT{=Ji^XQP+_SQ#sm|P;HDwnA?_WtMeSUI0 z_YS5jYf3-GkRvTNG^SP@oA;$^T4-1-Cl=(|b*tb^+U$ll;#%4hI88aW61EtVnsrf4 zFrf=Izt|0}SfOG|pbTq~VHpBhMP;s78|@}%Zhoj%iA~de7g`;w1vXDK2XSE)#Hdy; z=ABf9+HFG{##nmQs=OC@c-NvrjBSISgJ>JowW%cve}MqJS45?CN4DV|G&1O}8TA_^Ee(+#apC4c)qFN1BTx{)15;s`3 zjUBZn^ra5ddvs2EpETip)YeVM?0xShY|a_9(BkV`I0o7K#NY8gWH-I<-fkJW%wmNn zyF0BOm@1(rtDG~=Q|O{hO{oiY13GeS5`v^E8{;arAGwjT{LSXk*7>s*ooIv2alfGP zXWP6P?$2?z+l~6P_RI=+oh220ks$XrP*SLbs3fNP`&2C?Up(*@8cs^My;#C5YA8mL zTH^n{ZH!(NvXDd`%P2m3yp7TG?9|!%oK1G_2MT38eq6_8)QymtDJoZuNSF~_99UFal_jC|V^54%%62&eqJrg*lB529tyo<9z`=F>py z9F_;rejpCZc>Ze<*PLC}S*Y=u!F_u@|2WLAGU>B^!`kT$kD-vh{Lj-f&&8tk>kM1w zYV6O;WG|kI$o>X3MyP)@Ut^>VfBlh}4S!l4R?HJW)&l&))6wv4maQ=Vczre>%`c8; zjk~kk`4qrlesMwA-~5H`!KaU(SJ?%3xdvt}+`Z)W+`xXMGE9co*NZHOfBfls&V6f% z4t(Ksev{27+)tFa3-IUJ5Wj9L<^Df%CgJM(_+y?mj1J5%hfH;NW|!2C ztVjIHx*mpkHovJ|F#V8CiA(cyPhTl8SpGBjalR>0@Mm zaL1dypWjyNFW&B)zkGYuZ@;^3y_^30B2$mFdNg#_=1VtjWs~T#M7k|9FTP>Q_2Y0x z_dc(`BPNv>*C(&?S*YsKelzQ|GE zF)gf^?=PC$=5pZ)09g8^n$2ggW58-=41XL9SQKVF;FBLge}XVSF5bh3>XP`;_s1_z zqQ}qr?fS*KgW;|B^zLuaLH~bL&0my~U)Q^tI^F2ql_h#ANA7_<{d@IpO;!Alx7Xwm z{P|UH@fQL*cmK;2Z?1`p)eIM`Wj{SH|MD!0r2OcbI14QNU`X~(6W=Lcb+Nc^qly1H zko-?*;*9k-ns}v&Gm8AU2-uL>+wuA3Z1|7*@bh>u{738f0&x8C>dy>^OQf@x?s5qW z_rs%4K;vh>RI{_|3ONs%{y5P1#Zw8XUoh=g)8X~N{C+X$zrepbzZx9tRJG^V;}7H% z>UjU-<)@QBH76Ax%-xjpDCn9w&!gz;tdpPnfmr7^MAlo4w{L5E4Pqg04)%BWv45}@ z?))R;=HGSk&5x7TT&xyVy)oAbr^X#ZcTF)E19df&T2oN>e|A>Y2@y~sNXPO z({#R$0~d z^<2qHG(U^%vd!LNo4v)zGmVuAo4v(cxp79$x@(kJc@cZpo1eMaTa3I=vO4?KR>8c{ zCaXmvcbdJRSvi$f(4bj1dyAn_+3D7O=$qNT@a$%br8d`?ylz*1x#EWFeO86I2X~(p zIaqRXn#oa)9geM3A1glC7bfNYPFaOUF0%VR$L_klScgcCwmagI-|UXT4Zp*CrzLk$ zCFhxZb5|F!Q+j0Pnh$K%YIhusJ&8E7CsC{saA(y4*IlFNedbED{(#j<B9Ye0y&(~*^jtomGCo3yH|v?Wecv#tUj7k(GWnmPn{2Ci0Y ziOM;;YO)17Z?bZ@X1i|i0=U0NU5Yqz9h6`1vFg)Rgv~OmE0Oj=HLZ{5z0seZ=VL8D zD^y(tN@7B&#tP0Q-We-)jidET{XnIxAl~dPrsqQ4C{lyhkEHvym#w`u*$sNLvL6=q?dV3?kACc56=rF^j3j&yvaLfHT)Oa<=#&4 zdhG2)y$e@L`|iH0glVg*>;qjH8L++V1H}sIsFz};2i5?)Qar7c-|Q`BJsPTFxI!K| zQTNA~LOaKw74_)f*#Bg+w-|J&ZuS<_-m|WrdOe^~ZE_(ZenzJ^dy8%M7DJyWZ-2A5 z7UsmU_%7o1m^OA^y-EC7o0sQT@z##3(&O{2^jMXR-PE37S zVyhARadwV&kSRgT#@d~<11z7iBofVx&l+P{5UbX^v6^C3rndeX*GJOq1{)&XD`0B*z;nbc zu#wj8-Rv#KxD1S;ZT1!uC&~X*)r3#sMRRVAby_!AdCV~sb*`gMurXmOJiQZyR*-J|?*EA}PgJrA+$yl(LRb)l+`}{^7Af|&) zcPG57Ld;aT51F8?%AN5PWdJ$0%~8GFc@Si%PfV^Kx&*mmzNcq~fo&k0i}$2`o2djD zwYf{Yi=1Px_o<@j^P9cJVm!``QFW-%ZT1rNAklT!@eX`T%}3~pPEXltF+TY3NoT=7 zfqki}i5{kQb?9@d!ZI!`GNc@XzH?&eO>wX|-fy+|ck=i1UUW~=dRsx_VL zfO<@uM68x5FZPgK|X;+A-SbP2fO>?G>F1R$gRPPIBD!%_8yWkn%I>_$qjP;(SKTR`v5Y>z`k(!1=(ypA?4W;WL!LBLq|! zz9>+9gW|gE@;knk$r)MdC?l4&)xDm`Dcjbdhw98(~pXboQ^+pIrbaKZ+mpl`n%Y?d3tY;;Ps37 z8~FaCmvHXhw;pi$Kfe?8uh(9FN_Os~OP;kec|}}V+TW{c&Ht{A3Z6aOsNm0A<2w(A z{N9=*2gB3x)f#vGI@4{~Yu&2fS>C;smdhQU7ljJ-Anz&BKW_{nchr6_gY8ory*r!@ z&xcei{#}fgH10js_8Wp^l*FE;diB3wWp6a;Pla0e+}Qpv{3DEg%<5aus=wrAbaKG( zJaYin@InsH*Wp4AA^t6B;o@@lqWh8Q&7YUo@1Gz1$Nu@=fBc-u>>5)1wsPNh7VsN) zNZ1tT{&LhSd3Ilmj6BQu@6Qq+D^?!{$V$1qrcAIoQ9?wOAVP~u-#z3LwN ze7LDX4pVXQ|7E+5Usg``W}l9ih4JyrgTkOb|NOdqT0UJ=nf0xH9-I$8v#T7d@wU=^ zi{@y!SG+p8Xl*sm&kCn6YtLRUws>Oj>6BGCC*@Zcua`}Bw5@#}l#edhk+yPjc=K$) z{ww`bj~&YIb}#4J^7Q5G>Zn^7A01ZD`scT^*N3mT@A_hJzEwOq?>sv>e@FHO85QpF z>A&@>M?0FYuCZ(0kax9SZnLlTc7@%`({AQ_Gk3*p_218CgV~E)u9c47zgiw2Zhhh& zW-lA#H{AhNJ^%1FePicsb$MEU^*qgX z&L;<5YL!f0)%VMV_4hCH_n*Fhb@lfh)_qM+UmfhexP8BvK6uwbde=^IaZ20w&)=1x z=jWrn&hvih_HyvV`Sk6};^6#d&R+0`2ZdSV{qog^zdz_lJMYKEyT!@Qh_#hRFW>eK zKD3H2E+4eF^o8~o9=G>2>-)p+zkBrk{g)XXAAG+(d-VP47rtM9{Qbsi>>kjz^2EKj zUwCiziF+4cxc9cT`>4IQt@6`-Yjt-Y(V^AN#<>2FW{t%Y?I?b+9goNDwtexXb{ss> zjxUW}qxeKSDqm{H6XSQgpYz(7eaP$Y*a>s+fX|y>8n@f_<9;nxGWdXZTHUk9{hH+R z_=vvu#`(?8R;IHuU9h~p$aTj~F5jK$3w7$z;qKy~{OaszZ#Fx*=!}k5e;@P)=ewT< zr6crf0X}RMm*}=?Yf>1K&BH2Wvi$1oPy2GTK+hGZL1eZFE8*0WjjbjbY*F)w z9lh0;Ep#UHKW z_VTD+7_W50yB8~cx&ti+<%7?IojYBheitVvrQ6Sg3HookyL(XI-Q_)>$@}2_>`p(a zxzl;B4_~R5Ps+6s&sI-DFURleerfCKq}+VgEc9>Nz2>4r7Rd?OBZJbrg1SBJvzlvW zM(^tQusZ9%fAx|Pm>wU#`*d1geT5p2TUW!w)6Xa4?VFR*>{ImEecBf{u0_WZ@%LN) z-l?SZpXqOM*2#VJZ*pVk#pGmfcR9eKVkMv~mCCpC7UajB?(O52>}+HAvR3ULK>O_qe`h?AUXdKE~e4Ij`jWLk3W+XlqrQtR9V(=ImFy zzcYm&roj*JMr2&ESM_LEZ$k49D`455n9NRkQ4M~GeXV=&8~et-9Nh*Vk*P`cmOII= z^Ypuu^I5@OpTZM^S^K7c*q(Ju)pvuEyc9M#w_)h4<{DL?#`1J;>!z7mU#xZfetp>f ze6qK-*heFDdhZ&oo^RSZKe}koPT{zgJN9Ol`!{hKlGK^J+PTkZjdf0Y@fwQ>>Np!r z@3?>UjqWXcaa%nqZGCFK-2MzNMUTm`{nQ%YAXyc1vRKa_`^A&LiWKj|7mS2Cq)2J= zie05YwLnoTPCid4;(;X!t^ViY9kagJskr=g-Z5j1{nMeqnm+tJytDjk@s8`d;TLO0 z1i!S~D|Usx0V)-@$P{-#nH+8b1NHYlr&+vF*)$-s|pfhJnD7Wso;vp{|O z&93BwZ?-_~-M^LvO4&wlSr@mW>JYm-s?_0uE7Iu(rj@sXLVt_6O9j{Xx?t`(u=39mf(;`7`lJ z!Xl$z!LflwScUV=d_rvDuY_ZkhnjO zwFxZJq3+n%tW98%0&9c6+1l*?#juE)LoZm&p*O?oq_;J+$B4gK^|#~S=^nkDbu5B6 zwC-u$`SyE{J+6DPhnKI;PA=N##Fnq|46pm|4;IJoNAtCK$a;)q#A4Rd&y!JPEz$Y(f7bm64h{(z1$%TD} z)=^O}>MWy8SalXFgwP&i@hb=g%xVnkK5yLf!hbB@Ao9cN&vo9w8>>}WDSMAMm?5Al z;2m$EIa%pB)dqbdZ!~WHTJ|MyYQ#cVmkS<6!d#oYfMetmq_l+=!QaILxX&HUA6Ii& zQ=(go8K)F^?O{Lr6-IuIJ6wY~V(s%9cd$N^YUKZf=4dbz^jAV3Mm>`5peh#?GG9CI z$4Wzv+89wGvAh) z4UhO^9ryfLQ8M_WvjkbJ@rP@_tw(&1Kd24bP+R2u!J6#`JDy;JzL`G`{(Ah8EXYVb zfyZLK(9k2q*Rk0NdpwM)DRksr78f=h?YDqw5D)8}aO^ol`fdS*A?gesU`Hiz!(X3!#yUaLy#j%dc)+m|Uqv zZPeVU-P^>Fpdi7(?Pja{ilS*}6d%TwUsz0?;zN^OOlqgX<{gv}u5lDNZ&dboDJ(?c zGn7rFIN|b5jwZFjQFnSjNazs%KpCqn6EO71KQlue_o z#I#Yx)KNOQN%?OkGwPVUl>9}jY;8v%wfZWlRj9_!{Ym~uUp?s#fLt~D(|4MLl!_>( ztnsACDN`tH>CsISa7zQCt;yM(LP7xcUWFnnz)ln?TS+;&Yq2+4SSHniv3i~tVn#8 z(PWbly?uMmme@Namz9ndxz+u{6QWC`os~Q1Talm~_KhSi%XT#h2Vrf>ZZ~|i_wIbK zWZU7C@J876^?Cbhzy<{mQYy1FvgY+&I!(va+!wFQDV6!n@wZ^yMjh*vj_#(K&^_>NV`=T2NZ& z{VUIqDtbn6?fx@5bdxUyut@`)9vvPndFw@U?*M$#xIQ`Gy*3fOySH0Cdf%ihd={vm z-kuE)-!0xR`?mas$%lD!j{yGEts_7blxBNtkb8N0W`LXNcU{8Z{09rul$y6E#L{t;rfjyp0o7u@?dTl zb^p*UX#93|uWnAX!?q3zhqT!sTYG%7Y?mJ0Yg;YdMIU0z1isyJlBfLm+j-y8x504L z*7V8uU5S!FSy#}9zKNv7dp8Td<5Z()iZXLIrZ<&3U_KIDuQ*r1MGM+N8#rR>#LHEy z;f7-b)EcHsvB4wnX5?3N<~c$DOi`8`1GdMAiHL(UOP%pPIF(Xq`M4OIcN?CU{hL15 zxfeQGmJzxeI-pFZXpS&7?;0$R>)TI{FJsF+(Dw)=?Uoa*YR42m+GShs^@CE8Y*lgv zzWvmCciDD}8z$4P_%7e0>?B*dh%#ea647{+TnAnH_jE+^CfD|Y&e29DwDP`Z<7QhA zwlm(!cp)FF9(^Aa=tq?8gQvpvWopy#8Fcko+V2F-D&B8L~DrEP9rwfBPeOzGqPX5nBj%#kn38aHn5CiF>dqEv8%L(^nFzbTiQC5e5&r+5V7Vj)NWZIOi>vkTI}&rWuVXX3ZC$bm%=7wBZ_kdp zyXUm!;bMm`KZCC6PhOqfe3hSb_Eu1EQ4BPH0t>{)beDtoTJ z#g3sPiJ+j1~G7RMmu>IA^!9|+rs^+ zFR|sGrA=uEc8B}16SQSaDOt-fTWU7i;C2MDT|hPN;alKw&UN@#`dBJ^w{8h)6JCfQ ziO-p`u34U#g%{dvlWrp!=GrtnrW~AtvOnm1x9b8Uy=>hyvE6)wa|hZZF +{-^B$ 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