diff --git a/README.md b/README.md index 1fa625d..958eebc 100644 --- a/README.md +++ b/README.md @@ -163,8 +163,7 @@ docker-compose -f ./deployments/docker-compose/docker-compose.yaml up -d ``` > ### Kubernetes -For Configure TLS in kubernetes cluster we need install `cert-manager` base on [docs](https://cert-manager.io/docs/installation) and run the following commands for apply TLS in our application -Here we use [LetsEncrypt](https://letsencrypt.org/) for encrypt our certificate. +For Configure TLS in kubernetes cluster we need install `cert-manager` base on [docs](https://cert-manager.io/docs/installation) and run the following commands for apply TLS in our application. Here we use [LetsEncrypt](https://letsencrypt.org/) for encryption our certificate. ```bash kubectl apply -f ./deployments/kubernetes/booking-cert-manager.yml diff --git a/src/BuildingBlocks/BuildingBlocks.csproj b/src/BuildingBlocks/BuildingBlocks.csproj index 1fc9ba9..2ce1533 100644 --- a/src/BuildingBlocks/BuildingBlocks.csproj +++ b/src/BuildingBlocks/BuildingBlocks.csproj @@ -18,6 +18,7 @@ + diff --git a/src/BuildingBlocks/Core/Event/IEvent.cs b/src/BuildingBlocks/Core/Event/IEvent.cs index 9ae26c7..9a00477 100644 --- a/src/BuildingBlocks/Core/Event/IEvent.cs +++ b/src/BuildingBlocks/Core/Event/IEvent.cs @@ -5,7 +5,7 @@ namespace BuildingBlocks.Core.Event; public interface IEvent : INotification { - long EventId => SnowFlakIdGenerator.NewId(); + long EventId => SnowflakeIdGenerator.NewId(); public DateTime OccurredOn => DateTime.Now; public string EventType => GetType().AssemblyQualifiedName; } diff --git a/src/BuildingBlocks/IdsGenerator/SnowFlakIdGenerator.cs b/src/BuildingBlocks/IdsGenerator/SnowflakeIdGenerator.cs similarity index 54% rename from src/BuildingBlocks/IdsGenerator/SnowFlakIdGenerator.cs rename to src/BuildingBlocks/IdsGenerator/SnowflakeIdGenerator.cs index 1209c32..b2fd850 100644 --- a/src/BuildingBlocks/IdsGenerator/SnowFlakIdGenerator.cs +++ b/src/BuildingBlocks/IdsGenerator/SnowflakeIdGenerator.cs @@ -1,4 +1,3 @@ -using Ardalis.GuardClauses; using IdGen; namespace BuildingBlocks.IdsGenerator; @@ -6,16 +5,16 @@ namespace BuildingBlocks.IdsGenerator; // Ref: https://github.com/RobThree/IdGen // https://github.com/RobThree/IdGen/issues/34 // https://www.callicoder.com/distributed-unique-id-sequence-number-generator/ -public static class SnowFlakIdGenerator +public static class SnowflakeIdGenerator { - private static IdGenerator _generator; - - public static void Configure(int generatorId) + private static readonly IdGenerator Generator; + static SnowflakeIdGenerator() { - Guard.Against.NegativeOrZero(generatorId, nameof(generatorId)); + // Read `GENERATOR_ID` from .env file in service root folder or system environment variables + var generatorId = DotNetEnv.Env.GetInt("GENERATOR_ID", 0); - // Let's say we take jan 17st 2022 as our epoch - var epoch = new DateTime(2022, 1, 1, 0, 0, 0, DateTimeKind.Local); + // Let's say we take current time as our epoch + var epoch = DateTime.Now; // Create an ID with 45 bits for timestamp, 2 for generator-id // and 16 for sequence @@ -26,8 +25,11 @@ public static class SnowFlakIdGenerator // Create an IdGenerator with it's generator-id set to 0, our custom epoch // and id-structure - _generator = new IdGenerator(0, options); + Generator = new IdGenerator(generatorId, options); } - public static long NewId() => _generator.CreateId(); + public static long NewId() + { + return Generator.CreateId(); + } } diff --git a/src/BuildingBlocks/PersistMessageProcessor/PersistMessageProcessor.cs b/src/BuildingBlocks/PersistMessageProcessor/PersistMessageProcessor.cs index 674a438..561e059 100644 --- a/src/BuildingBlocks/PersistMessageProcessor/PersistMessageProcessor.cs +++ b/src/BuildingBlocks/PersistMessageProcessor/PersistMessageProcessor.cs @@ -202,7 +202,7 @@ public class PersistMessageProcessor : IPersistMessageProcessor if (messageEnvelope.Message is IEvent message) id = message.EventId; else - id = SnowFlakIdGenerator.NewId(); + id = SnowflakeIdGenerator.NewId(); await _persistMessageDbContext.PersistMessages.AddAsync( new PersistMessage( diff --git a/src/Services/Booking/src/Booking.Api/.env b/src/Services/Booking/src/Booking.Api/.env new file mode 100644 index 0000000..467e2da --- /dev/null +++ b/src/Services/Booking/src/Booking.Api/.env @@ -0,0 +1 @@ +GENERATOR_ID=4 diff --git a/src/Services/Booking/src/Booking/Booking/Features/CreatingBook/Commands/V1/CreateBooking.cs b/src/Services/Booking/src/Booking/Booking/Features/CreatingBook/Commands/V1/CreateBooking.cs index f36dcda..01264fd 100644 --- a/src/Services/Booking/src/Booking/Booking/Features/CreatingBook/Commands/V1/CreateBooking.cs +++ b/src/Services/Booking/src/Booking/Booking/Features/CreatingBook/Commands/V1/CreateBooking.cs @@ -15,7 +15,7 @@ using Passenger; public record CreateBooking(long PassengerId, long FlightId, string Description) : ICommand, IInternalCommand { - public long Id { get; init; } = SnowFlakIdGenerator.NewId(); + public long Id { get; init; } = SnowflakeIdGenerator.NewId(); } public record CreateBookingResult(ulong Id); diff --git a/src/Services/Booking/src/Booking/BookingProjection.cs b/src/Services/Booking/src/Booking/BookingProjection.cs index 89b145a..fed0ade 100644 --- a/src/Services/Booking/src/Booking/BookingProjection.cs +++ b/src/Services/Booking/src/Booking/BookingProjection.cs @@ -41,7 +41,7 @@ public class BookingProjection : IProjectionProcessor { var bookingReadModel = new BookingReadModel { - Id = SnowFlakIdGenerator.NewId(), + Id = SnowflakeIdGenerator.NewId(), Trip = @event.Trip, BookId = @event.Id, PassengerInfo = @event.PassengerInfo, diff --git a/src/Services/Booking/src/Booking/Extensions/Infrastructure/InfrastructureExtensions.cs b/src/Services/Booking/src/Booking/Extensions/Infrastructure/InfrastructureExtensions.cs index 471f1cc..4734d5e 100644 --- a/src/Services/Booking/src/Booking/Extensions/Infrastructure/InfrastructureExtensions.cs +++ b/src/Services/Booking/src/Booking/Extensions/Infrastructure/InfrastructureExtensions.cs @@ -35,6 +35,9 @@ public static class InfrastructureExtensions var configuration = builder.Configuration; var env = builder.Environment; + // https://github.com/tonerdo/dotnet-env + DotNetEnv.Env.TraversePath().Load(); + builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); @@ -76,8 +79,6 @@ public static class InfrastructureExtensions builder.Services.AddCustomOpenTelemetry(); builder.Services.AddTransient(); - SnowFlakIdGenerator.Configure(3); - // ref: https://github.com/oskardudycz/EventSourcing.NetCore/tree/main/Sample/EventStoreDB/ECommerce builder.Services.AddEventStore(configuration, typeof(BookingRoot).Assembly) .AddEventStoreDBSubscriptionToAll(); diff --git a/src/Services/Booking/tests/IntegrationTest/Fakes/FakeCreateBookingCommand.cs b/src/Services/Booking/tests/IntegrationTest/Fakes/FakeCreateBookingCommand.cs index 2abcce8..3961db5 100644 --- a/src/Services/Booking/tests/IntegrationTest/Fakes/FakeCreateBookingCommand.cs +++ b/src/Services/Booking/tests/IntegrationTest/Fakes/FakeCreateBookingCommand.cs @@ -9,7 +9,7 @@ public sealed class FakeCreateBookingCommand : AutoFaker { public FakeCreateBookingCommand() { - RuleFor(r => r.Id, _ => SnowFlakIdGenerator.NewId()); + RuleFor(r => r.Id, _ => SnowflakeIdGenerator.NewId()); RuleFor(r => r.FlightId, _ => 1); RuleFor(r => r.PassengerId, _ => 1); } diff --git a/src/Services/Booking/tests/IntegrationTest/Fakes/FakePassengerResponse.cs b/src/Services/Booking/tests/IntegrationTest/Fakes/FakePassengerResponse.cs index 7aabbd7..a525e8a 100644 --- a/src/Services/Booking/tests/IntegrationTest/Fakes/FakePassengerResponse.cs +++ b/src/Services/Booking/tests/IntegrationTest/Fakes/FakePassengerResponse.cs @@ -8,6 +8,6 @@ public class FakePassengerResponse : AutoFaker { public FakePassengerResponse() { - RuleFor(r => r.Id, _ => SnowFlakIdGenerator.NewId()); + RuleFor(r => r.Id, _ => SnowflakeIdGenerator.NewId()); } } diff --git a/src/Services/Flight/src/Flight.Api/.env b/src/Services/Flight/src/Flight.Api/.env new file mode 100644 index 0000000..2e1ed1b --- /dev/null +++ b/src/Services/Flight/src/Flight.Api/.env @@ -0,0 +1 @@ +GENERATOR_ID=1 diff --git a/src/Services/Flight/src/Flight.Api/Flight.Api.csproj b/src/Services/Flight/src/Flight.Api/Flight.Api.csproj index 94e43ad..3bfc53c 100644 --- a/src/Services/Flight/src/Flight.Api/Flight.Api.csproj +++ b/src/Services/Flight/src/Flight.Api/Flight.Api.csproj @@ -7,7 +7,7 @@ - + diff --git a/src/Services/Flight/src/Flight/Aircrafts/Features/AircraftMappings.cs b/src/Services/Flight/src/Flight/Aircrafts/Features/AircraftMappings.cs index bef0168..0da501b 100644 --- a/src/Services/Flight/src/Flight/Aircrafts/Features/AircraftMappings.cs +++ b/src/Services/Flight/src/Flight/Aircrafts/Features/AircraftMappings.cs @@ -11,11 +11,11 @@ public class AircraftMappings : IRegister public void Register(TypeAdapterConfig config) { config.NewConfig() - .Map(d => d.Id, s => SnowFlakIdGenerator.NewId()) + .Map(d => d.Id, s => SnowflakeIdGenerator.NewId()) .Map(d => d.AircraftId, s => s.Id); config.NewConfig() - .Map(d => d.Id, s => SnowFlakIdGenerator.NewId()) + .Map(d => d.Id, s => SnowflakeIdGenerator.NewId()) .Map(d => d.AircraftId, s => s.Id); config.NewConfig() diff --git a/src/Services/Flight/src/Flight/Aircrafts/Features/CreatingAircraft/V1/CreateAircraft.cs b/src/Services/Flight/src/Flight/Aircrafts/Features/CreatingAircraft/V1/CreateAircraft.cs index 1760d14..64fa423 100644 --- a/src/Services/Flight/src/Flight/Aircrafts/Features/CreatingAircraft/V1/CreateAircraft.cs +++ b/src/Services/Flight/src/Flight/Aircrafts/Features/CreatingAircraft/V1/CreateAircraft.cs @@ -17,7 +17,7 @@ using Microsoft.EntityFrameworkCore; public record CreateAircraft(string Name, string Model, int ManufacturingYear) : ICommand, IInternalCommand { - public long Id { get; init; } = SnowFlakIdGenerator.NewId(); + public long Id { get; init; } = SnowflakeIdGenerator.NewId(); } public record CreateAircraftResult(long Id); diff --git a/src/Services/Flight/src/Flight/Airports/Features/AirportMappings.cs b/src/Services/Flight/src/Flight/Airports/Features/AirportMappings.cs index fbd551c..75bbd32 100644 --- a/src/Services/Flight/src/Flight/Airports/Features/AirportMappings.cs +++ b/src/Services/Flight/src/Flight/Airports/Features/AirportMappings.cs @@ -10,11 +10,11 @@ public class AirportMappings : IRegister public void Register(TypeAdapterConfig config) { config.NewConfig() - .Map(d => d.Id, s => SnowFlakIdGenerator.NewId()) + .Map(d => d.Id, s => SnowflakeIdGenerator.NewId()) .Map(d => d.AirportId, s => s.Id); config.NewConfig() - .Map(d => d.Id, s => SnowFlakIdGenerator.NewId()) + .Map(d => d.Id, s => SnowflakeIdGenerator.NewId()) .Map(d => d.AirportId, s => s.Id); config.NewConfig() diff --git a/src/Services/Flight/src/Flight/Airports/Features/CreatingAirport/V1/CreateAirport.cs b/src/Services/Flight/src/Flight/Airports/Features/CreatingAirport/V1/CreateAirport.cs index 08827e2..150ce60 100644 --- a/src/Services/Flight/src/Flight/Airports/Features/CreatingAirport/V1/CreateAirport.cs +++ b/src/Services/Flight/src/Flight/Airports/Features/CreatingAirport/V1/CreateAirport.cs @@ -16,7 +16,7 @@ using Microsoft.EntityFrameworkCore; public record CreateAirport(string Name, string Address, string Code) : ICommand, IInternalCommand { - public long Id { get; init; } = SnowFlakIdGenerator.NewId(); + public long Id { get; init; } = SnowflakeIdGenerator.NewId(); } public record CreateAirportResult(long Id); diff --git a/src/Services/Flight/src/Flight/Extensions/Infrastructure/InfrastructureExtensions.cs b/src/Services/Flight/src/Flight/Extensions/Infrastructure/InfrastructureExtensions.cs index e0bada3..33bccff 100644 --- a/src/Services/Flight/src/Flight/Extensions/Infrastructure/InfrastructureExtensions.cs +++ b/src/Services/Flight/src/Flight/Extensions/Infrastructure/InfrastructureExtensions.cs @@ -31,7 +31,6 @@ using Serilog; namespace Flight.Extensions.Infrastructure; using BuildingBlocks.PersistMessageProcessor.Data; -using Microsoft.AspNetCore.HttpOverrides; public static class InfrastructureExtensions { @@ -40,6 +39,9 @@ public static class InfrastructureExtensions var configuration = builder.Configuration; var env = builder.Environment; + // https://github.com/tonerdo/dotnet-env + DotNetEnv.Env.TraversePath().Load(); + builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); @@ -86,8 +88,6 @@ public static class InfrastructureExtensions options.Interceptors.Add(); }); - SnowFlakIdGenerator.Configure(1); - builder.Services.AddEasyCaching(options => { options.UseInMemory(configuration, "mem"); }); return builder; diff --git a/src/Services/Flight/src/Flight/Flights/Features/CreatingFlight/V1/CreateFlight.cs b/src/Services/Flight/src/Flight/Flights/Features/CreatingFlight/V1/CreateFlight.cs index c303057..e41b17b 100644 --- a/src/Services/Flight/src/Flight/Flights/Features/CreatingFlight/V1/CreateFlight.cs +++ b/src/Services/Flight/src/Flight/Flights/Features/CreatingFlight/V1/CreateFlight.cs @@ -19,7 +19,7 @@ public record CreateFlight(string FlightNumber, long AircraftId, long DepartureA decimal DurationMinutes, DateTime FlightDate, Enums.FlightStatus Status, decimal Price) : ICommand, IInternalCommand { - public long Id { get; init; } = SnowFlakIdGenerator.NewId(); + public long Id { get; init; } = SnowflakeIdGenerator.NewId(); } public record CreateFlightResult(long Id); diff --git a/src/Services/Flight/src/Flight/Flights/Features/FlightMappings.cs b/src/Services/Flight/src/Flight/Flights/Features/FlightMappings.cs index aa48632..e3c7541 100644 --- a/src/Services/Flight/src/Flight/Flights/Features/FlightMappings.cs +++ b/src/Services/Flight/src/Flight/Flights/Features/FlightMappings.cs @@ -19,11 +19,11 @@ public class FlightMappings : IRegister x.ArriveDate, x.ArriveAirportId, x.DurationMinutes, x.FlightDate, x.Status, x.Price)); config.NewConfig() - .Map(d => d.Id, s => SnowFlakIdGenerator.NewId()) + .Map(d => d.Id, s => SnowflakeIdGenerator.NewId()) .Map(d => d.FlightId, s => s.Id); config.NewConfig() - .Map(d => d.Id, s => SnowFlakIdGenerator.NewId()) + .Map(d => d.Id, s => SnowflakeIdGenerator.NewId()) .Map(d => d.FlightId, s => s.Id); config.NewConfig() diff --git a/src/Services/Flight/src/Flight/Seats/Features/CreatingSeat/V1/CreateSeat.cs b/src/Services/Flight/src/Flight/Seats/Features/CreatingSeat/V1/CreateSeat.cs index 74ed128..fff3194 100644 --- a/src/Services/Flight/src/Flight/Seats/Features/CreatingSeat/V1/CreateSeat.cs +++ b/src/Services/Flight/src/Flight/Seats/Features/CreatingSeat/V1/CreateSeat.cs @@ -17,7 +17,7 @@ using Microsoft.EntityFrameworkCore; public record CreateSeat(string SeatNumber, Enums.SeatType Type, Enums.SeatClass Class, long FlightId) : ICommand, IInternalCommand { - public long Id { get; init; } = SnowFlakIdGenerator.NewId(); + public long Id { get; init; } = SnowflakeIdGenerator.NewId(); } public record CreateSeatResult(long Id); diff --git a/src/Services/Flight/src/Flight/Seats/Features/SeatMappings.cs b/src/Services/Flight/src/Flight/Seats/Features/SeatMappings.cs index 3a80879..4321875 100644 --- a/src/Services/Flight/src/Flight/Seats/Features/SeatMappings.cs +++ b/src/Services/Flight/src/Flight/Seats/Features/SeatMappings.cs @@ -16,11 +16,11 @@ public class SeatMappings : IRegister .ConstructUsing(x => new SeatDto(x.Id, x.SeatNumber, x.Type, x.Class, x.FlightId)); config.NewConfig() - .Map(d => d.Id, s => SnowFlakIdGenerator.NewId()) + .Map(d => d.Id, s => SnowflakeIdGenerator.NewId()) .Map(d => d.SeatId, s => s.Id); config.NewConfig() - .Map(d => d.Id, s => SnowFlakIdGenerator.NewId()) + .Map(d => d.Id, s => SnowflakeIdGenerator.NewId()) .Map(d => d.SeatId, s => s.Id); config.NewConfig() diff --git a/src/Services/Flight/tests/EndToEndTest/Fakes/FakeCreateFlightCommand.cs b/src/Services/Flight/tests/EndToEndTest/Fakes/FakeCreateFlightCommand.cs index f2875f5..1739ad4 100644 --- a/src/Services/Flight/tests/EndToEndTest/Fakes/FakeCreateFlightCommand.cs +++ b/src/Services/Flight/tests/EndToEndTest/Fakes/FakeCreateFlightCommand.cs @@ -10,7 +10,7 @@ public sealed class FakeCreateFlightCommand : AutoFaker { public FakeCreateFlightCommand() { - RuleFor(r => r.Id, _ => SnowFlakIdGenerator.NewId()); + RuleFor(r => r.Id, _ => SnowflakeIdGenerator.NewId()); RuleFor(r => r.FlightNumber, r => "12FF"); RuleFor(r => r.DepartureAirportId, _ => 1); RuleFor(r => r.ArriveAirportId, _ => 2); diff --git a/src/Services/Flight/tests/IntegrationTest/Fakes/FakeCreateAircraftCommand.cs b/src/Services/Flight/tests/IntegrationTest/Fakes/FakeCreateAircraftCommand.cs index 9afddac..6b322db 100644 --- a/src/Services/Flight/tests/IntegrationTest/Fakes/FakeCreateAircraftCommand.cs +++ b/src/Services/Flight/tests/IntegrationTest/Fakes/FakeCreateAircraftCommand.cs @@ -9,6 +9,6 @@ public class FakeCreateAircraftCommand : AutoFaker { public FakeCreateAircraftCommand() { - RuleFor(r => r.Id, _ => SnowFlakIdGenerator.NewId()); + RuleFor(r => r.Id, _ => SnowflakeIdGenerator.NewId()); } } diff --git a/src/Services/Flight/tests/IntegrationTest/Fakes/FakeCreateAirportCommand.cs b/src/Services/Flight/tests/IntegrationTest/Fakes/FakeCreateAirportCommand.cs index 5d3827e..8d746c2 100644 --- a/src/Services/Flight/tests/IntegrationTest/Fakes/FakeCreateAirportCommand.cs +++ b/src/Services/Flight/tests/IntegrationTest/Fakes/FakeCreateAirportCommand.cs @@ -9,6 +9,6 @@ public class FakeCreateAirportCommand : AutoFaker { public FakeCreateAirportCommand() { - RuleFor(r => r.Id, _ => SnowFlakIdGenerator.NewId()); + RuleFor(r => r.Id, _ => SnowflakeIdGenerator.NewId()); } } diff --git a/src/Services/Flight/tests/IntegrationTest/Fakes/FakeCreateFlightCommand.cs b/src/Services/Flight/tests/IntegrationTest/Fakes/FakeCreateFlightCommand.cs index 7a7248d..20a133f 100644 --- a/src/Services/Flight/tests/IntegrationTest/Fakes/FakeCreateFlightCommand.cs +++ b/src/Services/Flight/tests/IntegrationTest/Fakes/FakeCreateFlightCommand.cs @@ -10,7 +10,7 @@ public sealed class FakeCreateFlightCommand : AutoFaker { public FakeCreateFlightCommand() { - RuleFor(r => r.Id, _ => SnowFlakIdGenerator.NewId()); + RuleFor(r => r.Id, _ => SnowflakeIdGenerator.NewId()); RuleFor(r => r.FlightNumber, r => r.Random.Number(1000, 2000).ToString()); RuleFor(r => r.DepartureAirportId, _ => 1); RuleFor(r => r.ArriveAirportId, _ => 2); diff --git a/src/Services/Flight/tests/IntegrationTest/Fakes/FakeCreateSeatCommand.cs b/src/Services/Flight/tests/IntegrationTest/Fakes/FakeCreateSeatCommand.cs index dbccc27..28a6fa7 100644 --- a/src/Services/Flight/tests/IntegrationTest/Fakes/FakeCreateSeatCommand.cs +++ b/src/Services/Flight/tests/IntegrationTest/Fakes/FakeCreateSeatCommand.cs @@ -10,7 +10,7 @@ public class FakeCreateSeatCommand : AutoFaker { public FakeCreateSeatCommand(long flightId) { - RuleFor(r => r.Id, _ => SnowFlakIdGenerator.NewId()); + RuleFor(r => r.Id, _ => SnowflakeIdGenerator.NewId()); RuleFor(r => r.FlightId, _ => flightId); RuleFor(r => r.Class, _ => SeatClass.Economy); RuleFor(r => r.Type, _ => SeatType.Middle); diff --git a/src/Services/Flight/tests/UnitTest/Common/SnowFlakIdGeneratorFactory.cs b/src/Services/Flight/tests/UnitTest/Common/SnowFlakIdGeneratorFactory.cs deleted file mode 100644 index 55f6062..0000000 --- a/src/Services/Flight/tests/UnitTest/Common/SnowFlakIdGeneratorFactory.cs +++ /dev/null @@ -1,11 +0,0 @@ -using BuildingBlocks.IdsGenerator; - -namespace Unit.Test.Common; - -public static class SnowFlakIdGeneratorFactory -{ - public static void Create() - { - SnowFlakIdGenerator.Configure(1); - } -} diff --git a/src/Services/Flight/tests/UnitTest/Common/UnitTestFixture.cs b/src/Services/Flight/tests/UnitTest/Common/UnitTestFixture.cs index 3a8a181..0cfea73 100644 --- a/src/Services/Flight/tests/UnitTest/Common/UnitTestFixture.cs +++ b/src/Services/Flight/tests/UnitTest/Common/UnitTestFixture.cs @@ -13,7 +13,6 @@ namespace Unit.Test.Common { public UnitTestFixture() { - SnowFlakIdGeneratorFactory.Create(); Mapper = MapperFactory.Create(); DbContext = DbContextFactory.Create(); } diff --git a/src/Services/Flight/tests/UnitTest/Fakes/FakeCreateAircraftCommand.cs b/src/Services/Flight/tests/UnitTest/Fakes/FakeCreateAircraftCommand.cs index 7111fff..35326c3 100644 --- a/src/Services/Flight/tests/UnitTest/Fakes/FakeCreateAircraftCommand.cs +++ b/src/Services/Flight/tests/UnitTest/Fakes/FakeCreateAircraftCommand.cs @@ -9,6 +9,6 @@ public class FakeCreateAircraftCommand : AutoFaker { public FakeCreateAircraftCommand() { - RuleFor(r => r.Id, _ => SnowFlakIdGenerator.NewId()); + RuleFor(r => r.Id, _ => SnowflakeIdGenerator.NewId()); } } diff --git a/src/Services/Flight/tests/UnitTest/Fakes/FakeCreateAirportCommand.cs b/src/Services/Flight/tests/UnitTest/Fakes/FakeCreateAirportCommand.cs index d9a079b..02c0be2 100644 --- a/src/Services/Flight/tests/UnitTest/Fakes/FakeCreateAirportCommand.cs +++ b/src/Services/Flight/tests/UnitTest/Fakes/FakeCreateAirportCommand.cs @@ -9,6 +9,6 @@ public class FakeCreateAirportCommand : AutoFaker { public FakeCreateAirportCommand() { - RuleFor(r => r.Id, _ => SnowFlakIdGenerator.NewId()); + RuleFor(r => r.Id, _ => SnowflakeIdGenerator.NewId()); } } diff --git a/src/Services/Flight/tests/UnitTest/Fakes/FakeCreateFlightCommand.cs b/src/Services/Flight/tests/UnitTest/Fakes/FakeCreateFlightCommand.cs index ad03ce9..7778b1d 100644 --- a/src/Services/Flight/tests/UnitTest/Fakes/FakeCreateFlightCommand.cs +++ b/src/Services/Flight/tests/UnitTest/Fakes/FakeCreateFlightCommand.cs @@ -9,7 +9,7 @@ public sealed class FakeCreateFlightCommand : AutoFaker { public FakeCreateFlightCommand() { - RuleFor(r => r.Id, _ => SnowFlakIdGenerator.NewId()); + RuleFor(r => r.Id, _ => SnowflakeIdGenerator.NewId()); RuleFor(r => r.FlightNumber, r => r.Random.Number(1000, 2000).ToString()); RuleFor(r => r.DepartureAirportId, _ => 1); RuleFor(r => r.ArriveAirportId, _ => 2); diff --git a/src/Services/Flight/tests/UnitTest/Fakes/FakeCreateSeatCommand.cs b/src/Services/Flight/tests/UnitTest/Fakes/FakeCreateSeatCommand.cs index 6276482..edc3694 100644 --- a/src/Services/Flight/tests/UnitTest/Fakes/FakeCreateSeatCommand.cs +++ b/src/Services/Flight/tests/UnitTest/Fakes/FakeCreateSeatCommand.cs @@ -10,7 +10,7 @@ public class FakeCreateSeatCommand : AutoFaker { public FakeCreateSeatCommand() { - RuleFor(r => r.Id, _ => SnowFlakIdGenerator.NewId()); + RuleFor(r => r.Id, _ => SnowflakeIdGenerator.NewId()); RuleFor(r => r.FlightId, _ => 1); RuleFor(r => r.SeatNumber, _ => "F99"); RuleFor(r => r.Type, _ => SeatType.Window); diff --git a/src/Services/Identity/src/Identity.Api/.env b/src/Services/Identity/src/Identity.Api/.env new file mode 100644 index 0000000..8f92016 --- /dev/null +++ b/src/Services/Identity/src/Identity.Api/.env @@ -0,0 +1 @@ +GENERATOR_ID=2 diff --git a/src/Services/Identity/src/Identity/Extensions/Infrastructure/InfrastructureExtensions.cs b/src/Services/Identity/src/Identity/Extensions/Infrastructure/InfrastructureExtensions.cs index ca65770..fbb7205 100644 --- a/src/Services/Identity/src/Identity/Extensions/Infrastructure/InfrastructureExtensions.cs +++ b/src/Services/Identity/src/Identity/Extensions/Infrastructure/InfrastructureExtensions.cs @@ -37,6 +37,9 @@ public static class InfrastructureExtensions var configuration = builder.Configuration; var env = builder.Environment; + // https://github.com/tonerdo/dotnet-env + DotNetEnv.Env.TraversePath().Load(); + builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); @@ -76,8 +79,6 @@ public static class InfrastructureExtensions builder.Services.AddCustomMassTransit(env, typeof(IdentityRoot).Assembly); builder.Services.AddCustomOpenTelemetry(); - SnowFlakIdGenerator.Configure(4); - builder.AddCustomIdentityServer(); builder.Services.Configure(options => diff --git a/src/Services/Passenger/src/Passenger.Api/.env b/src/Services/Passenger/src/Passenger.Api/.env new file mode 100644 index 0000000..2b3b264 --- /dev/null +++ b/src/Services/Passenger/src/Passenger.Api/.env @@ -0,0 +1 @@ +GENERATOR_ID=3 diff --git a/src/Services/Passenger/src/Passenger.Api/Passenger.Api.csproj b/src/Services/Passenger/src/Passenger.Api/Passenger.Api.csproj index 347e509..91eafd6 100644 --- a/src/Services/Passenger/src/Passenger.Api/Passenger.Api.csproj +++ b/src/Services/Passenger/src/Passenger.Api/Passenger.Api.csproj @@ -6,7 +6,7 @@ - + diff --git a/src/Services/Passenger/src/Passenger/Extensions/Infrastructure/InfrastructureExtensions.cs b/src/Services/Passenger/src/Passenger/Extensions/Infrastructure/InfrastructureExtensions.cs index 2228c13..8b58126 100644 --- a/src/Services/Passenger/src/Passenger/Extensions/Infrastructure/InfrastructureExtensions.cs +++ b/src/Services/Passenger/src/Passenger/Extensions/Infrastructure/InfrastructureExtensions.cs @@ -37,6 +37,9 @@ public static class InfrastructureExtensions var configuration = builder.Configuration; var env = builder.Environment; + // https://github.com/tonerdo/dotnet-env + DotNetEnv.Env.TraversePath().Load(); + builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); @@ -81,8 +84,6 @@ public static class InfrastructureExtensions options.Interceptors.Add(); }); - SnowFlakIdGenerator.Configure(2); - return builder; } diff --git a/src/Services/Passenger/src/Passenger/Identity/Consumers/RegisteringNewUser/V1/RegisterNewUser.cs b/src/Services/Passenger/src/Passenger/Identity/Consumers/RegisteringNewUser/V1/RegisterNewUser.cs index 590dd5f..08c417c 100644 --- a/src/Services/Passenger/src/Passenger/Identity/Consumers/RegisteringNewUser/V1/RegisterNewUser.cs +++ b/src/Services/Passenger/src/Passenger/Identity/Consumers/RegisteringNewUser/V1/RegisterNewUser.cs @@ -45,7 +45,7 @@ public class RegisterNewUserHandler : IConsumer return; } - var passenger = Passengers.Models.Passenger.Create(SnowFlakIdGenerator.NewId(), context.Message.Name, + var passenger = Passengers.Models.Passenger.Create(SnowflakeIdGenerator.NewId(), context.Message.Name, context.Message.PassportNumber); await _passengerDbContext.AddAsync(passenger); diff --git a/src/Services/Passenger/src/Passenger/Passengers/Features/CompletingRegisterPassenger/V1/CompleteRegisterPassenger.cs b/src/Services/Passenger/src/Passenger/Passengers/Features/CompletingRegisterPassenger/V1/CompleteRegisterPassenger.cs index 95d03fe..62411ea 100644 --- a/src/Services/Passenger/src/Passenger/Passengers/Features/CompletingRegisterPassenger/V1/CompleteRegisterPassenger.cs +++ b/src/Services/Passenger/src/Passenger/Passengers/Features/CompletingRegisterPassenger/V1/CompleteRegisterPassenger.cs @@ -13,7 +13,7 @@ using Dtos; public record CompleteRegisterPassenger(string PassportNumber, Enums.PassengerType PassengerType, int Age) : ICommand, IInternalCommand { - public long Id { get; init; } = SnowFlakIdGenerator.NewId(); + public long Id { get; init; } = SnowflakeIdGenerator.NewId(); } public record CompleteRegisterPassengerResult(PassengerDto PassengerDto); diff --git a/src/Services/Passenger/src/Passenger/Passengers/Features/PassengerMappings.cs b/src/Services/Passenger/src/Passenger/Passengers/Features/PassengerMappings.cs index 501183c..42bcbc3 100644 --- a/src/Services/Passenger/src/Passenger/Passengers/Features/PassengerMappings.cs +++ b/src/Services/Passenger/src/Passenger/Passengers/Features/PassengerMappings.cs @@ -11,7 +11,7 @@ public class PassengerMappings : IRegister public void Register(TypeAdapterConfig config) { config.NewConfig() - .Map(d => d.Id, s => SnowFlakIdGenerator.NewId()) + .Map(d => d.Id, s => SnowflakeIdGenerator.NewId()) .Map(d => d.PassengerId, s => s.Id); config.NewConfig() diff --git a/src/Services/Passenger/tests/IntegrationTest/Fakes/FakeCompleteRegisterPassengerCommand.cs b/src/Services/Passenger/tests/IntegrationTest/Fakes/FakeCompleteRegisterPassengerCommand.cs index 4840817..1ce809b 100644 --- a/src/Services/Passenger/tests/IntegrationTest/Fakes/FakeCompleteRegisterPassengerCommand.cs +++ b/src/Services/Passenger/tests/IntegrationTest/Fakes/FakeCompleteRegisterPassengerCommand.cs @@ -10,7 +10,7 @@ public sealed class FakeCompleteRegisterPassengerCommand : AutoFaker r.Id, _ => SnowFlakIdGenerator.NewId()); + RuleFor(r => r.Id, _ => SnowflakeIdGenerator.NewId()); RuleFor(r => r.PassportNumber, _ => passportNumber); RuleFor(r => r.PassengerType, _ => PassengerType.Male); RuleFor(r => r.Age, _ => 30); diff --git a/src/Services/Passenger/tests/IntegrationTest/Fakes/FakePassengerCreated.cs b/src/Services/Passenger/tests/IntegrationTest/Fakes/FakePassengerCreated.cs index 925d566..2a84a36 100644 --- a/src/Services/Passenger/tests/IntegrationTest/Fakes/FakePassengerCreated.cs +++ b/src/Services/Passenger/tests/IntegrationTest/Fakes/FakePassengerCreated.cs @@ -7,6 +7,6 @@ public static class FakePassengerCreated { public static global::Passenger.Passengers.Models.Passenger Generate(UserCreated userCreated) { - return global::Passenger.Passengers.Models.Passenger.Create(SnowFlakIdGenerator.NewId(), userCreated.Name, userCreated.PassportNumber); + return global::Passenger.Passengers.Models.Passenger.Create(SnowflakeIdGenerator.NewId(), userCreated.Name, userCreated.PassportNumber); } } diff --git a/src/Services/Passenger/tests/IntegrationTest/Fakes/FakePassengerResponseDto.cs b/src/Services/Passenger/tests/IntegrationTest/Fakes/FakePassengerResponseDto.cs index 791bcdd..a525e8a 100644 --- a/src/Services/Passenger/tests/IntegrationTest/Fakes/FakePassengerResponseDto.cs +++ b/src/Services/Passenger/tests/IntegrationTest/Fakes/FakePassengerResponseDto.cs @@ -8,6 +8,6 @@ public class FakePassengerResponse : AutoFaker { public FakePassengerResponse() { - RuleFor(r => r.Id, _ => SnowFlakIdGenerator.NewId()); + RuleFor(r => r.Id, _ => SnowflakeIdGenerator.NewId()); } -} \ No newline at end of file +} diff --git a/src/Services/Passenger/tests/IntegrationTest/Fakes/FakeUserCreated.cs b/src/Services/Passenger/tests/IntegrationTest/Fakes/FakeUserCreated.cs index 0ff69d0..e4b9fa3 100644 --- a/src/Services/Passenger/tests/IntegrationTest/Fakes/FakeUserCreated.cs +++ b/src/Services/Passenger/tests/IntegrationTest/Fakes/FakeUserCreated.cs @@ -8,7 +8,7 @@ public class FakeUserCreated : AutoFaker { public FakeUserCreated() { - RuleFor(r => r.Id, _ => SnowFlakIdGenerator.NewId()); + RuleFor(r => r.Id, _ => SnowflakeIdGenerator.NewId()); RuleFor(r => r.Name, _ => "Sam"); RuleFor(r => r.PassportNumber, _ => "123456789"); }