Cleanup after feature implementation.

This commit is contained in:
Joseph Milazzo 2021-02-04 17:01:37 -06:00
parent 1050fa4e54
commit 10c8ea34fe
19 changed files with 23 additions and 80 deletions

View File

@ -1,7 +1,4 @@
using System; using API.Helpers.Converters;
using API.Helpers.Converters;
using AutoMapper;
using Hangfire;
using Xunit; using Xunit;
using Xunit.Abstractions; using Xunit.Abstractions;

View File

@ -1,6 +1,4 @@
using System.Collections.Generic; using API.Interfaces;
using API.Entities;
using API.Interfaces;
using API.Services; using API.Services;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using NSubstitute; using NSubstitute;

View File

@ -1,23 +0,0 @@
using System.IO;
using API.Interfaces;
using API.Services;
using Microsoft.Extensions.Logging;
using NSubstitute;
using Xunit;
namespace API.Tests.Services
{
public class ScannerServiceTests
{
// private readonly ScannerService _scannerService;
// private readonly ILogger<ScannerService> _logger = Substitute.For<ILogger<ScannerService>>();
// private readonly IUnitOfWork _unitOfWork = Substitute.For<IUnitOfWork>();
// private readonly string _testDirectory = Path.Join(Directory.GetCurrentDirectory(), "../../../Services/Test Data/ScannerService");
// public ScannerServiceTests()
// {
// _scannerService = new ScannerService(_unitOfWork, _logger);
// }
}
}

View File

@ -145,7 +145,7 @@ namespace API.Controllers
[HttpPost("scan")] [HttpPost("scan")]
public ActionResult Scan(int libraryId) public ActionResult Scan(int libraryId)
{ {
_taskScheduler.ScanLibrary(libraryId, false); _taskScheduler.ScanLibrary(libraryId);
return Ok(); return Ok();
} }

View File

@ -6,7 +6,6 @@ using API.DTOs;
using API.Entities; using API.Entities;
using API.Extensions; using API.Extensions;
using API.Interfaces; using API.Interfaces;
using AutoMapper;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
@ -18,16 +17,14 @@ namespace API.Controllers
private readonly ICacheService _cacheService; private readonly ICacheService _cacheService;
private readonly ILogger<ReaderController> _logger; private readonly ILogger<ReaderController> _logger;
private readonly IUnitOfWork _unitOfWork; private readonly IUnitOfWork _unitOfWork;
private readonly IMapper _mapper;
public ReaderController(IDirectoryService directoryService, ICacheService cacheService, public ReaderController(IDirectoryService directoryService, ICacheService cacheService,
ILogger<ReaderController> logger, IUnitOfWork unitOfWork, IMapper mapper) ILogger<ReaderController> logger, IUnitOfWork unitOfWork)
{ {
_directoryService = directoryService; _directoryService = directoryService;
_cacheService = cacheService; _cacheService = cacheService;
_logger = logger; _logger = logger;
_unitOfWork = unitOfWork; _unitOfWork = unitOfWork;
_mapper = mapper;
} }
[HttpGet("image")] [HttpGet("image")]
@ -42,7 +39,6 @@ namespace API.Controllers
if (string.IsNullOrEmpty(path)) return BadRequest($"No such image for page {page}"); if (string.IsNullOrEmpty(path)) return BadRequest($"No such image for page {page}");
var file = await _directoryService.ReadImageAsync(path); var file = await _directoryService.ReadImageAsync(path);
file.Page = page; file.Page = page;
//file.Chapter = chapter.Number;
file.MangaFileName = mangaFile.FilePath; file.MangaFileName = mangaFile.FilePath;
return Ok(file); return Ok(file);

View File

@ -1,5 +1,4 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using API.DTOs; using API.DTOs;
using API.Entities; using API.Entities;

View File

@ -1,7 +1,6 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Threading.Tasks; using System.Threading.Tasks;
using API.Data;
using API.DTOs; using API.DTOs;
using API.Entities; using API.Entities;
using API.Extensions; using API.Extensions;
@ -16,18 +15,13 @@ namespace API.Controllers
[Authorize] [Authorize]
public class SettingsController : BaseApiController public class SettingsController : BaseApiController
{ {
private readonly DataContext _dataContext;
private readonly ILogger<SettingsController> _logger; private readonly ILogger<SettingsController> _logger;
private readonly IUnitOfWork _unitOfWork; private readonly IUnitOfWork _unitOfWork;
private readonly ITaskScheduler _taskScheduler;
public SettingsController(DataContext dataContext, ILogger<SettingsController> logger, IUnitOfWork unitOfWork, public SettingsController(ILogger<SettingsController> logger, IUnitOfWork unitOfWork)
ITaskScheduler taskScheduler)
{ {
_dataContext = dataContext;
_logger = logger; _logger = logger;
_unitOfWork = unitOfWork; _unitOfWork = unitOfWork;
_taskScheduler = taskScheduler;
} }
[HttpGet("")] [HttpGet("")]

View File

@ -33,10 +33,6 @@ namespace API.Data
{ {
base.OnModelCreating(builder); base.OnModelCreating(builder);
// builder.Entity<ServerSetting>()
// .HasAlternateKey(s => s.Key)
// .HasName("AlternateKey_Key");
builder.Entity<AppUser>() builder.Entity<AppUser>()
.HasMany(ur => ur.UserRoles) .HasMany(ur => ur.UserRoles)
.WithOne(u => u.User) .WithOne(u => u.User)

View File

@ -5,7 +5,6 @@ using API.Constants;
using API.Entities; using API.Entities;
using API.Services; using API.Services;
using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
namespace API.Data namespace API.Data
{ {

View File

@ -137,8 +137,6 @@ namespace API.Data
var volumeList = new List<VolumeDto>() {volume}; var volumeList = new List<VolumeDto>() {volume};
await AddVolumeModifiers(userId, volumeList); await AddVolumeModifiers(userId, volumeList);
//TODO: volumeList[0].Files = volumeList[0].Files.OrderBy(f => f.Chapter).ToList();
return volumeList[0]; return volumeList[0];
} }
@ -197,8 +195,6 @@ namespace API.Data
} }
return chapterIds.ToArray(); return chapterIds.ToArray();
//return series.Select(s => s.Volumes).Select(v => v.Select(v => v.Chapters)).Select(c => c.Id);
} }
private async Task AddSeriesModifiers(int userId, List<SeriesDto> series) private async Task AddSeriesModifiers(int userId, List<SeriesDto> series)

View File

@ -1,6 +1,5 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using API.Entities.Interfaces; using API.Entities.Interfaces;
using Microsoft.EntityFrameworkCore;
namespace API.Entities namespace API.Entities
{ {

View File

@ -1,6 +1,4 @@
using System; using System.IO;
using System.Diagnostics;
using System.IO;
namespace API.Extensions namespace API.Extensions
{ {

View File

@ -14,6 +14,12 @@ namespace API.Interfaces
IEnumerable<string> ListDirectory(string rootPath); IEnumerable<string> ListDirectory(string rootPath);
Task<ImageDto> ReadImageAsync(string imagePath); Task<ImageDto> ReadImageAsync(string imagePath);
string[] GetFiles(string path); // TODO: Refactor. This is currently for CacheServiceTest mocking /// <summary>
/// Gets files in a directory. If searchPatternExpression is passed, will match the regex against for filtering.
/// </summary>
/// <param name="path"></param>
/// <param name="searchPatternExpression"></param>
/// <returns></returns>
string[] GetFiles(string path, string searchPatternExpression = "");
} }
} }

View File

@ -1,7 +1,4 @@
using System.Threading.Tasks; namespace API.Interfaces
using API.DTOs;
namespace API.Interfaces
{ {
public interface IScannerService public interface IScannerService
{ {

View File

@ -16,16 +16,12 @@ namespace API.Interfaces
Task<IEnumerable<VolumeDto>> GetVolumesDtoAsync(int seriesId, int userId); Task<IEnumerable<VolumeDto>> GetVolumesDtoAsync(int seriesId, int userId);
IEnumerable<Volume> GetVolumes(int seriesId); IEnumerable<Volume> GetVolumes(int seriesId);
Task<SeriesDto> GetSeriesDtoByIdAsync(int seriesId, int userId); Task<SeriesDto> GetSeriesDtoByIdAsync(int seriesId, int userId);
Task<Volume> GetVolumeAsync(int volumeId); Task<Volume> GetVolumeAsync(int volumeId);
Task<VolumeDto> GetVolumeDtoAsync(int volumeId, int userId); Task<VolumeDto> GetVolumeDtoAsync(int volumeId, int userId);
Task<IEnumerable<Volume>> GetVolumesForSeriesAsync(int[] seriesIds); Task<IEnumerable<Volume>> GetVolumesForSeriesAsync(int[] seriesIds);
Task<bool> DeleteSeriesAsync(int seriesId); Task<bool> DeleteSeriesAsync(int seriesId);
Task<Volume> GetVolumeByIdAsync(int volumeId); Task<Volume> GetVolumeByIdAsync(int volumeId);
Task<Series> GetSeriesByIdAsync(int seriesId); Task<Series> GetSeriesByIdAsync(int seriesId);
//Task<MangaFileDto> GetVolumeMangaFileDtos(int volumeId);
Task<int[]> GetChapterIdsForSeriesAsync(int[] seriesIds); Task<int[]> GetChapterIdsForSeriesAsync(int[] seriesIds);
} }
} }

View File

@ -44,11 +44,6 @@ namespace API
private static IHostBuilder CreateHostBuilder(string[] args) => private static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args) Host.CreateDefaultBuilder(args)
// .ConfigureLogging(logging =>
// {
// logging.ClearProviders();
// logging.AddConsole();
// })
.ConfigureWebHostDefaults(webBuilder => .ConfigureWebHostDefaults(webBuilder =>
{ {
webBuilder.UseStartup<Startup>(); webBuilder.UseStartup<Startup>();

View File

@ -1,5 +1,4 @@
using System; using System;
using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -110,8 +109,7 @@ namespace API.Services
if (page < (mangaFile.NumberOfPages + pagesSoFar)) if (page < (mangaFile.NumberOfPages + pagesSoFar))
{ {
var path = GetCachePath(chapter.Id); var path = GetCachePath(chapter.Id);
// TODO: GetFiles should only get image files. var files = _directoryService.GetFiles(path, Parser.Parser.ImageFileExtensions);
var files = _directoryService.GetFiles(path);
Array.Sort(files, _numericComparer); Array.Sort(files, _numericComparer);
return (files.ElementAt(page - pagesSoFar), mangaFile); return (files.ElementAt(page - pagesSoFar), mangaFile);

View File

@ -40,8 +40,13 @@ namespace API.Services
reSearchPattern.IsMatch(Path.GetExtension(file))); reSearchPattern.IsMatch(Path.GetExtension(file)));
} }
public string[] GetFiles(string path) public string[] GetFiles(string path, string searchPatternExpression = "")
{ {
if (searchPatternExpression != string.Empty)
{
return GetFilesWithCertainExtensions(path, searchPatternExpression).ToArray();
}
return !Directory.Exists(path) ? Array.Empty<string>() : Directory.GetFiles(path); return !Directory.Exists(path) ? Array.Empty<string>() : Directory.GetFiles(path);
} }

View File

@ -1,5 +1,4 @@
using System; using System.Threading.Tasks;
using System.Threading.Tasks;
using API.Entities; using API.Entities;
using API.Helpers.Converters; using API.Helpers.Converters;
using API.Interfaces; using API.Interfaces;
@ -13,7 +12,6 @@ namespace API.Services
private readonly ICacheService _cacheService; private readonly ICacheService _cacheService;
private readonly ILogger<TaskScheduler> _logger; private readonly ILogger<TaskScheduler> _logger;
private readonly IScannerService _scannerService; private readonly IScannerService _scannerService;
private readonly IUnitOfWork _unitOfWork;
public BackgroundJobServer Client => new BackgroundJobServer(); public BackgroundJobServer Client => new BackgroundJobServer();
public TaskScheduler(ICacheService cacheService, ILogger<TaskScheduler> logger, IScannerService scannerService, IUnitOfWork unitOfWork) public TaskScheduler(ICacheService cacheService, ILogger<TaskScheduler> logger, IScannerService scannerService, IUnitOfWork unitOfWork)
@ -21,10 +19,9 @@ namespace API.Services
_cacheService = cacheService; _cacheService = cacheService;
_logger = logger; _logger = logger;
_scannerService = scannerService; _scannerService = scannerService;
_unitOfWork = unitOfWork;
_logger.LogInformation("Scheduling/Updating cache cleanup on a daily basis."); _logger.LogInformation("Scheduling/Updating cache cleanup on a daily basis.");
var setting = Task.Run(() => _unitOfWork.SettingsRepository.GetSettingAsync(ServerSettingKey.TaskScan)).Result; var setting = Task.Run(() => unitOfWork.SettingsRepository.GetSettingAsync(ServerSettingKey.TaskScan)).Result;
if (setting != null) if (setting != null)
{ {
RecurringJob.AddOrUpdate(() => _scannerService.ScanLibraries(), () => CronConverter.ConvertToCronNotation(setting.Value)); RecurringJob.AddOrUpdate(() => _scannerService.ScanLibraries(), () => CronConverter.ConvertToCronNotation(setting.Value));