aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Library/UserDataManager.cs
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/UserDataManager.cs
parent66d2f2555565f46816051829b7418ec4296cc873 (diff)
update user data queries
Diffstat (limited to 'MediaBrowser.Server.Implementations/Library/UserDataManager.cs')
-rw-r--r--MediaBrowser.Server.Implementations/Library/UserDataManager.cs88
1 files changed, 63 insertions, 25 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);
- }
}
}