| 12345678910111213141516171819202122232425262728293031323334353637383940414243 | using System;using System.Threading;using System.Threading.Tasks;using Microsoft.EntityFrameworkCore;namespace Jellyfin.Server.Implementations;/// <summary>/// Defines the type and extension points for multi database support./// </summary>public interface IJellyfinDatabaseProvider{    /// <summary>    /// Gets or Sets the Database Factory when initialisaition is done.    /// </summary>    IDbContextFactory<JellyfinDbContext>? DbContextFactory { get; set; }    /// <summary>    /// Initialises jellyfins EFCore database access.    /// </summary>    /// <param name="options">The EFCore database options.</param>    void Initialise(DbContextOptionsBuilder options);    /// <summary>    /// Will be invoked when EFCore wants to build its model.    /// </summary>    /// <param name="modelBuilder">The ModelBuilder from EFCore.</param>    void OnModelCreating(ModelBuilder modelBuilder);    /// <summary>    /// If supported this should run any periodic maintaince tasks.    /// </summary>    /// <param name="cancellationToken">The token to abort the operation.</param>    /// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns>    Task RunScheduledOptimisation(CancellationToken cancellationToken);    /// <summary>    /// If supported this should perform any actions that are required on stopping the jellyfin server.    /// </summary>    /// <param name="cancellationToken">The token that will be used to abort the operation.</param>    /// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns>    Task RunShutdownTask(CancellationToken cancellationToken);}
 |