mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-06-04 06:48:35 +01:00
update user data queries
This commit is contained in:
@@ -617,9 +617,12 @@ namespace MediaBrowser.Server.Implementations.Dto
|
||||
{
|
||||
if (!string.IsNullOrEmpty(item.Album))
|
||||
{
|
||||
var parentAlbum = _libraryManager.RootFolder
|
||||
.GetRecursiveChildren(i => i is MusicAlbum && string.Equals(i.Name, item.Album, StringComparison.OrdinalIgnoreCase))
|
||||
.FirstOrDefault();
|
||||
var parentAlbum = _libraryManager.GetItemList(new InternalItemsQuery
|
||||
{
|
||||
IncludeItemTypes = new[] { typeof(MusicAlbum).Name },
|
||||
Name = item.Album
|
||||
|
||||
}).FirstOrDefault();
|
||||
|
||||
if (parentAlbum != null)
|
||||
{
|
||||
|
||||
@@ -140,6 +140,54 @@ namespace MediaBrowser.Server.Implementations.Library
|
||||
return Repository.GetAllUserData(userId);
|
||||
}
|
||||
|
||||
public UserItemData GetUserData(Guid userId, List<string> keys)
|
||||
{
|
||||
if (userId == Guid.Empty)
|
||||
{
|
||||
throw new ArgumentNullException("userId");
|
||||
}
|
||||
if (keys == null)
|
||||
{
|
||||
throw new ArgumentNullException("keys");
|
||||
}
|
||||
|
||||
lock (_userData)
|
||||
{
|
||||
foreach (var key in keys)
|
||||
{
|
||||
var cacheKey = GetCacheKey(userId, key);
|
||||
UserItemData value;
|
||||
if (_userData.TryGetValue(cacheKey, out value))
|
||||
{
|
||||
return value;
|
||||
}
|
||||
|
||||
value = Repository.GetUserData(userId, key);
|
||||
|
||||
if (value != null)
|
||||
{
|
||||
_userData[cacheKey] = value;
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
if (keys.Count > 0)
|
||||
{
|
||||
var key = keys[0];
|
||||
var cacheKey = GetCacheKey(userId, key);
|
||||
var userdata = new UserItemData
|
||||
{
|
||||
UserId = userId,
|
||||
Key = key
|
||||
};
|
||||
_userData[cacheKey] = userdata;
|
||||
return userdata;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the user data.
|
||||
/// </summary>
|
||||
@@ -166,27 +214,22 @@ namespace MediaBrowser.Server.Implementations.Library
|
||||
return value;
|
||||
}
|
||||
|
||||
value = GetUserDataFromRepository(userId, key);
|
||||
value = Repository.GetUserData(userId, key);
|
||||
|
||||
if (value == null)
|
||||
{
|
||||
value = new UserItemData
|
||||
{
|
||||
UserId = userId,
|
||||
Key = key
|
||||
};
|
||||
}
|
||||
|
||||
_userData[cacheKey] = value;
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
private UserItemData GetUserDataFromRepository(Guid userId, string key)
|
||||
{
|
||||
var data = Repository.GetUserData(userId, key);
|
||||
|
||||
if (data == null)
|
||||
{
|
||||
data = new UserItemData
|
||||
{
|
||||
UserId = userId,
|
||||
Key = key
|
||||
};
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the internal key.
|
||||
/// </summary>
|
||||
@@ -200,22 +243,22 @@ namespace MediaBrowser.Server.Implementations.Library
|
||||
|
||||
public UserItemData GetUserData(IHasUserData user, IHasUserData item)
|
||||
{
|
||||
return GetUserData(user.Id, item.GetUserDataKeys().First());
|
||||
return GetUserData(user.Id, item);
|
||||
}
|
||||
|
||||
public UserItemData GetUserData(string userId, IHasUserData item)
|
||||
{
|
||||
return GetUserData(userId, item.GetUserDataKeys().First());
|
||||
return GetUserData(new Guid(userId), item);
|
||||
}
|
||||
|
||||
public UserItemData GetUserData(Guid userId, IHasUserData item)
|
||||
{
|
||||
return GetUserData(userId, item.GetUserDataKeys().First());
|
||||
return GetUserData(userId, item.GetUserDataKeys());
|
||||
}
|
||||
|
||||
public UserItemDataDto GetUserDataDto(IHasUserData item, User user)
|
||||
{
|
||||
var userData = GetUserData(user.Id, item.GetUserDataKeys().First());
|
||||
var userData = GetUserData(user.Id, item);
|
||||
var dto = GetUserItemDataDto(userData);
|
||||
|
||||
item.FillUserDataDtoValues(dto, userData, user);
|
||||
@@ -302,10 +345,5 @@ namespace MediaBrowser.Server.Implementations.Library
|
||||
|
||||
return playedToCompletion;
|
||||
}
|
||||
|
||||
public UserItemData GetUserData(string userId, string key)
|
||||
{
|
||||
return GetUserData(new Guid(userId), key);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
using MediaBrowser.Controller.Library;
|
||||
using MediaBrowser.Model.Logging;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
@@ -34,20 +35,25 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
|
||||
/// <returns>Task.</returns>
|
||||
public async Task Run(IProgress<double> progress, CancellationToken cancellationToken)
|
||||
{
|
||||
var items = _libraryManager.GetItemList(new InternalItemsQuery
|
||||
{
|
||||
IncludeItemTypes = new[] { typeof(Studio).Name }
|
||||
|
||||
}).ToList();
|
||||
var items = _libraryManager.RootFolder.GetRecursiveChildren(i => true)
|
||||
.SelectMany(i => i.Studios)
|
||||
.DistinctNames()
|
||||
.ToList();
|
||||
|
||||
var numComplete = 0;
|
||||
var count = items.Count;
|
||||
|
||||
foreach (var item in items)
|
||||
var validIds = new List<Guid>();
|
||||
|
||||
foreach (var name in items)
|
||||
{
|
||||
try
|
||||
{
|
||||
await item.RefreshMetadata(cancellationToken).ConfigureAwait(false);
|
||||
var itemByName = _libraryManager.GetStudio(name);
|
||||
|
||||
validIds.Add(itemByName.Id);
|
||||
|
||||
await itemByName.RefreshMetadata(cancellationToken).ConfigureAwait(false);
|
||||
}
|
||||
catch (OperationCanceledException)
|
||||
{
|
||||
@@ -56,7 +62,7 @@ namespace MediaBrowser.Server.Implementations.Library.Validators
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.ErrorException("Error refreshing {0}", ex, item.Name);
|
||||
_logger.ErrorException("Error refreshing {0}", ex, name);
|
||||
}
|
||||
|
||||
numComplete++;
|
||||
|
||||
@@ -1870,9 +1870,9 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||
|
||||
using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult))
|
||||
{
|
||||
Logger.Debug("GetItemIdsList query time: {0}ms. Query: {1}",
|
||||
Convert.ToInt32((DateTime.UtcNow - now).TotalMilliseconds),
|
||||
cmd.CommandText);
|
||||
//Logger.Debug("GetItemIdsList query time: {0}ms. Query: {1}",
|
||||
// Convert.ToInt32((DateTime.UtcNow - now).TotalMilliseconds),
|
||||
// cmd.CommandText);
|
||||
|
||||
while (reader.Read())
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user