mirror of
https://github.com/fergalmoran/Readarr.git
synced 2026-02-05 15:37:14 +00:00
Fixed: Speed up initial author load
This commit is contained in:
@@ -27,6 +27,7 @@ namespace NzbDrone.Core.RootFolders
|
||||
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 @@ namespace NzbDrone.Core.RootFolders
|
||||
|
||||
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 @@ namespace Readarr.Api.V1.Author
|
||||
FetchAndLinkAuthorStatistics(resource);
|
||||
LinkNextPreviousBooks(resource);
|
||||
|
||||
//PopulateAlternateTitles(resource);
|
||||
LinkRootFolderPath(resource);
|
||||
|
||||
return resource;
|
||||
@@ -127,10 +126,8 @@ namespace Readarr.Api.V1.Author
|
||||
MapCoversToLocal(authorResources.ToArray());
|
||||
LinkNextPreviousBooks(authorResources.ToArray());
|
||||
LinkAuthorStatistics(authorResources, authorStats);
|
||||
LinkRootFolderPath(authorResources.ToArray());
|
||||
|
||||
authorResources.ForEach(LinkRootFolderPath);
|
||||
|
||||
//PopulateAlternateTitles(seriesResources);
|
||||
return authorResources;
|
||||
}
|
||||
|
||||
@@ -223,25 +220,14 @@ namespace Readarr.Api.V1.Author
|
||||
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]
|
||||
|
||||
Reference in New Issue
Block a user