📄
src/Infrastructure/Database/ServiceCollectionExtensions.cs
using System; using Jellyfin.Database.Implementations; using Jellyfin.Database.Implementations.Locking; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Slopper.Domain; namespace Slopper.Infrastructure.Database; public static class ServiceCollectionExtensions { public static IServiceCollection AddJellyfinDatabase(this IServiceCollection services) { services.AddSingleton<IJellyfinDatabaseProvider, JellyfinDatabaseProvider>(); services.AddSingleton<IEntityFrameworkCoreLockingBehavior, EntityFrameworkCoreLockingBehavior>(); services.AddDbContext<JellyfinDbContext>( (sp, options) => options.UseSqlite(sp.GetRequiredService<IConfiguration>().GetConnectionString("jellyfin")) ); services.TryAddSingleton(Random.Shared); services.AddTransient<IMediaRepository, MediaRepository>(); return services; } }