Removing usless IDisposable patterns

This commit is contained in:
Zoe Roux 2021-04-23 18:15:17 +02:00
parent 540a3c27de
commit 22b9f3240f
12 changed files with 12 additions and 211 deletions

View File

@ -12,7 +12,7 @@ namespace Kyoo.Controllers
/// <summary>
/// An interface to interract with the database. Every repository is mapped through here.
/// </summary>
public interface ILibraryManager : IDisposable, IAsyncDisposable
public interface ILibraryManager
{
/// <summary>
/// Get the repository corresponding to the T item.

View File

@ -109,7 +109,7 @@ namespace Kyoo.Controllers
/// <summary>
/// A base class for repositories. Every service implementing this will be handled by the <see cref="LibraryManager"/>.
/// </summary>
public interface IBaseRepository : IDisposable, IAsyncDisposable
public interface IBaseRepository
{
/// <summary>
/// The type for witch this repository is responsible or null if non applicable.
@ -119,7 +119,6 @@ namespace Kyoo.Controllers
/// <summary>
/// A common repository for every resources.
/// It implement's <see cref="IBaseRepository"/> and <see cref="IDisposable"/>/<see cref="IAsyncDisposable"/>.
/// </summary>
/// <typeparam name="T">The resource's type that this repository manage.</typeparam>
public interface IRepository<T> : IBaseRepository where T : class, IResource

View File

@ -60,20 +60,6 @@ namespace Kyoo.Controllers
ProviderRepository = GetRepository<Provider>() as IProviderRepository;
}
/// <inheritdoc />
public void Dispose()
{
foreach (IBaseRepository repo in _repositories)
repo.Dispose();
GC.SuppressFinalize(this);
}
/// <inheritdoc />
public async ValueTask DisposeAsync()
{
await Task.WhenAll(_repositories.Select(x => x.DisposeAsync().AsTask()));
}
/// <inheritdoc />
public IRepository<T> GetRepository<T>()
where T : class, IResource

View File

@ -10,7 +10,6 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Controllers;
using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
namespace Kyoo.CommonApi
{
@ -77,7 +76,7 @@ namespace Kyoo.CommonApi
if (result.DeclaredType == null)
return;
await using ILibraryManager library = context.HttpContext.RequestServices.GetService<ILibraryManager>();
ILibraryManager library = context.HttpContext.RequestServices.GetService<ILibraryManager>();
ICollection<string> fields = (ICollection<string>)context.HttpContext.Items["fields"];
Type pageType = Utility.GetGenericDefinition(result.DeclaredType, typeof(Page<>));

View File

@ -15,10 +15,6 @@ namespace Kyoo.Controllers
/// </summary>
public class EpisodeRepository : LocalRepository<Episode>, IEpisodeRepository
{
/// <summary>
/// Has this instance been disposed and should not handle requests?
/// </summary>
private bool _disposed;
/// <summary>
/// The databse handle
/// </summary>
@ -60,29 +56,6 @@ namespace Kyoo.Controllers
}
/// <inheritdoc />
public override void Dispose()
{
if (_disposed)
return;
_disposed = true;
_database.Dispose();
_providers.Dispose();
_shows.Dispose();
GC.SuppressFinalize(this);
}
/// <inheritdoc />
public override async ValueTask DisposeAsync()
{
if (_disposed)
return;
_disposed = true;
await _database.DisposeAsync();
await _providers.DisposeAsync();
await _shows.DisposeAsync();
}
/// <inheritdoc />
public override async Task<Episode> GetOrDefault(int id)
{

View File

@ -15,10 +15,6 @@ namespace Kyoo.Controllers
/// </summary>
public class LibraryItemRepository : LocalRepository<LibraryItem>, ILibraryItemRepository
{
/// <summary>
/// Has this instance been disposed and should not handle requests?
/// </summary>
private bool _disposed;
/// <summary>
/// The database handle
/// </summary>
@ -62,34 +58,6 @@ namespace Kyoo.Controllers
_collections = new Lazy<ICollectionRepository>(services.GetRequiredService<ICollectionRepository>);
}
/// <inheritdoc />
public override void Dispose()
{
if (_disposed)
return;
_disposed = true;
_database.Dispose();
_providers.Dispose();
if (_shows.IsValueCreated)
_shows.Value.Dispose();
if (_collections.IsValueCreated)
_collections.Value.Dispose();
GC.SuppressFinalize(this);
}
/// <inheritdoc />
public override async ValueTask DisposeAsync()
{
if (_disposed)
return;
_disposed = true;
await _database.DisposeAsync();
await _providers.DisposeAsync();
if (_shows.IsValueCreated)
await _shows.Value.DisposeAsync();
if (_collections.IsValueCreated)
await _collections.Value.DisposeAsync();
}
/// <inheritdoc />
public override async Task<LibraryItem> GetOrDefault(int id)

View File

@ -13,10 +13,6 @@ namespace Kyoo.Controllers
/// </summary>
public class LibraryRepository : LocalRepository<Library>, ILibraryRepository
{
/// <summary>
/// Has this instance been disposed and should not handle requests?
/// </summary>
private bool _disposed;
/// <summary>
/// The database handle
/// </summary>
@ -42,26 +38,6 @@ namespace Kyoo.Controllers
_providers = providers;
}
/// <inheritdoc />
public override void Dispose()
{
if (_disposed)
return;
_disposed = true;
_database.Dispose();
_providers.Dispose();
GC.SuppressFinalize(this);
}
/// <inheritdoc />
public override async ValueTask DisposeAsync()
{
if (_disposed)
return;
_disposed = true;
await _database.DisposeAsync();
await _providers.DisposeAsync();
}
/// <inheritdoc />
public override async Task<ICollection<Library>> Search(string query)

View File

@ -15,10 +15,6 @@ namespace Kyoo.Controllers
/// </summary>
public class PeopleRepository : LocalRepository<People>, IPeopleRepository
{
/// <summary>
/// Has this instance been disposed and should not handle requests?
/// </summary>
private bool _disposed;
/// <summary>
/// The database handle
/// </summary>
@ -52,31 +48,6 @@ namespace Kyoo.Controllers
}
/// <inheritdoc />
public override void Dispose()
{
if (_disposed)
return;
_disposed = true;
_database.Dispose();
_providers.Dispose();
if (_shows.IsValueCreated)
_shows.Value.Dispose();
GC.SuppressFinalize(this);
}
/// <inheritdoc />
public override async ValueTask DisposeAsync()
{
if (_disposed)
return;
_disposed = true;
await _database.DisposeAsync();
await _providers.DisposeAsync();
if (_shows.IsValueCreated)
await _shows.Value.DisposeAsync();
}
/// <inheritdoc />
public override async Task<ICollection<People>> Search(string query)
{

View File

@ -16,10 +16,6 @@ namespace Kyoo.Controllers
/// </summary>
public class SeasonRepository : LocalRepository<Season>, ISeasonRepository
{
/// <summary>
/// Has this instance been disposed and should not handle requests?
/// </summary>
private bool _disposed;
/// <summary>
/// The database handle
/// </summary>
@ -62,33 +58,6 @@ namespace Kyoo.Controllers
}
/// <inheritdoc/>
public override void Dispose()
{
if (_disposed)
return;
_disposed = true;
_database.Dispose();
_providers.Dispose();
_shows.Dispose();
if (_episodes.IsValueCreated)
_episodes.Value.Dispose();
GC.SuppressFinalize(this);
}
/// <inheritdoc/>
public override async ValueTask DisposeAsync()
{
if (_disposed)
return;
_disposed = true;
await _database.DisposeAsync();
await _providers.DisposeAsync();
await _shows.DisposeAsync();
if (_episodes.IsValueCreated)
await _episodes.Value.DisposeAsync();
}
/// <inheritdoc/>
public override async Task<Season> Get(int id)
{

View File

@ -14,10 +14,6 @@ namespace Kyoo.Controllers
/// </summary>
public class ShowRepository : LocalRepository<Show>, IShowRepository
{
/// <summary>
/// Has this instance been disposed and should not handle requests?
/// </summary>
private bool _disposed;
/// <summary>
/// The databse handle
/// </summary>
@ -76,40 +72,6 @@ namespace Kyoo.Controllers
_episodes = new Lazy<IEpisodeRepository>(services.GetRequiredService<IEpisodeRepository>);
}
/// <inheritdoc />
public override void Dispose()
{
if (_disposed)
return;
_disposed = true;
_database.Dispose();
_studios.Dispose();
_people.Dispose();
_genres.Dispose();
_providers.Dispose();
if (_seasons.IsValueCreated)
_seasons.Value.Dispose();
if (_episodes.IsValueCreated)
_episodes.Value.Dispose();
GC.SuppressFinalize(this);
}
/// <inheritdoc />
public override async ValueTask DisposeAsync()
{
if (_disposed)
return;
_disposed = true;
await _database.DisposeAsync();
await _studios.DisposeAsync();
await _people.DisposeAsync();
await _genres.DisposeAsync();
await _providers.DisposeAsync();
if (_seasons.IsValueCreated)
await _seasons.Value.DisposeAsync();
if (_episodes.IsValueCreated)
await _episodes.Value.DisposeAsync();
}
/// <inheritdoc />
public override async Task<ICollection<Show>> Search(string query)

View File

@ -32,7 +32,7 @@ namespace Kyoo.Controllers
public async Task<IEnumerable<string>> GetPossibleParameters()
{
using IServiceScope serviceScope = _serviceProvider.CreateScope();
await using ILibraryManager libraryManager = serviceScope.ServiceProvider.GetService<ILibraryManager>();
ILibraryManager libraryManager = serviceScope.ServiceProvider.GetService<ILibraryManager>();
return (await libraryManager!.GetAll<Library>()).Select(x => x.Slug);
}
@ -56,7 +56,7 @@ namespace Kyoo.Controllers
_parallelTasks = 30;
using IServiceScope serviceScope = _serviceProvider.CreateScope();
await using ILibraryManager libraryManager = serviceScope.ServiceProvider.GetService<ILibraryManager>();
ILibraryManager libraryManager = serviceScope.ServiceProvider.GetService<ILibraryManager>();
foreach (Show show in await libraryManager!.GetAll<Show>())
if (!Directory.Exists(show.Path))
@ -149,7 +149,7 @@ namespace Kyoo.Controllers
if (token.IsCancellationRequested || path.Split(Path.DirectorySeparatorChar).Contains("Subtitles"))
return;
using IServiceScope serviceScope = _serviceProvider.CreateScope();
await using ILibraryManager libraryManager = serviceScope.ServiceProvider.GetService<ILibraryManager>();
ILibraryManager libraryManager = serviceScope.ServiceProvider.GetService<ILibraryManager>();
string patern = _config.GetValue<string>("subtitleRegex");
Regex regex = new(patern, RegexOptions.IgnoreCase);
@ -196,7 +196,7 @@ namespace Kyoo.Controllers
try
{
using IServiceScope serviceScope = _serviceProvider.CreateScope();
await using ILibraryManager libraryManager = serviceScope.ServiceProvider.GetService<ILibraryManager>();
ILibraryManager libraryManager = serviceScope.ServiceProvider.GetService<ILibraryManager>();
string patern = _config.GetValue<string>("regex");
Regex regex = new(patern, RegexOptions.IgnoreCase);

View File

@ -64,8 +64,6 @@ namespace Kyoo.Tasks
await ExtractEpisode(episode, thumbs, subs);
break;
}
await _library!.DisposeAsync();
}
private async Task ExtractShow(Show show, bool thumbs, bool subs, CancellationToken token)