📄 src/Infrastructure/Database/ServiceCollectionExtensions.cs
using Jellyfin.Database.Implementations;
using Jellyfin.Database.Implementations.Locking;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;

namespace Slopper.Infrastructure.Database;

public static class ServiceCollectionExtensions
{
    public static IServiceCollection AddJellyfinDatabase(this IServiceCollection services) =>
        services
            .AddSingleton<IJellyfinDatabaseProvider, JellyfinDatabaseProvider>()
            .AddSingleton<IEntityFrameworkCoreLockingBehavior, EntityFrameworkCoreLockingBehavior>()
            .AddDbContext<JellyfinDbContext>(
                (sp, options) =>
                    options.UseSqlite(sp.GetRequiredService<IConfiguration>().GetConnectionString("database"))
            );
}