aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations/Dto
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2016-12-13 02:36:30 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2016-12-13 02:36:30 -0500
commite1b880a5a072764cabace79cd6d1d65315ec65e4 (patch)
tree971f995ffd89246ca96c80b44a6266315812e4de /Emby.Server.Implementations/Dto
parentbff0cd4447119278d6aab5961f79f8a17c566a04 (diff)
update series queries
Diffstat (limited to 'Emby.Server.Implementations/Dto')
-rw-r--r--Emby.Server.Implementations/Dto/DtoService.cs105
1 files changed, 70 insertions, 35 deletions
diff --git a/Emby.Server.Implementations/Dto/DtoService.cs b/Emby.Server.Implementations/Dto/DtoService.cs
index 2b2c3e000d..d0c473777d 100644
--- a/Emby.Server.Implementations/Dto/DtoService.cs
+++ b/Emby.Server.Implementations/Dto/DtoService.cs
@@ -459,12 +459,21 @@ namespace Emby.Server.Implementations.Dto
if (dtoOptions.EnableUserData)
{
- dto.UserData = await _userDataRepository.GetUserDataDto(item, dto, user).ConfigureAwait(false);
+ dto.UserData = await _userDataRepository.GetUserDataDto(item, dto, user, dtoOptions.Fields).ConfigureAwait(false);
}
if (!dto.ChildCount.HasValue && item.SourceType == SourceType.Library)
{
- dto.ChildCount = GetChildCount(folder, user);
+ // For these types we can try to optimize and assume these values will be equal
+ if (item is MusicAlbum || item is Season)
+ {
+ dto.ChildCount = dto.RecursiveItemCount;
+ }
+
+ if (dtoOptions.Fields.Contains(ItemFields.ChildCount))
+ {
+ dto.ChildCount = dto.ChildCount ?? GetChildCount(folder, user);
+ }
}
if (fields.Contains(ItemFields.CumulativeRunTimeTicks))
@@ -1151,28 +1160,29 @@ namespace Emby.Server.Implementations.Dto
{
dto.Artists = hasArtist.Artists;
- var artistItems = _libraryManager.GetArtists(new InternalItemsQuery
- {
- EnableTotalRecordCount = false,
- ItemIds = new[] { item.Id.ToString("N") }
- });
-
- dto.ArtistItems = artistItems.Items
- .Select(i =>
- {
- var artist = i.Item1;
- return new NameIdPair
- {
- Name = artist.Name,
- Id = artist.Id.ToString("N")
- };
- })
- .ToList();
+ //var artistItems = _libraryManager.GetArtists(new InternalItemsQuery
+ //{
+ // EnableTotalRecordCount = false,
+ // ItemIds = new[] { item.Id.ToString("N") }
+ //});
+
+ //dto.ArtistItems = artistItems.Items
+ // .Select(i =>
+ // {
+ // var artist = i.Item1;
+ // return new NameIdPair
+ // {
+ // Name = artist.Name,
+ // Id = artist.Id.ToString("N")
+ // };
+ // })
+ // .ToList();
// Include artists that are not in the database yet, e.g., just added via metadata editor
- var foundArtists = artistItems.Items.Select(i => i.Item1.Name).ToList();
+ //var foundArtists = artistItems.Items.Select(i => i.Item1.Name).ToList();
+ dto.ArtistItems = new List<NameIdPair>();
dto.ArtistItems.AddRange(hasArtist.Artists
- .Except(foundArtists, new DistinctNameComparer())
+ //.Except(foundArtists, new DistinctNameComparer())
.Select(i =>
{
// This should not be necessary but we're seeing some cases of it
@@ -1201,23 +1211,48 @@ namespace Emby.Server.Implementations.Dto
{
dto.AlbumArtist = hasAlbumArtist.AlbumArtists.FirstOrDefault();
- var artistItems = _libraryManager.GetAlbumArtists(new InternalItemsQuery
- {
- EnableTotalRecordCount = false,
- ItemIds = new[] { item.Id.ToString("N") }
- });
-
- dto.AlbumArtists = artistItems.Items
+ //var artistItems = _libraryManager.GetAlbumArtists(new InternalItemsQuery
+ //{
+ // EnableTotalRecordCount = false,
+ // ItemIds = new[] { item.Id.ToString("N") }
+ //});
+
+ //dto.AlbumArtists = artistItems.Items
+ // .Select(i =>
+ // {
+ // var artist = i.Item1;
+ // return new NameIdPair
+ // {
+ // Name = artist.Name,
+ // Id = artist.Id.ToString("N")
+ // };
+ // })
+ // .ToList();
+
+ dto.AlbumArtists = new List<NameIdPair>();
+ dto.AlbumArtists.AddRange(hasAlbumArtist.AlbumArtists
+ //.Except(foundArtists, new DistinctNameComparer())
.Select(i =>
{
- var artist = i.Item1;
- return new NameIdPair
+ // This should not be necessary but we're seeing some cases of it
+ if (string.IsNullOrWhiteSpace(i))
{
- Name = artist.Name,
- Id = artist.Id.ToString("N")
- };
- })
- .ToList();
+ return null;
+ }
+
+ var artist = _libraryManager.GetArtist(i);
+ if (artist != null)
+ {
+ return new NameIdPair
+ {
+ Name = artist.Name,
+ Id = artist.Id.ToString("N")
+ };
+ }
+
+ return null;
+
+ }).Where(i => i != null));
}
// Add video info