add guide optimizations

This commit is contained in:
Luke Pulverenti
2016-08-17 15:28:43 -04:00
parent a69f8ecb3d
commit fd6aa72dac
17 changed files with 172 additions and 24 deletions

View File

@@ -329,7 +329,7 @@ namespace MediaBrowser.Server.Implementations.Dto
if (user != null)
{
await AttachUserSpecificInfo(dto, item, user, fields).ConfigureAwait(false);
await AttachUserSpecificInfo(dto, item, user, options).ConfigureAwait(false);
}
var hasMediaSources = item as IHasMediaSources;
@@ -446,17 +446,18 @@ namespace MediaBrowser.Server.Implementations.Dto
/// <summary>
/// Attaches the user specific info.
/// </summary>
/// <param name="dto">The dto.</param>
/// <param name="item">The item.</param>
/// <param name="user">The user.</param>
/// <param name="fields">The fields.</param>
private async Task AttachUserSpecificInfo(BaseItemDto dto, BaseItem item, User user, List<ItemFields> fields)
private async Task AttachUserSpecificInfo(BaseItemDto dto, BaseItem item, User user, DtoOptions dtoOptions)
{
var fields = dtoOptions.Fields;
if (item.IsFolder)
{
var folder = (Folder)item;
dto.UserData = await _userDataRepository.GetUserDataDto(item, dto, user).ConfigureAwait(false);
if (dtoOptions.EnableUserData)
{
dto.UserData = await _userDataRepository.GetUserDataDto(item, dto, user).ConfigureAwait(false);
}
if (!dto.ChildCount.HasValue && item.SourceType == SourceType.Library)
{
@@ -476,7 +477,10 @@ namespace MediaBrowser.Server.Implementations.Dto
else
{
dto.UserData = _userDataRepository.GetUserDataDto(item, user).Result;
if (dtoOptions.EnableUserData)
{
dto.UserData = _userDataRepository.GetUserDataDto(item, user).Result;
}
}
dto.PlayAccess = item.GetPlayAccess(user);
@@ -484,7 +488,10 @@ namespace MediaBrowser.Server.Implementations.Dto
if (fields.Contains(ItemFields.BasicSyncInfo) || fields.Contains(ItemFields.SyncInfo))
{
var userCanSync = user != null && user.Policy.EnableSync;
dto.SupportsSync = userCanSync && _syncManager.SupportsSync(item);
if (userCanSync && _syncManager.SupportsSync(item))
{
dto.SupportsSync = true;
}
}
if (fields.Contains(ItemFields.SeasonUserData))
@@ -969,7 +976,16 @@ namespace MediaBrowser.Server.Implementations.Dto
dto.Id = GetDtoId(item);
dto.IndexNumber = item.IndexNumber;
dto.ParentIndexNumber = item.ParentIndexNumber;
dto.IsFolder = item.IsFolder;
if (item.IsFolder)
{
dto.IsFolder = true;
}
else if (item is IHasMediaSources)
{
dto.IsFolder = false;
}
dto.MediaType = item.MediaType;
dto.LocationType = item.LocationType;
if (item.IsHD.HasValue && item.IsHD.Value)

View File

@@ -951,6 +951,8 @@ namespace MediaBrowser.Server.Implementations.LiveTv
var queryResult = _libraryManager.QueryItems(internalQuery);
RemoveFields(options);
var returnArray = (await _dtoService.GetBaseItemDtos(queryResult.Items, options, user).ConfigureAwait(false)).ToArray();
var result = new QueryResult<BaseItemDto>
@@ -1031,6 +1033,8 @@ namespace MediaBrowser.Server.Implementations.LiveTv
var user = _userManager.GetUserById(query.UserId);
RemoveFields(options);
var returnArray = (await _dtoService.GetBaseItemDtos(internalResult.Items, options, user).ConfigureAwait(false)).ToArray();
var result = new QueryResult<BaseItemDto>
@@ -1662,6 +1666,8 @@ namespace MediaBrowser.Server.Implementations.LiveTv
var internalResult = await GetInternalRecordings(query, cancellationToken).ConfigureAwait(false);
RemoveFields(options);
var returnArray = (await _dtoService.GetBaseItemDtos(internalResult.Items, options, user).ConfigureAwait(false)).ToArray();
return new QueryResult<BaseItemDto>
@@ -1922,7 +1928,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
var channelIds = tuples.Select(i => i.Item2.Id.ToString("N")).Distinct().ToArray();
var programs = _libraryManager.GetItemList(new InternalItemsQuery(user)
var programs = options.AddCurrentProgram ? _libraryManager.GetItemList(new InternalItemsQuery(user)
{
IncludeItemTypes = new[] { typeof(LiveTvProgram).Name },
ChannelIds = channelIds,
@@ -1932,7 +1938,9 @@ namespace MediaBrowser.Server.Implementations.LiveTv
SortBy = new[] { "StartDate" },
TopParentIds = new[] { GetInternalLiveTvFolder(CancellationToken.None).Result.Id.ToString("N") }
}).ToList();
}).ToList() : new List<BaseItem>();
RemoveFields(options);
foreach (var tuple in tuples)
{
@@ -1944,14 +1952,20 @@ namespace MediaBrowser.Server.Implementations.LiveTv
dto.ChannelType = channel.ChannelType;
dto.ServiceName = GetService(channel).Name;
dto.MediaSources = channel.GetMediaSources(true).ToList();
if (options.Fields.Contains(ItemFields.MediaSources))
{
dto.MediaSources = channel.GetMediaSources(true).ToList();
}
var channelIdString = channel.Id.ToString("N");
var currentProgram = programs.FirstOrDefault(i => string.Equals(i.ChannelId, channelIdString));
if (currentProgram != null)
if (options.AddCurrentProgram)
{
dto.CurrentProgram = _dtoService.GetBaseItemDto(currentProgram, options, user);
var currentProgram = programs.FirstOrDefault(i => string.Equals(i.ChannelId, channelIdString));
if (currentProgram != null)
{
dto.CurrentProgram = _dtoService.GetBaseItemDto(currentProgram, options, user);
}
}
}
}
@@ -2447,6 +2461,14 @@ namespace MediaBrowser.Server.Implementations.LiveTv
return _dtoService.GetBaseItemDto(folder, new DtoOptions(), user);
}
private void RemoveFields(DtoOptions options)
{
options.Fields.Remove(ItemFields.CanDelete);
options.Fields.Remove(ItemFields.CanDownload);
options.Fields.Remove(ItemFields.DisplayPreferencesId);
options.Fields.Remove(ItemFields.Etag);
}
public async Task<Folder> GetInternalLiveTvFolder(CancellationToken cancellationToken)
{
var name = _localization.GetLocalizedString("ViewTypeLiveTV");

View File

@@ -414,6 +414,20 @@ namespace MediaBrowser.Server.Implementations.Sync
whereClauses.Add("TargetId=@TargetId");
cmd.Parameters.Add(cmd, "@TargetId", DbType.String).Value = query.TargetId;
}
if (!string.IsNullOrWhiteSpace(query.ExcludeTargetIds))
{
var excludeIds = (query.ExcludeTargetIds ?? string.Empty).Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
if (excludeIds.Length == 1)
{
whereClauses.Add("TargetId<>@ExcludeTargetId");
cmd.Parameters.Add(cmd, "@ExcludeTargetId", DbType.String).Value = excludeIds[0];
}
else if (excludeIds.Length > 1)
{
whereClauses.Add("TargetId<>@ExcludeTargetId");
cmd.Parameters.Add(cmd, "@ExcludeTargetId", DbType.String).Value = excludeIds[0];
}
}
if (!string.IsNullOrWhiteSpace(query.UserId))
{
whereClauses.Add("UserId=@UserId");