diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-08-13 10:41:45 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-08-13 10:41:45 -0400 |
| commit | 242f0f21dc88b2300fc842f11996d84b3dfa5eb1 (patch) | |
| tree | 22ee60db6bef093770d17109cf0d964495d869a1 /MediaBrowser.Api/Library/LibraryStructureService.cs | |
| parent | e3fd8525d62c76069b1e9227b4b3111ffc817883 (diff) | |
reduce scans when changing library
Diffstat (limited to 'MediaBrowser.Api/Library/LibraryStructureService.cs')
| -rw-r--r-- | MediaBrowser.Api/Library/LibraryStructureService.cs | 115 |
1 files changed, 82 insertions, 33 deletions
diff --git a/MediaBrowser.Api/Library/LibraryStructureService.cs b/MediaBrowser.Api/Library/LibraryStructureService.cs index 91018168b..ac2a10924 100644 --- a/MediaBrowser.Api/Library/LibraryStructureService.cs +++ b/MediaBrowser.Api/Library/LibraryStructureService.cs @@ -1,11 +1,12 @@ -using System.Threading; -using MediaBrowser.Controller; +using MediaBrowser.Controller; +using MediaBrowser.Controller.IO; using MediaBrowser.Controller.Library; using MediaBrowser.Model.Entities; using ServiceStack.ServiceHost; using System; using System.Collections.Generic; using System.Linq; +using System.Threading; namespace MediaBrowser.Api.Library { @@ -152,6 +153,8 @@ namespace MediaBrowser.Api.Library /// </summary> private readonly ILibraryManager _libraryManager; + private readonly IDirectoryWatchers _directoryWatchers; + /// <summary> /// Initializes a new instance of the <see cref="LibraryStructureService"/> class. /// </summary> @@ -159,7 +162,7 @@ namespace MediaBrowser.Api.Library /// <param name="userManager">The user manager.</param> /// <param name="libraryManager">The library manager.</param> /// <exception cref="System.ArgumentNullException">appPaths</exception> - public LibraryStructureService(IServerApplicationPaths appPaths, IUserManager userManager, ILibraryManager libraryManager) + public LibraryStructureService(IServerApplicationPaths appPaths, IUserManager userManager, ILibraryManager libraryManager, IDirectoryWatchers directoryWatchers) { if (appPaths == null) { @@ -169,6 +172,7 @@ namespace MediaBrowser.Api.Library _userManager = userManager; _appPaths = appPaths; _libraryManager = libraryManager; + _directoryWatchers = directoryWatchers; } /// <summary> @@ -200,15 +204,24 @@ namespace MediaBrowser.Api.Library /// <param name="request">The request.</param> public void Post(AddVirtualFolder request) { - if (string.IsNullOrEmpty(request.UserId)) + _directoryWatchers.Stop(); + + try { - LibraryHelpers.AddVirtualFolder(request.Name, request.CollectionType, null, _appPaths); + if (string.IsNullOrEmpty(request.UserId)) + { + LibraryHelpers.AddVirtualFolder(request.Name, request.CollectionType, null, _appPaths); + } + else + { + var user = _userManager.GetUserById(new Guid(request.UserId)); + + LibraryHelpers.AddVirtualFolder(request.Name, request.CollectionType, user, _appPaths); + } } - else + finally { - var user = _userManager.GetUserById(new Guid(request.UserId)); - - LibraryHelpers.AddVirtualFolder(request.Name, request.CollectionType, user, _appPaths); + _directoryWatchers.Start(); } _libraryManager.ValidateMediaLibrary(new Progress<double>(), CancellationToken.None); @@ -220,15 +233,24 @@ namespace MediaBrowser.Api.Library /// <param name="request">The request.</param> public void Post(RenameVirtualFolder request) { - if (string.IsNullOrEmpty(request.UserId)) + _directoryWatchers.Stop(); + + try { - LibraryHelpers.RenameVirtualFolder(request.Name, request.NewName, null, _appPaths); + if (string.IsNullOrEmpty(request.UserId)) + { + LibraryHelpers.RenameVirtualFolder(request.Name, request.NewName, null, _appPaths); + } + else + { + var user = _userManager.GetUserById(new Guid(request.UserId)); + + LibraryHelpers.RenameVirtualFolder(request.Name, request.NewName, user, _appPaths); + } } - else + finally { - var user = _userManager.GetUserById(new Guid(request.UserId)); - - LibraryHelpers.RenameVirtualFolder(request.Name, request.NewName, user, _appPaths); + _directoryWatchers.Start(); } _libraryManager.ValidateMediaLibrary(new Progress<double>(), CancellationToken.None); @@ -240,15 +262,24 @@ namespace MediaBrowser.Api.Library /// <param name="request">The request.</param> public void Delete(RemoveVirtualFolder request) { - if (string.IsNullOrEmpty(request.UserId)) + _directoryWatchers.Stop(); + + try { - LibraryHelpers.RemoveVirtualFolder(request.Name, null, _appPaths); + if (string.IsNullOrEmpty(request.UserId)) + { + LibraryHelpers.RemoveVirtualFolder(request.Name, null, _appPaths); + } + else + { + var user = _userManager.GetUserById(new Guid(request.UserId)); + + LibraryHelpers.RemoveVirtualFolder(request.Name, user, _appPaths); + } } - else + finally { - var user = _userManager.GetUserById(new Guid(request.UserId)); - - LibraryHelpers.RemoveVirtualFolder(request.Name, user, _appPaths); + _directoryWatchers.Start(); } _libraryManager.ValidateMediaLibrary(new Progress<double>(), CancellationToken.None); @@ -260,15 +291,24 @@ namespace MediaBrowser.Api.Library /// <param name="request">The request.</param> public void Post(AddMediaPath request) { - if (string.IsNullOrEmpty(request.UserId)) + _directoryWatchers.Stop(); + + try { - LibraryHelpers.AddMediaPath(request.Name, request.Path, null, _appPaths); + if (string.IsNullOrEmpty(request.UserId)) + { + LibraryHelpers.AddMediaPath(request.Name, request.Path, null, _appPaths); + } + else + { + var user = _userManager.GetUserById(new Guid(request.UserId)); + + LibraryHelpers.AddMediaPath(request.Name, request.Path, user, _appPaths); + } } - else + finally { - var user = _userManager.GetUserById(new Guid(request.UserId)); - - LibraryHelpers.AddMediaPath(request.Name, request.Path, user, _appPaths); + _directoryWatchers.Start(); } _libraryManager.ValidateMediaLibrary(new Progress<double>(), CancellationToken.None); @@ -280,15 +320,24 @@ namespace MediaBrowser.Api.Library /// <param name="request">The request.</param> public void Delete(RemoveMediaPath request) { - if (string.IsNullOrEmpty(request.UserId)) + _directoryWatchers.Stop(); + + try { - LibraryHelpers.RemoveMediaPath(request.Name, request.Path, null, _appPaths); + if (string.IsNullOrEmpty(request.UserId)) + { + LibraryHelpers.RemoveMediaPath(request.Name, request.Path, null, _appPaths); + } + else + { + var user = _userManager.GetUserById(new Guid(request.UserId)); + + LibraryHelpers.RemoveMediaPath(request.Name, request.Path, user, _appPaths); + } } - else + finally { - var user = _userManager.GetUserById(new Guid(request.UserId)); - - LibraryHelpers.RemoveMediaPath(request.Name, request.Path, user, _appPaths); + _directoryWatchers.Start(); } _libraryManager.ValidateMediaLibrary(new Progress<double>(), CancellationToken.None); |
