aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-05-23 11:39:48 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-05-23 11:39:48 -0400
commitf546f09c71d34c5cefb64b47837594f50abcc92a (patch)
tree24a34299e6bdda6936412946c63a88c32b03ffb2 /MediaBrowser.Server.Implementations/Library/LibraryManager.cs
parent62535786294150cba0460c0035da8447818e08f6 (diff)
bulk save items when possible
Diffstat (limited to 'MediaBrowser.Server.Implementations/Library/LibraryManager.cs')
-rw-r--r--MediaBrowser.Server.Implementations/Library/LibraryManager.cs50
1 files changed, 29 insertions, 21 deletions
diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
index 72cf42c14..fbf2dfc70 100644
--- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
+++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs
@@ -1036,21 +1036,40 @@ namespace MediaBrowser.Server.Implementations.Library
/// <param name="item">The item.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task.</returns>
- public async Task CreateItem(BaseItem item, CancellationToken cancellationToken)
+ public Task CreateItem(BaseItem item, CancellationToken cancellationToken)
{
- await SaveItem(item, cancellationToken).ConfigureAwait(false);
+ return CreateItems(new[] { item }, cancellationToken);
+ }
- UpdateItemInLibraryCache(item);
+ /// <summary>
+ /// Creates the items.
+ /// </summary>
+ /// <param name="items">The items.</param>
+ /// <param name="cancellationToken">The cancellation token.</param>
+ /// <returns>Task.</returns>
+ public async Task CreateItems(IEnumerable<BaseItem> items, CancellationToken cancellationToken)
+ {
+ var list = items.ToList();
+
+ await ItemRepository.SaveItems(list, cancellationToken).ConfigureAwait(false);
+
+ foreach (var item in list)
+ {
+ UpdateItemInLibraryCache(item);
+ }
if (ItemAdded != null)
{
- try
- {
- ItemAdded(this, new ItemChangeEventArgs { Item = item });
- }
- catch (Exception ex)
+ foreach (var item in list)
{
- _logger.ErrorException("Error in ItemUpdated event handler", ex);
+ try
+ {
+ ItemAdded(this, new ItemChangeEventArgs { Item = item });
+ }
+ catch (Exception ex)
+ {
+ _logger.ErrorException("Error in ItemUpdated event handler", ex);
+ }
}
}
}
@@ -1063,7 +1082,7 @@ namespace MediaBrowser.Server.Implementations.Library
/// <returns>Task.</returns>
public async Task UpdateItem(BaseItem item, CancellationToken cancellationToken)
{
- await SaveItem(item, cancellationToken).ConfigureAwait(false);
+ await ItemRepository.SaveItem(item, cancellationToken).ConfigureAwait(false);
UpdateItemInLibraryCache(item);
@@ -1100,17 +1119,6 @@ namespace MediaBrowser.Server.Implementations.Library
}
/// <summary>
- /// Saves the item.
- /// </summary>
- /// <param name="item">The item.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task.</returns>
- private Task SaveItem(BaseItem item, CancellationToken cancellationToken)
- {
- return ItemRepository.SaveItem(item, cancellationToken);
- }
-
- /// <summary>
/// Retrieves the item.
/// </summary>
/// <param name="id">The id.</param>