Implementing dispose/asyncdisposes

This commit is contained in:
Zoe Roux 2020-06-11 16:56:34 +02:00
parent d34a6fd75a
commit 7b266a2dff
11 changed files with 124 additions and 15 deletions

View File

@ -43,24 +43,32 @@ namespace Kyoo.Controllers
public void Dispose() public void Dispose()
{ {
_libraries?.Dispose(); _libraries.Dispose();
_collections?.Dispose(); _collections.Dispose();
_shows?.Dispose(); _shows.Dispose();
_seasons?.Dispose(); _seasons.Dispose();
_episodes?.Dispose(); _episodes.Dispose();
_tracks?.Dispose(); _tracks.Dispose();
_genres?.Dispose(); _genres.Dispose();
_studios?.Dispose(); _studios.Dispose();
_people?.Dispose(); _people.Dispose();
_providers?.Dispose(); _providers.Dispose();
} }
public async ValueTask DisposeAsync() public async ValueTask DisposeAsync()
{ {
return ValueTask.(new [] await Task.WhenAll(
{ _libraries.DisposeAsync().AsTask(),
_libraries.DisposeAsync() _collections.DisposeAsync().AsTask(),
}); _shows.DisposeAsync().AsTask(),
_seasons.DisposeAsync().AsTask(),
_episodes.DisposeAsync().AsTask(),
_tracks.DisposeAsync().AsTask(),
_genres.DisposeAsync().AsTask(),
_studios.DisposeAsync().AsTask(),
_people.DisposeAsync().AsTask(),
_providers.DisposeAsync().AsTask()
);
} }
public Task<Library> GetLibrary(string slug) public Task<Library> GetLibrary(string slug)

View File

@ -19,6 +19,16 @@ namespace Kyoo.Controllers
_database = database; _database = database;
} }
public void Dispose()
{
_database.Dispose();
}
public ValueTask DisposeAsync()
{
return _database.DisposeAsync();
}
public Task<Collection> Get(int id) public Task<Collection> Get(int id)
{ {
return _database.Collections.FirstOrDefaultAsync(x => x.ID == id); return _database.Collections.FirstOrDefaultAsync(x => x.ID == id);

View File

@ -21,6 +21,16 @@ namespace Kyoo.Controllers
_serviceProvider = serviceProvider; _serviceProvider = serviceProvider;
} }
public void Dispose()
{
_database.Dispose();
}
public ValueTask DisposeAsync()
{
return _database.DisposeAsync();
}
public async Task<Episode> Get(int id) public async Task<Episode> Get(int id)
{ {
return await _database.Episodes.FirstOrDefaultAsync(x => x.ID == id); return await _database.Episodes.FirstOrDefaultAsync(x => x.ID == id);

View File

@ -17,6 +17,16 @@ namespace Kyoo.Controllers
{ {
_database = database; _database = database;
} }
public void Dispose()
{
_database.Dispose();
}
public ValueTask DisposeAsync()
{
return _database.DisposeAsync();
}
public async Task<Genre> Get(int id) public async Task<Genre> Get(int id)
{ {

View File

@ -20,7 +20,17 @@ namespace Kyoo.Controllers
_database = database; _database = database;
_serviceProvider = serviceProvider; _serviceProvider = serviceProvider;
} }
public void Dispose()
{
_database.Dispose();
}
public ValueTask DisposeAsync()
{
return _database.DisposeAsync();
}
public Task<Library> Get(int id) public Task<Library> Get(int id)
{ {
return _database.Libraries.FirstOrDefaultAsync(x => x.ID == id); return _database.Libraries.FirstOrDefaultAsync(x => x.ID == id);

View File

@ -19,6 +19,16 @@ namespace Kyoo.Controllers
_database = database; _database = database;
_serviceProvider = serviceProvider; _serviceProvider = serviceProvider;
} }
public void Dispose()
{
_database.Dispose();
}
public ValueTask DisposeAsync()
{
return _database.DisposeAsync();
}
public Task<People> Get(int id) public Task<People> Get(int id)
{ {

View File

@ -18,6 +18,16 @@ namespace Kyoo.Controllers
_database = database; _database = database;
} }
public void Dispose()
{
_database.Dispose();
}
public ValueTask DisposeAsync()
{
return _database.DisposeAsync();
}
public async Task<ProviderID> Get(int id) public async Task<ProviderID> Get(int id)
{ {
return await _database.Providers.FirstOrDefaultAsync(x => x.ID == id); return await _database.Providers.FirstOrDefaultAsync(x => x.ID == id);

View File

@ -21,6 +21,16 @@ namespace Kyoo.Controllers
_serviceProvider = serviceProvider; _serviceProvider = serviceProvider;
} }
public void Dispose()
{
_database.Dispose();
}
public ValueTask DisposeAsync()
{
return _database.DisposeAsync();
}
public async Task<Season> Get(int id) public async Task<Season> Get(int id)
{ {
return await _database.Seasons.FirstOrDefaultAsync(x => x.ID == id); return await _database.Seasons.FirstOrDefaultAsync(x => x.ID == id);

View File

@ -24,6 +24,17 @@ namespace Kyoo.Controllers
_studios = studios; _studios = studios;
} }
public void Dispose()
{
_database.Dispose();
_studios.Dispose();
}
public async ValueTask DisposeAsync()
{
await Task.WhenAll(_database.DisposeAsync().AsTask(), _studios.DisposeAsync().AsTask());
}
public async Task<Show> Get(int id) public async Task<Show> Get(int id)
{ {
return await _database.Shows.FirstOrDefaultAsync(x => x.ID == id); return await _database.Shows.FirstOrDefaultAsync(x => x.ID == id);

View File

@ -18,6 +18,16 @@ namespace Kyoo.Controllers
_database = database; _database = database;
} }
public void Dispose()
{
_database.Dispose();
}
public ValueTask DisposeAsync()
{
return _database.DisposeAsync();
}
public async Task<Studio> Get(int id) public async Task<Studio> Get(int id)
{ {
return await _database.Studios.FirstOrDefaultAsync(x => x.ID == id); return await _database.Studios.FirstOrDefaultAsync(x => x.ID == id);

View File

@ -17,6 +17,16 @@ namespace Kyoo.Controllers
_database = database; _database = database;
} }
public void Dispose()
{
_database.Dispose();
}
public ValueTask DisposeAsync()
{
return _database.DisposeAsync();
}
public async Task<Track> Get(int id) public async Task<Track> Get(int id)
{ {
return await _database.Tracks.FirstOrDefaultAsync(x => x.ID == id); return await _database.Tracks.FirstOrDefaultAsync(x => x.ID == id);