using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Threading;
using System.Threading.Tasks;
using JetBrains.Annotations;
using Kyoo.Abstractions.Controllers;
using Kyoo.Abstractions.Models;
using Kyoo.Abstractions.Models.Exceptions;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.ChangeTracking;
namespace Kyoo.Database
{
///
/// The database handle used for all local repositories.
/// This is an abstract class. It is meant to be implemented by plugins. This allow the core to be database agnostic.
///
///
/// It should not be used directly, to access the database use a or repositories.
///
public abstract class DatabaseContext : DbContext
{
///
/// All libraries of Kyoo. See .
///
public DbSet Libraries { get; set; }
///
/// All collections of Kyoo. See .
///
public DbSet Collections { get; set; }
///
/// All shows of Kyoo. See .
///
public DbSet Shows { get; set; }
///
/// All seasons of Kyoo. See .
///
public DbSet Seasons { get; set; }
///
/// All episodes of Kyoo. See .
///
public DbSet Episodes { get; set; }
///
/// All tracks of Kyoo. See .
///
public DbSet