123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- 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;
- /// <inheritdoc/>
- public class JellyfinDbContext : DbContext
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="JellyfinDbContext"/> class.
- /// </summary>
- /// <param name="options">The database context options.</param>
- public JellyfinDbContext(DbContextOptions<JellyfinDbContext> options) : base(options)
- {
- }
- /// <summary>
- /// Gets the <see cref="DbSet{TEntity}"/> containing the access schedules.
- /// </summary>
- public DbSet<AccessSchedule> AccessSchedules => Set<AccessSchedule>();
- /// <summary>
- /// Gets the <see cref="DbSet{TEntity}"/> containing the activity logs.
- /// </summary>
- public DbSet<ActivityLog> ActivityLogs => Set<ActivityLog>();
- /// <summary>
- /// Gets the <see cref="DbSet{TEntity}"/> containing the API keys.
- /// </summary>
- public DbSet<ApiKey> ApiKeys => Set<ApiKey>();
- /// <summary>
- /// Gets the <see cref="DbSet{TEntity}"/> containing the devices.
- /// </summary>
- public DbSet<Device> Devices => Set<Device>();
- /// <summary>
- /// Gets the <see cref="DbSet{TEntity}"/> containing the device options.
- /// </summary>
- public DbSet<DeviceOptions> DeviceOptions => Set<DeviceOptions>();
- /// <summary>
- /// Gets the <see cref="DbSet{TEntity}"/> containing the display preferences.
- /// </summary>
- public DbSet<DisplayPreferences> DisplayPreferences => Set<DisplayPreferences>();
- /// <summary>
- /// Gets the <see cref="DbSet{TEntity}"/> containing the image infos.
- /// </summary>
- public DbSet<ImageInfo> ImageInfos => Set<ImageInfo>();
- /// <summary>
- /// Gets the <see cref="DbSet{TEntity}"/> containing the item display preferences.
- /// </summary>
- public DbSet<ItemDisplayPreferences> ItemDisplayPreferences => Set<ItemDisplayPreferences>();
- /// <summary>
- /// Gets the <see cref="DbSet{TEntity}"/> containing the custom item display preferences.
- /// </summary>
- public DbSet<CustomItemDisplayPreferences> CustomItemDisplayPreferences => Set<CustomItemDisplayPreferences>();
- /// <summary>
- /// Gets the <see cref="DbSet{TEntity}"/> containing the permissions.
- /// </summary>
- public DbSet<Permission> Permissions => Set<Permission>();
- /// <summary>
- /// Gets the <see cref="DbSet{TEntity}"/> containing the preferences.
- /// </summary>
- public DbSet<Preference> Preferences => Set<Preference>();
- /// <summary>
- /// Gets the <see cref="DbSet{TEntity}"/> containing the users.
- /// </summary>
- public DbSet<User> Users => Set<User>();
- /// <summary>
- /// Gets the <see cref="DbSet{TEntity}"/> containing the trickplay metadata.
- /// </summary>
- public DbSet<TrickplayInfo> TrickplayInfos => Set<TrickplayInfo>();
- /// <summary>
- /// Gets the <see cref="DbSet{TEntity}"/> containing the media segments.
- /// </summary>
- public DbSet<MediaSegment> MediaSegments => Set<MediaSegment>();
- /*public DbSet<Artwork> Artwork => Set<Artwork>();
- public DbSet<Book> Books => Set<Book>();
- public DbSet<BookMetadata> BookMetadata => Set<BookMetadata>();
- public DbSet<Chapter> Chapters => Set<Chapter>();
- public DbSet<Collection> Collections => Set<Collection>();
- public DbSet<CollectionItem> CollectionItems => Set<CollectionItem>();
- public DbSet<Company> Companies => Set<Company>();
- public DbSet<CompanyMetadata> CompanyMetadata => Set<CompanyMetadata>();
- public DbSet<CustomItem> CustomItems => Set<CustomItem>();
- public DbSet<CustomItemMetadata> CustomItemMetadata => Set<CustomItemMetadata>();
- public DbSet<Episode> Episodes => Set<Episode>();
- public DbSet<EpisodeMetadata> EpisodeMetadata => Set<EpisodeMetadata>();
- public DbSet<Genre> Genres => Set<Genre>();
- public DbSet<Group> Groups => Set<Groups>();
- public DbSet<Library> Libraries => Set<Library>();
- public DbSet<LibraryItem> LibraryItems => Set<LibraryItems>();
- public DbSet<LibraryRoot> LibraryRoot => Set<LibraryRoot>();
- public DbSet<MediaFile> MediaFiles => Set<MediaFiles>();
- public DbSet<MediaFileStream> MediaFileStream => Set<MediaFileStream>();
- public DbSet<Metadata> Metadata => Set<Metadata>();
- public DbSet<MetadataProvider> MetadataProviders => Set<MetadataProvider>();
- public DbSet<MetadataProviderId> MetadataProviderIds => Set<MetadataProviderId>();
- public DbSet<Movie> Movies => Set<Movie>();
- public DbSet<MovieMetadata> MovieMetadata => Set<MovieMetadata>();
- public DbSet<MusicAlbum> MusicAlbums => Set<MusicAlbum>();
- public DbSet<MusicAlbumMetadata> MusicAlbumMetadata => Set<MusicAlbumMetadata>();
- public DbSet<Person> People => Set<Person>();
- public DbSet<PersonRole> PersonRoles => Set<PersonRole>();
- public DbSet<Photo> Photo => Set<Photo>();
- public DbSet<PhotoMetadata> PhotoMetadata => Set<PhotoMetadata>();
- public DbSet<ProviderMapping> ProviderMappings => Set<ProviderMapping>();
- public DbSet<Rating> Ratings => Set<Rating>();
- /// <summary>
- /// Repository for global::Jellyfin.Data.Entities.RatingSource - This is the entity to
- /// store review ratings, not age ratings.
- /// </summary>
- public DbSet<RatingSource> RatingSources => Set<RatingSource>();
- public DbSet<Release> Releases => Set<Release>();
- public DbSet<Season> Seasons => Set<Season>();
- public DbSet<SeasonMetadata> SeasonMetadata => Set<SeasonMetadata>();
- public DbSet<Series> Series => Set<Series>();
- public DbSet<SeriesMetadata> SeriesMetadata => Set<SeriesMetadata();
- public DbSet<Track> Tracks => Set<Track>();
- public DbSet<TrackMetadata> TrackMetadata => Set<TrackMetadata>();*/
- /// <inheritdoc/>
- public override int SaveChanges()
- {
- foreach (var saveEntity in ChangeTracker.Entries()
- .Where(e => e.State == EntityState.Modified)
- .Select(entry => entry.Entity)
- .OfType<IHasConcurrencyToken>())
- {
- saveEntity.OnSavingChanges();
- }
- return base.SaveChanges();
- }
- /// <inheritdoc />
- 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);
- }
- }
|