#nullable disable #pragma warning disable CS1591 using System; using System.Linq; using Jellyfin.Data.Entities; using Jellyfin.Data.Interfaces; using Microsoft.EntityFrameworkCore; namespace Jellyfin.Server.Implementations { /// public class JellyfinDb : DbContext { /// /// Initializes a new instance of the class. /// /// The database context options. public JellyfinDb(DbContextOptions options) : base(options) { } /// /// Gets or sets the default connection string. /// public static string ConnectionString { get; set; } = @"Data Source=jellyfin.db"; public virtual DbSet AccessSchedules { get; set; } public virtual DbSet ActivityLogs { get; set; } public virtual DbSet DisplayPreferences { get; set; } public virtual DbSet ImageInfos { get; set; } public virtual DbSet ItemDisplayPreferences { get; set; } public virtual DbSet CustomItemDisplayPreferences { get; set; } public virtual DbSet Permissions { get; set; } public virtual DbSet Preferences { get; set; } public virtual DbSet Users { get; set; } /*public virtual DbSet Artwork { get; set; } public virtual DbSet Books { get; set; } public virtual DbSet BookMetadata { get; set; } public virtual DbSet Chapters { get; set; } public virtual DbSet Collections { get; set; } public virtual DbSet CollectionItems { get; set; } public virtual DbSet Companies { get; set; } public virtual DbSet CompanyMetadata { get; set; } public virtual DbSet CustomItems { get; set; } public virtual DbSet CustomItemMetadata { get; set; } public virtual DbSet Episodes { get; set; } public virtual DbSet EpisodeMetadata { get; set; } public virtual DbSet Genres { get; set; } public virtual DbSet Groups { get; set; } public virtual DbSet Libraries { get; set; } public virtual DbSet LibraryItems { get; set; } public virtual DbSet LibraryRoot { get; set; } public virtual DbSet MediaFiles { get; set; } public virtual DbSet MediaFileStream { get; set; } public virtual DbSet Metadata { get; set; } public virtual DbSet MetadataProviders { get; set; } public virtual DbSet MetadataProviderIds { get; set; } public virtual DbSet Movies { get; set; } public virtual DbSet MovieMetadata { get; set; } public virtual DbSet MusicAlbums { get; set; } public virtual DbSet MusicAlbumMetadata { get; set; } public virtual DbSet People { get; set; } public virtual DbSet PersonRoles { get; set; } public virtual DbSet Photo { get; set; } public virtual DbSet PhotoMetadata { get; set; } public virtual DbSet ProviderMappings { get; set; } public virtual DbSet Ratings { get; set; } /// /// Repository for global::Jellyfin.Data.Entities.RatingSource - This is the entity to /// store review ratings, not age ratings. /// public virtual DbSet RatingSources { get; set; } public virtual DbSet Releases { get; set; } public virtual DbSet Seasons { get; set; } public virtual DbSet SeasonMetadata { get; set; } public virtual DbSet Series { get; set; } public virtual DbSet SeriesMetadata { get; set; } public virtual DbSet Tracks { get; set; } public virtual DbSet TrackMetadata { get; set; }*/ /// public override int SaveChanges() { foreach (var saveEntity in ChangeTracker.Entries() .Where(e => e.State == EntityState.Modified) .Select(entry => entry.Entity) .OfType()) { saveEntity.OnSavingChanges(); } return base.SaveChanges(); } /// protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.SetDefaultDateTimeKind(DateTimeKind.Utc); base.OnModelCreating(modelBuilder); modelBuilder.HasDefaultSchema("jellyfin"); modelBuilder.Entity() .HasIndex(entity => entity.UserId) .IsUnique(false); modelBuilder.Entity() .HasIndex(entity => new { entity.UserId, entity.ItemId, entity.Client }) .IsUnique(); modelBuilder.Entity() .HasIndex(entity => entity.UserId) .IsUnique(false); modelBuilder.Entity() .HasIndex(entity => new { entity.UserId, entity.ItemId, entity.Client, entity.Key }) .IsUnique(); } } }