aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Library
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2016-05-11 10:36:28 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2016-05-11 10:36:28 -0400
commit3118196ac6639dd719f63888ccb16a33b4a4bc7e (patch)
treea8b4f6e5a64b753b789ae03b31ccde2e4ddc49f9 /MediaBrowser.Server.Implementations/Library
parent66d2f2555565f46816051829b7418ec4296cc873 (diff)
update user data queries
Diffstat (limited to 'MediaBrowser.Server.Implementations/Library')
-rw-r--r--MediaBrowser.Server.Implementations/Library/UserDataManager.cs88
-rw-r--r--MediaBrowser.Server.Implementations/Library/Validators/StudiosValidator.cs22
2 files changed, 77 insertions, 33 deletions
diff --git a/MediaBrowser.Server.Implementations/Library/UserDataManager.cs b/MediaBrowser.Server.Implementations/Library/UserDataManager.cs
index f637160be..0e211937f 100644
--- a/MediaBrowser.Server.Implementations/Library/UserDataManager.cs
+++ b/MediaBrowser.Server.Implementations/Library/UserDataManager.cs
@@ -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,25 +214,20 @@ namespace MediaBrowser.Server.Implementations.Library
return value;
}
- value = GetUserDataFromRepository(userId, key);
- _userData[cacheKey] = value;
- return value;
- }
- }
-
- private UserItemData GetUserDataFromRepository(Guid userId, string key)
- {
- var data = Repository.GetUserData(userId, key);
+ value = Repository.GetUserData(userId, key);
- if (data == null)
- {
- data = new UserItemData
+ if (value == null)
{
- UserId = userId,
- Key = key
- };
+ value = new UserItemData
+ {
+ UserId = userId,
+ Key = key
+ };
+ }
+
+ _userData[cacheKey] = value;
+ return value;
}
- return data;
}
/// <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);
- }
}
}
diff --git a/MediaBrowser.Server.Implementations/Library/Validators/StudiosValidator.cs b/MediaBrowser.Server.Implementations/Library/Validators/StudiosValidator.cs
index 00dc8e6a1..c1803b5e4 100644
--- a/MediaBrowser.Server.Implementations/Library/Validators/StudiosValidator.cs
+++ b/MediaBrowser.Server.Implementations/Library/Validators/StudiosValidator.cs
@@ -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++;