Small performance enhancement on fetching library only once.

This commit is contained in:
Joseph Milazzo 2021-02-10 12:36:25 -06:00
parent a501e50c98
commit 5b5c1e758f

View File

@ -74,9 +74,8 @@ namespace API.Services
Cleanup(); Cleanup();
Library library; Library library;
try try
{ {
// TODO: Use expensive library lookup here and pass to UpdateLibrary so we aren't querying twice library = Task.Run(() => _unitOfWork.LibraryRepository.GetFullLibraryForIdAsync(libraryId)).Result;
library = Task.Run(() => _unitOfWork.LibraryRepository.GetLibraryForIdAsync(libraryId)).Result;
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -130,7 +129,7 @@ namespace API.Services
var filtered = _scannedSeries.Where(kvp => kvp.Value.Count != 0); var filtered = _scannedSeries.Where(kvp => kvp.Value.Count != 0);
var series = filtered.ToDictionary(v => v.Key, v => v.Value); var series = filtered.ToDictionary(v => v.Key, v => v.Value);
UpdateLibrary(libraryId, series); UpdateLibrary(library, series);
_unitOfWork.LibraryRepository.Update(library); _unitOfWork.LibraryRepository.Update(library);
if (Task.Run(() => _unitOfWork.Complete()).Result) if (Task.Run(() => _unitOfWork.Complete()).Result)
@ -146,10 +145,9 @@ namespace API.Services
_logger.LogInformation("Processed {TotalFiles} files in {ElapsedScanTime} milliseconds for {LibraryName}", totalFiles, sw.ElapsedMilliseconds + scanElapsedTime, library.Name); _logger.LogInformation("Processed {TotalFiles} files in {ElapsedScanTime} milliseconds for {LibraryName}", totalFiles, sw.ElapsedMilliseconds + scanElapsedTime, library.Name);
} }
private void UpdateLibrary(int libraryId, Dictionary<string, List<ParserInfo>> parsedSeries) private void UpdateLibrary(Library library, Dictionary<string, List<ParserInfo>> parsedSeries)
{ {
var library = Task.Run(() => _unitOfWork.LibraryRepository.GetFullLibraryForIdAsync(libraryId)).Result; // TODO: Split this into multiple threads
// First, remove any series that are not in parsedSeries list // First, remove any series that are not in parsedSeries list
var foundSeries = parsedSeries.Select(s => Parser.Parser.Normalize(s.Key)).ToList(); var foundSeries = parsedSeries.Select(s => Parser.Parser.Normalize(s.Key)).ToList();
var missingSeries = library.Series.Where(existingSeries => var missingSeries = library.Series.Where(existingSeries =>