using System; using System.Linq; using Jellyfin.Data.Entities; using Jellyfin.Data.Entities.Security; using Jellyfin.Data.Interfaces; using Microsoft.EntityFrameworkCore; namespace Jellyfin.Server.Implementations; /// public class JellyfinDbContext : DbContext { /// /// Initializes a new instance of the class. /// /// The database context options. public JellyfinDbContext(DbContextOptions options) : base(options) { } /// /// Gets the containing the access schedules. /// public DbSet AccessSchedules => Set(); /// /// Gets the containing the activity logs. /// public DbSet ActivityLogs => Set(); /// /// Gets the containing the API keys. /// public DbSet ApiKeys => Set(); /// /// Gets the containing the devices. /// public DbSet Devices => Set(); /// /// Gets the containing the device options. /// public DbSet DeviceOptions => Set(); /// /// Gets the containing the display preferences. /// public DbSet DisplayPreferences => Set(); /// /// Gets the containing the image infos. /// public DbSet ImageInfos => Set(); /// /// Gets the containing the item display preferences. /// public DbSet ItemDisplayPreferences => Set(); /// /// Gets the containing the custom item display preferences. /// public DbSet CustomItemDisplayPreferences => Set(); /// /// Gets the containing the permissions. /// public DbSet Permissions => Set(); /// /// Gets the containing the preferences. /// public DbSet Preferences => Set(); /// /// Gets the containing the users. /// public DbSet Users => Set(); /// /// Gets the containing the trickplay metadata. /// public DbSet TrickplayInfos => Set(); /// /// Gets the containing the media segments. /// public DbSet MediaSegments => Set(); /*public DbSet Artwork => Set(); public DbSet Books => Set(); public DbSet BookMetadata => Set(); public DbSet Chapters => Set(); public DbSet Collections => Set(); public DbSet CollectionItems => Set(); public DbSet Companies => Set(); public DbSet CompanyMetadata => Set(); public DbSet CustomItems => Set(); public DbSet CustomItemMetadata => Set(); public DbSet Episodes => Set(); public DbSet EpisodeMetadata => Set(); public DbSet Genres => Set(); public DbSet Groups => Set(); public DbSet Libraries => Set(); public DbSet LibraryItems => Set(); public DbSet LibraryRoot => Set(); public DbSet MediaFiles => Set(); public DbSet MediaFileStream => Set(); public DbSet Metadata => Set(); public DbSet MetadataProviders => Set(); public DbSet MetadataProviderIds => Set(); public DbSet Movies => Set(); public DbSet MovieMetadata => Set(); public DbSet MusicAlbums => Set(); public DbSet MusicAlbumMetadata => Set(); public DbSet People => Set(); public DbSet PersonRoles => Set(); public DbSet Photo => Set(); public DbSet PhotoMetadata => Set(); public DbSet ProviderMappings => Set(); public DbSet Ratings => Set(); /// /// Repository for global::Jellyfin.Data.Entities.RatingSource - This is the entity to /// store review ratings, not age ratings. /// public DbSet RatingSources => Set(); public DbSet Releases => Set(); public DbSet Seasons => Set(); public DbSet SeasonMetadata => Set(); public DbSet Series => Set(); public DbSet SeriesMetadata => Set Tracks => Set(); public DbSet TrackMetadata => 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); // Configuration for each entity is in it's own class inside 'ModelConfiguration'. modelBuilder.ApplyConfigurationsFromAssembly(typeof(JellyfinDbContext).Assembly); } }