using System; using System.Threading; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; namespace Jellyfin.Server.Implementations; /// /// Defines the type and extension points for multi database support. /// public interface IJellyfinDatabaseProvider : IAsyncDisposable { /// /// Gets or Sets the Database Factory when initialisaition is done. /// IDbContextFactory? DbContextFactory { get; set; } /// /// Initialises jellyfins EFCore database access. /// /// The EFCore database options. void Initialise(DbContextOptionsBuilder options); /// /// Will be invoked when EFCore wants to build its model. /// /// The ModelBuilder from EFCore. void OnModelCreating(ModelBuilder modelBuilder); /// /// If supported this should run any periodic maintaince tasks. /// /// The token to abort the operation. /// A representing the asynchronous operation. Task RunScheduledOptimisation(CancellationToken cancellationToken); }