JellyfinDb.cs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. #pragma warning disable CS1591
  2. using System;
  3. using System.Linq;
  4. using Jellyfin.Data.Entities;
  5. using Jellyfin.Data.Entities.Security;
  6. using Jellyfin.Data.Interfaces;
  7. using Microsoft.EntityFrameworkCore;
  8. namespace Jellyfin.Server.Implementations;
  9. /// <inheritdoc/>
  10. public class JellyfinDb : DbContext
  11. {
  12. /// <summary>
  13. /// Initializes a new instance of the <see cref="JellyfinDb"/> class.
  14. /// </summary>
  15. /// <param name="options">The database context options.</param>
  16. public JellyfinDb(DbContextOptions<JellyfinDb> options) : base(options)
  17. {
  18. }
  19. public DbSet<AccessSchedule> AccessSchedules => Set<AccessSchedule>();
  20. public DbSet<ActivityLog> ActivityLogs => Set<ActivityLog>();
  21. public DbSet<ApiKey> ApiKeys => Set<ApiKey>();
  22. public DbSet<Device> Devices => Set<Device>();
  23. public DbSet<DeviceOptions> DeviceOptions => Set<DeviceOptions>();
  24. public DbSet<DisplayPreferences> DisplayPreferences => Set<DisplayPreferences>();
  25. public DbSet<ImageInfo> ImageInfos => Set<ImageInfo>();
  26. public DbSet<ItemDisplayPreferences> ItemDisplayPreferences => Set<ItemDisplayPreferences>();
  27. public DbSet<CustomItemDisplayPreferences> CustomItemDisplayPreferences => Set<CustomItemDisplayPreferences>();
  28. public DbSet<Permission> Permissions => Set<Permission>();
  29. public DbSet<Preference> Preferences => Set<Preference>();
  30. public DbSet<User> Users => Set<User>();
  31. /*public DbSet<Artwork> Artwork => Set<Artwork>();
  32. public DbSet<Book> Books => Set<Book>();
  33. public DbSet<BookMetadata> BookMetadata => Set<BookMetadata>();
  34. public DbSet<Chapter> Chapters => Set<Chapter>();
  35. public DbSet<Collection> Collections => Set<Collection>();
  36. public DbSet<CollectionItem> CollectionItems => Set<CollectionItem>();
  37. public DbSet<Company> Companies => Set<Company>();
  38. public DbSet<CompanyMetadata> CompanyMetadata => Set<CompanyMetadata>();
  39. public DbSet<CustomItem> CustomItems => Set<CustomItem>();
  40. public DbSet<CustomItemMetadata> CustomItemMetadata => Set<CustomItemMetadata>();
  41. public DbSet<Episode> Episodes => Set<Episode>();
  42. public DbSet<EpisodeMetadata> EpisodeMetadata => Set<EpisodeMetadata>();
  43. public DbSet<Genre> Genres => Set<Genre>();
  44. public DbSet<Group> Groups => Set<Groups>();
  45. public DbSet<Library> Libraries => Set<Library>();
  46. public DbSet<LibraryItem> LibraryItems => Set<LibraryItems>();
  47. public DbSet<LibraryRoot> LibraryRoot => Set<LibraryRoot>();
  48. public DbSet<MediaFile> MediaFiles => Set<MediaFiles>();
  49. public DbSet<MediaFileStream> MediaFileStream => Set<MediaFileStream>();
  50. public DbSet<Metadata> Metadata => Set<Metadata>();
  51. public DbSet<MetadataProvider> MetadataProviders => Set<MetadataProvider>();
  52. public DbSet<MetadataProviderId> MetadataProviderIds => Set<MetadataProviderId>();
  53. public DbSet<Movie> Movies => Set<Movie>();
  54. public DbSet<MovieMetadata> MovieMetadata => Set<MovieMetadata>();
  55. public DbSet<MusicAlbum> MusicAlbums => Set<MusicAlbum>();
  56. public DbSet<MusicAlbumMetadata> MusicAlbumMetadata => Set<MusicAlbumMetadata>();
  57. public DbSet<Person> People => Set<Person>();
  58. public DbSet<PersonRole> PersonRoles => Set<PersonRole>();
  59. public DbSet<Photo> Photo => Set<Photo>();
  60. public DbSet<PhotoMetadata> PhotoMetadata => Set<PhotoMetadata>();
  61. public DbSet<ProviderMapping> ProviderMappings => Set<ProviderMapping>();
  62. public DbSet<Rating> Ratings => Set<Rating>();
  63. /// <summary>
  64. /// Repository for global::Jellyfin.Data.Entities.RatingSource - This is the entity to
  65. /// store review ratings, not age ratings.
  66. /// </summary>
  67. public DbSet<RatingSource> RatingSources => Set<RatingSource>();
  68. public DbSet<Release> Releases => Set<Release>();
  69. public DbSet<Season> Seasons => Set<Season>();
  70. public DbSet<SeasonMetadata> SeasonMetadata => Set<SeasonMetadata>();
  71. public DbSet<Series> Series => Set<Series>();
  72. public DbSet<SeriesMetadata> SeriesMetadata => Set<SeriesMetadata();
  73. public DbSet<Track> Tracks => Set<Track>();
  74. public DbSet<TrackMetadata> TrackMetadata => Set<TrackMetadata>();*/
  75. /// <inheritdoc/>
  76. public override int SaveChanges()
  77. {
  78. foreach (var saveEntity in ChangeTracker.Entries()
  79. .Where(e => e.State == EntityState.Modified)
  80. .Select(entry => entry.Entity)
  81. .OfType<IHasConcurrencyToken>())
  82. {
  83. saveEntity.OnSavingChanges();
  84. }
  85. return base.SaveChanges();
  86. }
  87. /// <inheritdoc />
  88. protected override void OnModelCreating(ModelBuilder modelBuilder)
  89. {
  90. modelBuilder.SetDefaultDateTimeKind(DateTimeKind.Utc);
  91. base.OnModelCreating(modelBuilder);
  92. // Configuration for each entity is in it's own class inside 'ModelConfiguration'.
  93. modelBuilder.ApplyConfigurationsFromAssembly(typeof(JellyfinDb).Assembly);
  94. }
  95. }