mirror of
https://github.com/Readarr/Readarr
synced 2026-01-02 13:48:47 +01:00
Fixed: Speed up initial author load
This commit is contained in:
parent
c51ae664aa
commit
6947e6e34c
2 changed files with 23 additions and 24 deletions
|
|
@ -27,6 +27,7 @@ public interface IRootFolderService
|
|||
List<RootFolder> AllForTag(int tagId);
|
||||
RootFolder GetBestRootFolder(string path);
|
||||
string GetBestRootFolderPath(string path);
|
||||
string GetBestRootFolderPath(string path, List<RootFolder> allRootFolders);
|
||||
}
|
||||
|
||||
public class RootFolderService : IRootFolderService, IHandle<ModelEvent<RemotePathMapping>>
|
||||
|
|
@ -145,14 +146,26 @@ public List<RootFolder> AllForTag(int tagId)
|
|||
|
||||
public RootFolder GetBestRootFolder(string path)
|
||||
{
|
||||
return All().Where(r => PathEqualityComparer.Instance.Equals(r.Path, path) || r.Path.IsParentPath(path))
|
||||
var folders = All();
|
||||
return GetBestRootFolder(path, folders);
|
||||
}
|
||||
|
||||
public RootFolder GetBestRootFolder(string path, List<RootFolder> allRootFolders)
|
||||
{
|
||||
return allRootFolders.Where(r => PathEqualityComparer.Instance.Equals(r.Path, path) || r.Path.IsParentPath(path))
|
||||
.OrderByDescending(r => r.Path.Length)
|
||||
.FirstOrDefault();
|
||||
}
|
||||
|
||||
public string GetBestRootFolderPath(string path)
|
||||
{
|
||||
var possibleRootFolder = GetBestRootFolder(path);
|
||||
var folders = All();
|
||||
return GetBestRootFolderPath(path, folders);
|
||||
}
|
||||
|
||||
public string GetBestRootFolderPath(string path, List<RootFolder> allRootFolders)
|
||||
{
|
||||
var possibleRootFolder = GetBestRootFolder(path, allRootFolders);
|
||||
|
||||
if (possibleRootFolder == null)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -112,7 +112,6 @@ private AuthorResource GetAuthorResource(NzbDrone.Core.Books.Author author)
|
|||
FetchAndLinkAuthorStatistics(resource);
|
||||
LinkNextPreviousBooks(resource);
|
||||
|
||||
//PopulateAlternateTitles(resource);
|
||||
LinkRootFolderPath(resource);
|
||||
|
||||
return resource;
|
||||
|
|
@ -127,10 +126,8 @@ public List<AuthorResource> AllAuthors()
|
|||
MapCoversToLocal(authorResources.ToArray());
|
||||
LinkNextPreviousBooks(authorResources.ToArray());
|
||||
LinkAuthorStatistics(authorResources, authorStats);
|
||||
LinkRootFolderPath(authorResources.ToArray());
|
||||
|
||||
authorResources.ForEach(LinkRootFolderPath);
|
||||
|
||||
//PopulateAlternateTitles(seriesResources);
|
||||
return authorResources;
|
||||
}
|
||||
|
||||
|
|
@ -223,25 +220,14 @@ private void LinkAuthorStatistics(AuthorResource resource, AuthorStatistics auth
|
|||
resource.Statistics = authorStatistics.ToResource();
|
||||
}
|
||||
|
||||
//private void PopulateAlternateTitles(List<AuthorResource> resources)
|
||||
//{
|
||||
// foreach (var resource in resources)
|
||||
// {
|
||||
// PopulateAlternateTitles(resource);
|
||||
// }
|
||||
//}
|
||||
|
||||
//private void PopulateAlternateTitles(AuthorResource resource)
|
||||
//{
|
||||
// var mappings = _sceneMappingService.FindByTvdbId(resource.TvdbId);
|
||||
|
||||
// if (mappings == null) return;
|
||||
|
||||
// resource.AlternateTitles = mappings.Select(v => new AlternateTitleResource { Title = v.Title, SeasonNumber = v.SeasonNumber, SceneSeasonNumber = v.SceneSeasonNumber }).ToList();
|
||||
//}
|
||||
private void LinkRootFolderPath(AuthorResource resource)
|
||||
private void LinkRootFolderPath(params AuthorResource[] authors)
|
||||
{
|
||||
resource.RootFolderPath = _rootFolderService.GetBestRootFolderPath(resource.Path);
|
||||
var rootFolders = _rootFolderService.All();
|
||||
|
||||
foreach (var author in authors)
|
||||
{
|
||||
author.RootFolderPath = _rootFolderService.GetBestRootFolderPath(author.Path, rootFolders);
|
||||
}
|
||||
}
|
||||
|
||||
[NonAction]
|
||||
|
|
|
|||
Loading…
Reference in a new issue