blob: b27a88971d8cf94d18cc73def40a5282c2119e03 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
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);
}
|