Skip to content

Commit

Permalink
Improve DI for legacy sample
Browse files Browse the repository at this point in the history
  • Loading branch information
KevinDockx committed Sep 25, 2018
1 parent 63ab80e commit bf1ead2
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 10 deletions.
19 changes: 12 additions & 7 deletions Books/Books.Api/Controllers/BooksController.cs
@@ -1,6 +1,7 @@
using AutoMapper;
using Books.Api.Models;
using Books.Api.Services;
using Books.Legacy;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using System;
Expand All @@ -15,14 +16,18 @@ public class BooksController : ControllerBase
private readonly IBooksRepository _booksRepository;
private readonly IMapper _mapper;
private readonly ILogger<BooksController> _logger;
private readonly ComplicatedPageCalculator _complicatedPageCalculator;

public BooksController(IBooksRepository booksRepository,
IMapper mapper, ILogger<BooksController> logger)
IMapper mapper, ILogger<BooksController> logger,
ComplicatedPageCalculator complicatedPageCalculator)
{
_booksRepository = booksRepository
?? throw new ArgumentNullException(nameof(booksRepository));
_mapper = mapper ?? throw new ArgumentNullException(nameof(mapper));
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
_complicatedPageCalculator = complicatedPageCalculator ??
throw new ArgumentNullException(nameof(complicatedPageCalculator));
}

[HttpGet]
Expand All @@ -39,12 +44,12 @@ public async Task<IActionResult> GetBook(Guid id)

// calculate the book pages
// DON'T DO THIS, this is sample code for a bad practice!
_logger.LogInformation($"ThreadId when entering GetBookAsync: {System.Threading.Thread.CurrentThread.ManagedThreadId}");
_logger.LogInformation($"ThreadId when entering GetBook: " +
$"{System.Threading.Thread.CurrentThread.ManagedThreadId}");
var bookPages = await GetBookPages(id);

// good way to call legacy computational-bound code is by NOT offloading it to the background
//var pageCalculator = new Books.Legacy.ComplicatedPageCalculator();
//var bookPages = pageCalculator.CalculateBookPages(id);
//var bookPages = _complicatedPageCalculator.CalculateBookPages(id);

return Ok(_mapper.Map<Models.Book>(bookEntity));
}
Expand All @@ -59,10 +64,10 @@ private Task<int> GetBookPages(Guid id)
{
return Task.Run(() =>
{
_logger.LogInformation($"ThreadId when calculating the amount of pages: {System.Threading.Thread.CurrentThread.ManagedThreadId}");
_logger.LogInformation($"ThreadId when calculating the amount of pages: " +
$"{System.Threading.Thread.CurrentThread.ManagedThreadId}");
var pageCalculator = new Books.Legacy.ComplicatedPageCalculator();
return pageCalculator.CalculateBookPages(id);
return _complicatedPageCalculator.CalculateBookPages(id);
});
}

Expand Down
2 changes: 1 addition & 1 deletion Books/Books.Api/Migrations/InitialMigration.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 1 addition & 2 deletions Books/Books.Api/Services/BooksRepository.cs
Expand Up @@ -3,7 +3,6 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using System;
using System.Net.Http;
using System.Threading.Tasks;

namespace Books.Api.Services
Expand All @@ -13,7 +12,7 @@ public class BooksRepository : IBooksRepository, IDisposable
private BooksContext _context;
private readonly ILogger<BooksRepository> _logger;

public BooksRepository(BooksContext context, IHttpClientFactory httpClientFactory,
public BooksRepository(BooksContext context,
ILogger<BooksRepository> logger)
{
_context = context ?? throw new ArgumentNullException(nameof(context));
Expand Down
3 changes: 3 additions & 0 deletions Books/Books.Api/Startup.cs
@@ -1,6 +1,7 @@
using AutoMapper;
using Books.Api.Contexts;
using Books.Api.Services;
using Books.Legacy;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
Expand Down Expand Up @@ -32,6 +33,8 @@ public void ConfigureServices(IServiceCollection services)

services.AddScoped<IBooksRepository, BooksRepository>();

services.AddTransient<ComplicatedPageCalculator>();

services.AddAutoMapper();
}

Expand Down

0 comments on commit bf1ead2

Please sign in to comment.