diff --git a/src/SanctionsSearch.Worker.Tests/Integration/AddressRepositoryTests.cs b/src/SanctionsSearch.Worker.Tests/Integration/AddressRepositoryTests.cs index 79cb683..fa93fb4 100644 --- a/src/SanctionsSearch.Worker.Tests/Integration/AddressRepositoryTests.cs +++ b/src/SanctionsSearch.Worker.Tests/Integration/AddressRepositoryTests.cs @@ -14,7 +14,7 @@ public class AddressRepositoryTests : RepositoryTest public async Task Upsert_WithNewEntity_ShouldAddEntityToDatabase() { var now = DateTimeOffset.UtcNow; - _timeProvider.Setup(x => x.GetUtcNow()).Returns(now); + _timeProviderMock.Setup(x => x.GetUtcNow()).Returns(now); var entity = _faker.Generate(); entity.SdnId = SdnId; @@ -35,7 +35,7 @@ public class AddressRepositoryTests : RepositoryTest var createdTimeStamp = DateTimeOffset.UtcNow; var updatedTimeStamp = createdTimeStamp.AddSeconds(2); - _timeProvider.Setup(x => x.GetUtcNow()).Returns(createdTimeStamp); + _timeProviderMock.Setup(x => x.GetUtcNow()).Returns(createdTimeStamp); var entity = _faker.Generate(); entity.SdnId = SdnId; @@ -51,7 +51,7 @@ public class AddressRepositoryTests : RepositoryTest createdEntity!.CreatedAt.Should().Be(createdTimeStamp.DateTime); createdEntity.UpdatedAt.Should().Be(createdTimeStamp.DateTime); - _timeProvider.Setup(x => x.GetUtcNow()).Returns(updatedTimeStamp); + _timeProviderMock.Setup(x => x.GetUtcNow()).Returns(updatedTimeStamp); // Update the entity entity.StreetAddress = "Updated"; diff --git a/src/SanctionsSearch.Worker.Tests/Integration/AliasRepositoryTests.cs b/src/SanctionsSearch.Worker.Tests/Integration/AliasRepositoryTests.cs index 73540ba..fd96263 100644 --- a/src/SanctionsSearch.Worker.Tests/Integration/AliasRepositoryTests.cs +++ b/src/SanctionsSearch.Worker.Tests/Integration/AliasRepositoryTests.cs @@ -14,7 +14,7 @@ public class AliasRepositoryTests : RepositoryTest public async Task Upsert_WithNewEntity_ShouldAddEntityToDatabase() { var now = DateTimeOffset.UtcNow; - _timeProvider.Setup(x => x.GetUtcNow()).Returns(now); + _timeProviderMock.Setup(x => x.GetUtcNow()).Returns(now); var entity = _faker.Generate(); entity.SdnId = SdnId; @@ -35,7 +35,7 @@ public class AliasRepositoryTests : RepositoryTest var createdTimeStamp = DateTimeOffset.UtcNow; var updatedTimeStamp = createdTimeStamp.AddSeconds(2); - _timeProvider.Setup(x => x.GetUtcNow()).Returns(createdTimeStamp); + _timeProviderMock.Setup(x => x.GetUtcNow()).Returns(createdTimeStamp); var entity = _faker.Generate(); entity.SdnId = SdnId; @@ -51,7 +51,7 @@ public class AliasRepositoryTests : RepositoryTest createdEntity!.CreatedAt.Should().Be(createdTimeStamp.DateTime); createdEntity.UpdatedAt.Should().Be(createdTimeStamp.DateTime); - _timeProvider.Setup(x => x.GetUtcNow()).Returns(updatedTimeStamp); + _timeProviderMock.Setup(x => x.GetUtcNow()).Returns(updatedTimeStamp); // Update the entity entity.Remarks = "Updated"; diff --git a/src/SanctionsSearch.Worker.Tests/Integration/CommentRepositoryTests.cs b/src/SanctionsSearch.Worker.Tests/Integration/CommentRepositoryTests.cs index c495bad..6435b29 100644 --- a/src/SanctionsSearch.Worker.Tests/Integration/CommentRepositoryTests.cs +++ b/src/SanctionsSearch.Worker.Tests/Integration/CommentRepositoryTests.cs @@ -14,7 +14,7 @@ public class CommentRepositoryTests : RepositoryTest public async Task Upsert_WithNewEntity_ShouldAddEntityToDatabase() { var now = DateTimeOffset.UtcNow; - _timeProvider.Setup(x => x.GetUtcNow()).Returns(now); + _timeProviderMock.Setup(x => x.GetUtcNow()).Returns(now); var entity = _faker.Generate(); entity.SdnId = SdnId; @@ -35,7 +35,7 @@ public class CommentRepositoryTests : RepositoryTest var createdTimeStamp = DateTimeOffset.UtcNow; var updatedTimeStamp = createdTimeStamp.AddSeconds(2); - _timeProvider.Setup(x => x.GetUtcNow()).Returns(createdTimeStamp); + _timeProviderMock.Setup(x => x.GetUtcNow()).Returns(createdTimeStamp); var entity = _faker.Generate(); entity.SdnId = SdnId; @@ -51,7 +51,7 @@ public class CommentRepositoryTests : RepositoryTest createdEntity!.CreatedAt.Should().Be(createdTimeStamp.DateTime); createdEntity.UpdatedAt.Should().Be(createdTimeStamp.DateTime); - _timeProvider.Setup(x => x.GetUtcNow()).Returns(updatedTimeStamp); + _timeProviderMock.Setup(x => x.GetUtcNow()).Returns(updatedTimeStamp); // Update the entity entity.Remarks = "Updated"; diff --git a/src/SanctionsSearch.Worker.Tests/Integration/DatabaseTest.cs b/src/SanctionsSearch.Worker.Tests/Integration/DatabaseTest.cs new file mode 100644 index 0000000..2f62df1 --- /dev/null +++ b/src/SanctionsSearch.Worker.Tests/Integration/DatabaseTest.cs @@ -0,0 +1,33 @@ +namespace SanctionsSearch.Worker.Tests.Integration; + +public class DatabaseTest : IAsyncLifetime +{ + private readonly AppDbContext _appDbContext; + protected readonly Mock _timeProviderMock = new(); + protected readonly DbContext _context; + protected readonly ILoggerFactory _loggerFactory = LoggerFactory.Create(builder => builder.ClearProviders()); + + + public DatabaseTest() + { + var options = new DbOptions { DatabaseName = $"{Guid.NewGuid()}.db" }; + var context = new AppDbContext(options, _timeProviderMock.Object); + + _appDbContext = context; + _context = context; + } + + public virtual async Task InitializeAsync() + { + await _context.Database.MigrateAsync(); + } + + public virtual async Task DisposeAsync() + { + await _appDbContext.DisposeAsync(); + + SqliteConnection.ClearAllPools(); + + File.Delete(_appDbContext.DatabasePath); + } +} \ No newline at end of file diff --git a/src/SanctionsSearch.Worker.Tests/Integration/EfUnitOfWorkTests.cs b/src/SanctionsSearch.Worker.Tests/Integration/EfUnitOfWorkTests.cs new file mode 100644 index 0000000..2ce61f3 --- /dev/null +++ b/src/SanctionsSearch.Worker.Tests/Integration/EfUnitOfWorkTests.cs @@ -0,0 +1,81 @@ +namespace SanctionsSearch.Worker.Tests.Integration; + +public class EfUnitOfWorkTests : DatabaseTest +{ + private readonly EfUnitOfWork _uow; + private readonly SdnFaker _sdnFaker = new(); + private readonly AddressFaker _addressFaker = new(); + private readonly AliasFaker _aliasFaker = new(); + private readonly CommentFaker _commentFaker = new(); + + public EfUnitOfWorkTests() + { + var logger = LoggerFactory.Create(c => c.ClearProviders()); + + _uow = new(_context, logger); + } + + [Fact] + public async Task SaveChangesAsync_WhenCalled_ItShouldPersistChangesToDatabase() + { + var now = DateTimeOffset.UtcNow; + + _timeProviderMock + .Setup(m => m.GetUtcNow()) + .Returns(now); + + var sdn = _sdnFaker.Generate(); + + var address = _addressFaker.Generate(); + address.SdnId = sdn.Id; + + var alias = _aliasFaker.Generate(); + alias.SdnId = sdn.Id; + + var comment = _commentFaker.Generate(); + comment.SdnId = sdn.Id; + + await _uow.Sdns.Upsert(sdn); + await _uow.Addresses.Upsert(address); + await _uow.Aliases.Upsert(alias); + await _uow.Comments.Upsert(comment); + await _uow.SaveChangesAsync(); + + var savedSdn = await _context.Set() + .Include(s => s.Addresses) + .Include(s => s.Aliases) + .Include(s => s.Comments) + .FirstOrDefaultAsync(); + + savedSdn.Should().NotBeNull(); + savedSdn.Should().BeEquivalentTo( + sdn, + opts => opts + .Excluding(s => s.Addresses) + .Excluding(s => s.Aliases) + .Excluding(s => s.Comments) + ); + + savedSdn!.Addresses.Should().HaveCount(1); + savedSdn.Aliases.Should().HaveCount(1); + savedSdn.Comments.Should().HaveCount(1); + + var savedAddress = savedSdn.Addresses.First(a => a.Id == address.Id); + var savedAlias = savedSdn.Aliases.First(a => a.Id == alias.Id); + var savedComment = savedSdn.Comments.First(a => a.Id == comment.Id); + + savedAddress.Should().BeEquivalentTo(address); + savedAlias.Should().BeEquivalentTo(alias); + savedComment.Should().BeEquivalentTo(comment); + } + + [Fact] + public async Task DisposeAsync_WhenCalled_ItShouldDisposeContext() + { + await _uow.DisposeAsync(); + + var action = () => _context.SaveChangesAsync(); + + await action.Should().ThrowAsync(); + } +} \ No newline at end of file diff --git a/src/SanctionsSearch.Worker.Tests/Integration/RepositoryTest.cs b/src/SanctionsSearch.Worker.Tests/Integration/RepositoryTest.cs index d65d770..e1f8ca6 100644 --- a/src/SanctionsSearch.Worker.Tests/Integration/RepositoryTest.cs +++ b/src/SanctionsSearch.Worker.Tests/Integration/RepositoryTest.cs @@ -1,38 +1,25 @@ namespace SanctionsSearch.Worker.Tests.Integration; -public class RepositoryTest : IAsyncLifetime +public class RepositoryTest : DatabaseTest, IAsyncLifetime { - private readonly AppDbContext _appDbContext; private readonly SdnFaker _faker = new(); private readonly Sdn _sdn; - protected readonly Mock _timeProvider = new(); - protected readonly DbContext _context; protected int SdnId => _sdn.Id; - protected readonly ILoggerFactory _loggerFactory = LoggerFactory.Create(builder => builder.ClearProviders()); public RepositoryTest() { - var options = new DbOptions { DatabaseName = $"{Guid.NewGuid()}.db" }; - var context = new AppDbContext(options, _timeProvider.Object); - - _appDbContext = context; - _context = context; _sdn = _faker.Generate(); _sdn.Id = SdnFaker.ReservedId; } - public async Task InitializeAsync() + public override async Task InitializeAsync() { - await _context.Database.MigrateAsync(); + await base.InitializeAsync(); await _context.Set().AddAsync(_sdn); } - public async Task DisposeAsync() + public override async Task DisposeAsync() { - await _appDbContext.DisposeAsync(); - - SqliteConnection.ClearAllPools(); - - File.Delete(_appDbContext.DatabasePath); + await base.DisposeAsync(); } } \ No newline at end of file diff --git a/src/SanctionsSearch.Worker.Tests/Integration/SdnRepositoryTests.cs b/src/SanctionsSearch.Worker.Tests/Integration/SdnRepositoryTests.cs index b94f318..58d7d91 100644 --- a/src/SanctionsSearch.Worker.Tests/Integration/SdnRepositoryTests.cs +++ b/src/SanctionsSearch.Worker.Tests/Integration/SdnRepositoryTests.cs @@ -14,7 +14,7 @@ public class SdnRepositoryTests : RepositoryTest public async Task Upsert_WithNewEntity_ShouldAddEntityToDatabase() { var now = DateTimeOffset.UtcNow; - _timeProvider.Setup(x => x.GetUtcNow()).Returns(now); + _timeProviderMock.Setup(x => x.GetUtcNow()).Returns(now); var entity = _faker.Generate(); @@ -34,7 +34,7 @@ public class SdnRepositoryTests : RepositoryTest var createdTimeStamp = DateTimeOffset.UtcNow; var updatedTimeStamp = createdTimeStamp.AddSeconds(2); - _timeProvider.Setup(x => x.GetUtcNow()).Returns(createdTimeStamp); + _timeProviderMock.Setup(x => x.GetUtcNow()).Returns(createdTimeStamp); var entity = _faker.Generate(); @@ -49,7 +49,7 @@ public class SdnRepositoryTests : RepositoryTest createdEntity!.CreatedAt.Should().Be(createdTimeStamp.DateTime); createdEntity.UpdatedAt.Should().Be(createdTimeStamp.DateTime); - _timeProvider.Setup(x => x.GetUtcNow()).Returns(updatedTimeStamp); + _timeProviderMock.Setup(x => x.GetUtcNow()).Returns(updatedTimeStamp); // Update the entity entity.Name = "Updated"; diff --git a/src/SanctionsSearch.Worker.Tests/Unit/EfUnitOfWorkTests.cs b/src/SanctionsSearch.Worker.Tests/Unit/EfUnitOfWorkTests.cs new file mode 100644 index 0000000..f0cb2d1 --- /dev/null +++ b/src/SanctionsSearch.Worker.Tests/Unit/EfUnitOfWorkTests.cs @@ -0,0 +1,37 @@ +namespace SanctionsSearch.Worker.Tests.Unit; + +public class EfUnitOfWorkTests +{ + private readonly Mock _context = new(); + private readonly Mock _loggerFactory = new(); + private readonly EfUnitOfWork _unitOfWork; + + public EfUnitOfWorkTests() + { + _unitOfWork = new(_context.Object, _loggerFactory.Object); + } + + [Fact] + public void Sdns_WhenCalled_ShouldReturnSdnRepository() + { + _unitOfWork.Sdns.Should().BeOfType(); + } + + [Fact] + public void Addresses_WhenCalled_ShouldReturnAddressRepository() + { + _unitOfWork.Addresses.Should().BeOfType(); + } + + [Fact] + public void Aliases_WhenCalled_ShouldReturnAliasRepository() + { + _unitOfWork.Aliases.Should().BeOfType(); + } + + [Fact] + public void Comments_WhenCalled_ShouldReturnCommentRepository() + { + _unitOfWork.Comments.Should().BeOfType(); + } +} \ No newline at end of file diff --git a/src/SanctionsSearch.Worker/Migrations/20240822235325_add_addresses_and_comments_to_sdn.Designer.cs b/src/SanctionsSearch.Worker/Migrations/20240822235325_add_addresses_and_comments_to_sdn.Designer.cs new file mode 100644 index 0000000..22491f5 --- /dev/null +++ b/src/SanctionsSearch.Worker/Migrations/20240822235325_add_addresses_and_comments_to_sdn.Designer.cs @@ -0,0 +1,226 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using SanctionsSearch.Worker.Persistence; + +#nullable disable + +namespace SanctionsSearch.Worker.Migrations +{ + [DbContext(typeof(AppDbContext))] + [Migration("20240822235325_add_addresses_and_comments_to_sdn")] + partial class add_addresses_and_comments_to_sdn + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder.HasAnnotation("ProductVersion", "8.0.8"); + + modelBuilder.Entity("SanctionsSearch.Worker.Models.Address", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CityProvincePostal") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Country") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("CreatedAt") + .HasColumnType("TEXT"); + + b.Property("Remarks") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("SdnId") + .HasColumnType("INTEGER"); + + b.Property("StreetAddress") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("UpdatedAt") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("SdnId"); + + b.ToTable("Addresses"); + }); + + modelBuilder.Entity("SanctionsSearch.Worker.Models.Alias", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CreatedAt") + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Remarks") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("SdnId") + .HasColumnType("INTEGER"); + + b.Property("Type") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("UpdatedAt") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("SdnId"); + + b.ToTable("Aliases"); + }); + + modelBuilder.Entity("SanctionsSearch.Worker.Models.Comment", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CreatedAt") + .HasColumnType("TEXT"); + + b.Property("Remarks") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("SdnId") + .HasColumnType("INTEGER"); + + b.Property("UpdatedAt") + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.HasIndex("SdnId"); + + b.ToTable("Comments"); + }); + + modelBuilder.Entity("SanctionsSearch.Worker.Models.Sdn", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("INTEGER"); + + b.Property("CallSign") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("CreatedAt") + .HasColumnType("TEXT"); + + b.Property("GrossRegisteredTonnage") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Name") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Program") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Remarks") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Title") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Tonnage") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("Type") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("UpdatedAt") + .HasColumnType("TEXT"); + + b.Property("VesselFlag") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("VesselOwner") + .IsRequired() + .HasColumnType("TEXT"); + + b.Property("VesselType") + .IsRequired() + .HasColumnType("TEXT"); + + b.HasKey("Id"); + + b.ToTable("Sdns"); + }); + + modelBuilder.Entity("SanctionsSearch.Worker.Models.Address", b => + { + b.HasOne("SanctionsSearch.Worker.Models.Sdn", "Sdn") + .WithMany("Addresses") + .HasForeignKey("SdnId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Sdn"); + }); + + modelBuilder.Entity("SanctionsSearch.Worker.Models.Alias", b => + { + b.HasOne("SanctionsSearch.Worker.Models.Sdn", "Sdn") + .WithMany("Aliases") + .HasForeignKey("SdnId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Sdn"); + }); + + modelBuilder.Entity("SanctionsSearch.Worker.Models.Comment", b => + { + b.HasOne("SanctionsSearch.Worker.Models.Sdn", "Sdn") + .WithMany("Comments") + .HasForeignKey("SdnId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Sdn"); + }); + + modelBuilder.Entity("SanctionsSearch.Worker.Models.Sdn", b => + { + b.Navigation("Addresses"); + + b.Navigation("Aliases"); + + b.Navigation("Comments"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/src/SanctionsSearch.Worker/Migrations/20240822235325_add_addresses_and_comments_to_sdn.cs b/src/SanctionsSearch.Worker/Migrations/20240822235325_add_addresses_and_comments_to_sdn.cs new file mode 100644 index 0000000..c3f528b --- /dev/null +++ b/src/SanctionsSearch.Worker/Migrations/20240822235325_add_addresses_and_comments_to_sdn.cs @@ -0,0 +1,22 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace SanctionsSearch.Worker.Migrations +{ + /// + public partial class add_addresses_and_comments_to_sdn : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + + } + } +} diff --git a/src/SanctionsSearch.Worker/Migrations/AppDbContextModelSnapshot.cs b/src/SanctionsSearch.Worker/Migrations/AppDbContextModelSnapshot.cs index 7b61329..c6ffcd8 100644 --- a/src/SanctionsSearch.Worker/Migrations/AppDbContextModelSnapshot.cs +++ b/src/SanctionsSearch.Worker/Migrations/AppDbContextModelSnapshot.cs @@ -179,7 +179,7 @@ namespace SanctionsSearch.Worker.Migrations modelBuilder.Entity("SanctionsSearch.Worker.Models.Address", b => { b.HasOne("SanctionsSearch.Worker.Models.Sdn", "Sdn") - .WithMany() + .WithMany("Addresses") .HasForeignKey("SdnId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); @@ -201,7 +201,7 @@ namespace SanctionsSearch.Worker.Migrations modelBuilder.Entity("SanctionsSearch.Worker.Models.Comment", b => { b.HasOne("SanctionsSearch.Worker.Models.Sdn", "Sdn") - .WithMany() + .WithMany("Comments") .HasForeignKey("SdnId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); @@ -211,7 +211,11 @@ namespace SanctionsSearch.Worker.Migrations modelBuilder.Entity("SanctionsSearch.Worker.Models.Sdn", b => { + b.Navigation("Addresses"); + b.Navigation("Aliases"); + + b.Navigation("Comments"); }); #pragma warning restore 612, 618 } diff --git a/src/SanctionsSearch.Worker/Models/Sdn.cs b/src/SanctionsSearch.Worker/Models/Sdn.cs index 8499e3d..f3f5f02 100644 --- a/src/SanctionsSearch.Worker/Models/Sdn.cs +++ b/src/SanctionsSearch.Worker/Models/Sdn.cs @@ -14,5 +14,7 @@ class Sdn : Entity public string VesselOwner { get; set; } = string.Empty; public string Remarks { get; set; } = string.Empty; + public virtual ICollection
Addresses { get; set; } = []; public virtual ICollection Aliases { get; set; } = []; + public virtual ICollection Comments { get; set; } = []; } \ No newline at end of file diff --git a/src/SanctionsSearch.Worker/Persistence/EfUnitOfWork.cs b/src/SanctionsSearch.Worker/Persistence/EfUnitOfWork.cs index 8cb60b8..65e632c 100644 --- a/src/SanctionsSearch.Worker/Persistence/EfUnitOfWork.cs +++ b/src/SanctionsSearch.Worker/Persistence/EfUnitOfWork.cs @@ -1,8 +1,8 @@ namespace SanctionsSearch.Worker.Persistence; -class EfUnitOfWork(AppDbContext context, ILoggerFactory loggerFactory) : IUnitOfWork, IAsyncDisposable +class EfUnitOfWork(DbContext context, ILoggerFactory loggerFactory) : IUnitOfWork, IAsyncDisposable { - private readonly AppDbContext _context = context; + private readonly DbContext _context = context; public ISdnRepository Sdns { get; } = new SdnRepository(context, loggerFactory.CreateLogger()); public IAddressRepository Addresses { get; } = new AddressRepository(context, loggerFactory.CreateLogger()); public IAliasRepository Aliases { get; } = new AliasRepository(context, loggerFactory.CreateLogger()); diff --git a/src/SanctionsSearch.Worker/Program.cs b/src/SanctionsSearch.Worker/Program.cs index 2a57a86..6de4e60 100644 --- a/src/SanctionsSearch.Worker/Program.cs +++ b/src/SanctionsSearch.Worker/Program.cs @@ -63,14 +63,14 @@ class Program builder.Services.AddScoped(rs => rs.GetRequiredService>().Value); builder.Services.AddSingleton(TimeProvider.System); - builder.Services.AddScoped(); + // builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); - builder.Services.AddDbContext(); + builder.Services.AddDbContext(); builder.Services.AddHostedService();