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 FindByName(string cleanName);
|
||||||
Artist FindById(string foreignArtistId);
|
Artist FindById(string foreignArtistId);
|
||||||
Dictionary<int, string> AllArtistPaths();
|
Dictionary<int, string> AllArtistPaths();
|
||||||
|
Dictionary<int, List<int>> AllArtistsTags();
|
||||||
Artist GetArtistByMetadataId(int artistMetadataId);
|
Artist GetArtistByMetadataId(int artistMetadataId);
|
||||||
List<Artist> GetArtistByMetadataId(IEnumerable<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)
|
public List<Artist> GetArtistByMetadataId(IEnumerable<int> artistMetadataIds)
|
||||||
{
|
{
|
||||||
return Query(s => artistMetadataIds.Contains(s.ArtistMetadataId));
|
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 DeleteArtist(int artistId, bool deleteFiles, bool addImportListExclusion = false);
|
||||||
void DeleteArtists(List<int> artistIds, bool deleteFiles, bool addImportListExclusion = false);
|
void DeleteArtists(List<int> artistIds, bool deleteFiles, bool addImportListExclusion = false);
|
||||||
List<Artist> GetAllArtists();
|
List<Artist> GetAllArtists();
|
||||||
|
Dictionary<int, List<int>> GetAllArtistsTags();
|
||||||
List<Artist> AllForTag(int tagId);
|
List<Artist> AllForTag(int tagId);
|
||||||
Artist UpdateArtist(Artist artist, bool publishUpdatedEvent = true);
|
Artist UpdateArtist(Artist artist, bool publishUpdatedEvent = true);
|
||||||
List<Artist> UpdateArtists(List<Artist> artist, bool useExistingRelativeFolder);
|
List<Artist> UpdateArtists(List<Artist> artist, bool useExistingRelativeFolder);
|
||||||
|
@ -189,6 +190,11 @@ namespace NzbDrone.Core.Music
|
||||||
return _artistRepository.AllArtistPaths();
|
return _artistRepository.AllArtistPaths();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Dictionary<int, List<int>> GetAllArtistsTags()
|
||||||
|
{
|
||||||
|
return _artistRepository.AllArtistsTags();
|
||||||
|
}
|
||||||
|
|
||||||
public List<Artist> AllForTag(int tagId)
|
public List<Artist> AllForTag(int tagId)
|
||||||
{
|
{
|
||||||
return GetAllArtists().Where(s => s.Tags.Contains(tagId))
|
return GetAllArtists().Where(s => s.Tags.Contains(tagId))
|
||||||
|
|
|
@ -106,7 +106,7 @@ namespace NzbDrone.Core.Tags
|
||||||
var importLists = _importListFactory.All();
|
var importLists = _importListFactory.All();
|
||||||
var notifications = _notificationFactory.All();
|
var notifications = _notificationFactory.All();
|
||||||
var restrictions = _releaseProfileService.All();
|
var restrictions = _releaseProfileService.All();
|
||||||
var artists = _artistService.GetAllArtists();
|
var artists = _artistService.GetAllArtistsTags();
|
||||||
var rootFolders = _rootFolderService.All();
|
var rootFolders = _rootFolderService.All();
|
||||||
var indexers = _indexerService.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(),
|
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(),
|
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(),
|
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(),
|
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()
|
IndexerIds = indexers.Where(c => c.Tags.Contains(tag.Id)).Select(c => c.Id).ToList()
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue