mirror of https://github.com/lidarr/Lidarr
Faster tag view in UI for large libraries
(cherry picked from commit b050e1d2eb3bff9e28e7a1545d121be091789308) Closes #3762
This commit is contained in:
parent
59b4441b0d
commit
1eb5f2dd49
|
@ -13,6 +13,7 @@ namespace NzbDrone.Core.Music
|
|||
Artist FindByName(string cleanName);
|
||||
Artist FindById(string foreignArtistId);
|
||||
Dictionary<int, string> AllArtistPaths();
|
||||
Dictionary<int, List<int>> AllArtistsTags();
|
||||
Artist GetArtistByMetadataId(int artistMetadataId);
|
||||
List<Artist> GetArtistByMetadataId(IEnumerable<int> artistMetadataId);
|
||||
}
|
||||
|
@ -79,6 +80,15 @@ namespace NzbDrone.Core.Music
|
|||
}
|
||||
}
|
||||
|
||||
public Dictionary<int, List<int>> AllArtistsTags()
|
||||
{
|
||||
using (var conn = _database.OpenConnection())
|
||||
{
|
||||
var strSql = "SELECT \"Id\" AS \"Key\", \"Tags\" AS \"Value\" FROM \"Artists\" WHERE \"Tags\" IS NOT NULL";
|
||||
return conn.Query<KeyValuePair<int, List<int>>>(strSql).ToDictionary(x => x.Key, x => x.Value);
|
||||
}
|
||||
}
|
||||
|
||||
public List<Artist> GetArtistByMetadataId(IEnumerable<int> artistMetadataIds)
|
||||
{
|
||||
return Query(s => artistMetadataIds.Contains(s.ArtistMetadataId));
|
||||
|
|
|
@ -24,6 +24,7 @@ namespace NzbDrone.Core.Music
|
|||
void DeleteArtist(int artistId, bool deleteFiles, bool addImportListExclusion = false);
|
||||
void DeleteArtists(List<int> artistIds, bool deleteFiles, bool addImportListExclusion = false);
|
||||
List<Artist> GetAllArtists();
|
||||
Dictionary<int, List<int>> GetAllArtistsTags();
|
||||
List<Artist> AllForTag(int tagId);
|
||||
Artist UpdateArtist(Artist artist, bool publishUpdatedEvent = true);
|
||||
List<Artist> UpdateArtists(List<Artist> artist, bool useExistingRelativeFolder);
|
||||
|
@ -189,6 +190,11 @@ namespace NzbDrone.Core.Music
|
|||
return _artistRepository.AllArtistPaths();
|
||||
}
|
||||
|
||||
public Dictionary<int, List<int>> GetAllArtistsTags()
|
||||
{
|
||||
return _artistRepository.AllArtistsTags();
|
||||
}
|
||||
|
||||
public List<Artist> AllForTag(int tagId)
|
||||
{
|
||||
return GetAllArtists().Where(s => s.Tags.Contains(tagId))
|
||||
|
|
|
@ -106,7 +106,7 @@ namespace NzbDrone.Core.Tags
|
|||
var importLists = _importListFactory.All();
|
||||
var notifications = _notificationFactory.All();
|
||||
var restrictions = _releaseProfileService.All();
|
||||
var artists = _artistService.GetAllArtists();
|
||||
var artists = _artistService.GetAllArtistsTags();
|
||||
var rootFolders = _rootFolderService.All();
|
||||
var indexers = _indexerService.All();
|
||||
|
||||
|
@ -122,7 +122,7 @@ namespace NzbDrone.Core.Tags
|
|||
ImportListIds = importLists.Where(c => c.Tags.Contains(tag.Id)).Select(c => c.Id).ToList(),
|
||||
NotificationIds = notifications.Where(c => c.Tags.Contains(tag.Id)).Select(c => c.Id).ToList(),
|
||||
RestrictionIds = restrictions.Where(c => c.Tags.Contains(tag.Id)).Select(c => c.Id).ToList(),
|
||||
ArtistIds = artists.Where(c => c.Tags.Contains(tag.Id)).Select(c => c.Id).ToList(),
|
||||
ArtistIds = artists.Where(c => c.Value.Contains(tag.Id)).Select(c => c.Key).ToList(),
|
||||
RootFolderIds = rootFolders.Where(c => c.DefaultTags.Contains(tag.Id)).Select(c => c.Id).ToList(),
|
||||
IndexerIds = indexers.Where(c => c.Tags.Contains(tag.Id)).Select(c => c.Id).ToList()
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue