Faster tag view in UI for large libraries

(cherry picked from commit b050e1d2eb3bff9e28e7a1545d121be091789308)

Closes #3762
pull/3763/head
Qstick 11 months ago committed by Bogdan
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…
Cancel
Save