aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Database/Jellyfin.Database.Implementations/Entities
diff options
context:
space:
mode:
authorJPVenson <github@jpb.software>2025-02-20 09:55:02 +0000
committerJPVenson <github@jpb.software>2025-02-20 09:55:02 +0000
commit44dfe554a894561d3878c8f204d989e4d5a72d72 (patch)
tree50e68688e42e62933b0f956ec780984792a74857 /Jellyfin.Database/Jellyfin.Database.Implementations/Entities
parentf07e1f4aaee9b61b07d1389107973ead146c639b (diff)
Moved Database projects under /src
removed old pgsql references
Diffstat (limited to 'Jellyfin.Database/Jellyfin.Database.Implementations/Entities')
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/AccessSchedule.cs62
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ActivityLog.cs123
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/AncestorId.cs29
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/AttachmentStreamInfo.cs49
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/BaseItemEntity.cs186
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/BaseItemExtraType.cs18
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/BaseItemImageInfo.cs59
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/BaseItemMetadataField.cs24
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/BaseItemProvider.cs32
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/BaseItemTrailerType.cs24
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Chapter.cs44
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/CustomItemDisplayPreferences.cs80
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/DisplayPreferences.cs150
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Group.cs68
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/HomeSection.cs44
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ImageInfo.cs54
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ImageInfoImageType.cs76
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ItemDisplayPreferences.cs113
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ItemValue.cs37
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ItemValueMap.cs30
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ItemValueType.cs38
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Artwork.cs64
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Book.cs29
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/BookMetadata.cs34
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Chapter.cs80
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Collection.cs57
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/CollectionItem.cs64
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Company.cs54
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/CompanyMetadata.cs59
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/CustomItem.cs29
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/CustomItemMetadata.cs17
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Episode.cs34
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/EpisodeMetadata.cs49
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Genre.cs50
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/ItemMetadata.cs141
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Library.cs60
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/LibraryItem.cs55
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MediaFile.cs72
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MediaFileStream.cs50
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MetadataProvider.cs53
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MetadataProviderId.cs63
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Movie.cs29
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MovieMetadata.cs70
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MusicAlbum.cs30
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MusicAlbumMetadata.cs56
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Person.cs89
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/PersonRole.cs80
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Photo.cs29
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/PhotoMetadata.cs17
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Rating.cs59
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/RatingSource.cs73
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Release.cs67
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Season.cs35
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/SeasonMetadata.cs29
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Series.cs46
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/SeriesMetadata.cs70
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Track.cs34
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/TrackMetadata.cs17
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/MediaSegment.cs42
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/MediaStreamInfo.cs103
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/MediaStreamTypeEntity.cs37
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/People.cs32
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/PeopleBaseItemMap.cs44
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Permission.cs68
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Preference.cs68
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ProgramAudioEntity.cs37
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Security/ApiKey.cs56
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Security/Device.cs107
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Security/DeviceOptions.cs35
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/TrickplayInfo.cs75
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/User.cs338
-rw-r--r--Jellyfin.Database/Jellyfin.Database.Implementations/Entities/UserData.cs92
72 files changed, 0 insertions, 4418 deletions
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/AccessSchedule.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/AccessSchedule.cs
deleted file mode 100644
index f534e49f3f..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/AccessSchedule.cs
+++ /dev/null
@@ -1,62 +0,0 @@
-using System;
-using System.ComponentModel.DataAnnotations.Schema;
-using System.Xml.Serialization;
-using Jellyfin.Data.Enums;
-
-namespace Jellyfin.Data.Entities
-{
- /// <summary>
- /// An entity representing a user's access schedule.
- /// </summary>
- public class AccessSchedule
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="AccessSchedule"/> class.
- /// </summary>
- /// <param name="dayOfWeek">The day of the week.</param>
- /// <param name="startHour">The start hour.</param>
- /// <param name="endHour">The end hour.</param>
- /// <param name="userId">The associated user's id.</param>
- public AccessSchedule(DynamicDayOfWeek dayOfWeek, double startHour, double endHour, Guid userId)
- {
- UserId = userId;
- DayOfWeek = dayOfWeek;
- StartHour = startHour;
- EndHour = endHour;
- }
-
- /// <summary>
- /// Gets the id of this instance.
- /// </summary>
- /// <remarks>
- /// Identity, Indexed, Required.
- /// </remarks>
- [XmlIgnore]
- [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; private set; }
-
- /// <summary>
- /// Gets the id of the associated user.
- /// </summary>
- [XmlIgnore]
- public Guid UserId { get; private set; }
-
- /// <summary>
- /// Gets or sets the day of week.
- /// </summary>
- /// <value>The day of week.</value>
- public DynamicDayOfWeek DayOfWeek { get; set; }
-
- /// <summary>
- /// Gets or sets the start hour.
- /// </summary>
- /// <value>The start hour.</value>
- public double StartHour { get; set; }
-
- /// <summary>
- /// Gets or sets the end hour.
- /// </summary>
- /// <value>The end hour.</value>
- public double EndHour { get; set; }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ActivityLog.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ActivityLog.cs
deleted file mode 100644
index 51dd0ffb8e..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ActivityLog.cs
+++ /dev/null
@@ -1,123 +0,0 @@
-using System;
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using Jellyfin.Data.Interfaces;
-using Microsoft.Extensions.Logging;
-
-namespace Jellyfin.Data.Entities
-{
- /// <summary>
- /// An entity referencing an activity log entry.
- /// </summary>
- public class ActivityLog : IHasConcurrencyToken
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="ActivityLog"/> class.
- /// Public constructor with required data.
- /// </summary>
- /// <param name="name">The name.</param>
- /// <param name="type">The type.</param>
- /// <param name="userId">The user id.</param>
- public ActivityLog(string name, string type, Guid userId)
- {
- ArgumentException.ThrowIfNullOrEmpty(name);
- ArgumentException.ThrowIfNullOrEmpty(type);
-
- Name = name;
- Type = type;
- UserId = userId;
- DateCreated = DateTime.UtcNow;
- LogSeverity = LogLevel.Information;
- }
-
- /// <summary>
- /// Gets the identity of this instance.
- /// </summary>
- [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; private set; }
-
- /// <summary>
- /// Gets or sets the name.
- /// </summary>
- /// <remarks>
- /// Required, Max length = 512.
- /// </remarks>
- [MaxLength(512)]
- [StringLength(512)]
- public string Name { get; set; }
-
- /// <summary>
- /// Gets or sets the overview.
- /// </summary>
- /// <remarks>
- /// Max length = 512.
- /// </remarks>
- [MaxLength(512)]
- [StringLength(512)]
- public string? Overview { get; set; }
-
- /// <summary>
- /// Gets or sets the short overview.
- /// </summary>
- /// <remarks>
- /// Max length = 512.
- /// </remarks>
- [MaxLength(512)]
- [StringLength(512)]
- public string? ShortOverview { get; set; }
-
- /// <summary>
- /// Gets or sets the type.
- /// </summary>
- /// <remarks>
- /// Required, Max length = 256.
- /// </remarks>
- [MaxLength(256)]
- [StringLength(256)]
- public string Type { get; set; }
-
- /// <summary>
- /// Gets or sets the user id.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public Guid UserId { get; set; }
-
- /// <summary>
- /// Gets or sets the item id.
- /// </summary>
- /// <remarks>
- /// Max length = 256.
- /// </remarks>
- [MaxLength(256)]
- [StringLength(256)]
- public string? ItemId { get; set; }
-
- /// <summary>
- /// Gets or sets the date created. This should be in UTC.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public DateTime DateCreated { get; set; }
-
- /// <summary>
- /// Gets or sets the log severity. Default is <see cref="LogLevel.Trace"/>.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public LogLevel LogSeverity { get; set; }
-
- /// <inheritdoc />
- [ConcurrencyCheck]
- public uint RowVersion { get; private set; }
-
- /// <inheritdoc />
- public void OnSavingChanges()
- {
- RowVersion++;
- }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/AncestorId.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/AncestorId.cs
deleted file mode 100644
index 954416dfe1..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/AncestorId.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-using System;
-
-namespace Jellyfin.Data.Entities;
-
-/// <summary>
-/// Represents the relational information for an <see cref="BaseItemEntity"/>.
-/// </summary>
-public class AncestorId
-{
- /// <summary>
- /// Gets or Sets the AncestorId.
- /// </summary>
- public required Guid ParentItemId { get; set; }
-
- /// <summary>
- /// Gets or Sets the related BaseItem.
- /// </summary>
- public required Guid ItemId { get; set; }
-
- /// <summary>
- /// Gets or Sets the ParentItem.
- /// </summary>
- public required BaseItemEntity ParentItem { get; set; }
-
- /// <summary>
- /// Gets or Sets the Child item.
- /// </summary>
- public required BaseItemEntity Item { get; set; }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/AttachmentStreamInfo.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/AttachmentStreamInfo.cs
deleted file mode 100644
index 19265a0115..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/AttachmentStreamInfo.cs
+++ /dev/null
@@ -1,49 +0,0 @@
-using System;
-
-namespace Jellyfin.Data.Entities;
-
-/// <summary>
-/// Provides information about an Attachment to an <see cref="BaseItemEntity"/>.
-/// </summary>
-public class AttachmentStreamInfo
-{
- /// <summary>
- /// Gets or Sets the <see cref="BaseItemEntity"/> reference.
- /// </summary>
- public required Guid ItemId { get; set; }
-
- /// <summary>
- /// Gets or Sets the <see cref="BaseItemEntity"/> reference.
- /// </summary>
- public required BaseItemEntity Item { get; set; }
-
- /// <summary>
- /// Gets or Sets the index within the source file.
- /// </summary>
- public required int Index { get; set; }
-
- /// <summary>
- /// Gets or Sets the codec of the attachment.
- /// </summary>
- public required string Codec { get; set; }
-
- /// <summary>
- /// Gets or Sets the codec tag of the attachment.
- /// </summary>
- public string? CodecTag { get; set; }
-
- /// <summary>
- /// Gets or Sets the comment of the attachment.
- /// </summary>
- public string? Comment { get; set; }
-
- /// <summary>
- /// Gets or Sets the filename of the attachment.
- /// </summary>
- public string? Filename { get; set; }
-
- /// <summary>
- /// Gets or Sets the attachments mimetype.
- /// </summary>
- public string? MimeType { get; set; }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/BaseItemEntity.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/BaseItemEntity.cs
deleted file mode 100644
index e3e0e0861e..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/BaseItemEntity.cs
+++ /dev/null
@@ -1,186 +0,0 @@
-#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member
-#pragma warning disable CA2227 // Collection properties should be read only
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-
-namespace Jellyfin.Data.Entities;
-
-public class BaseItemEntity
-{
- public required Guid Id { get; set; }
-
- public required string Type { get; set; }
-
- public string? Data { get; set; }
-
- public string? Path { get; set; }
-
- public DateTime? StartDate { get; set; }
-
- public DateTime? EndDate { get; set; }
-
- public Guid? ChannelId { get; set; }
-
- public bool IsMovie { get; set; }
-
- public float? CommunityRating { get; set; }
-
- public string? CustomRating { get; set; }
-
- public int? IndexNumber { get; set; }
-
- public bool IsLocked { get; set; }
-
- public string? Name { get; set; }
-
- public string? OfficialRating { get; set; }
-
- public string? MediaType { get; set; }
-
- public string? Overview { get; set; }
-
- public int? ParentIndexNumber { get; set; }
-
- public DateTime? PremiereDate { get; set; }
-
- public int? ProductionYear { get; set; }
-
- public string? Genres { get; set; }
-
- public string? SortName { get; set; }
-
- public string? ForcedSortName { get; set; }
-
- public long? RunTimeTicks { get; set; }
-
- public DateTime? DateCreated { get; set; }
-
- public DateTime? DateModified { get; set; }
-
- public bool IsSeries { get; set; }
-
- public string? EpisodeTitle { get; set; }
-
- public bool IsRepeat { get; set; }
-
- public string? PreferredMetadataLanguage { get; set; }
-
- public string? PreferredMetadataCountryCode { get; set; }
-
- public DateTime? DateLastRefreshed { get; set; }
-
- public DateTime? DateLastSaved { get; set; }
-
- public bool IsInMixedFolder { get; set; }
-
- public string? Studios { get; set; }
-
- public string? ExternalServiceId { get; set; }
-
- public string? Tags { get; set; }
-
- public bool IsFolder { get; set; }
-
- public int? InheritedParentalRatingValue { get; set; }
-
- public string? UnratedType { get; set; }
-
- public float? CriticRating { get; set; }
-
- public string? CleanName { get; set; }
-
- public string? PresentationUniqueKey { get; set; }
-
- public string? OriginalTitle { get; set; }
-
- public string? PrimaryVersionId { get; set; }
-
- public DateTime? DateLastMediaAdded { get; set; }
-
- public string? Album { get; set; }
-
- public float? LUFS { get; set; }
-
- public float? NormalizationGain { get; set; }
-
- public bool IsVirtualItem { get; set; }
-
- public string? SeriesName { get; set; }
-
- public string? SeasonName { get; set; }
-
- public string? ExternalSeriesId { get; set; }
-
- public string? Tagline { get; set; }
-
- public string? ProductionLocations { get; set; }
-
- public string? ExtraIds { get; set; }
-
- public int? TotalBitrate { get; set; }
-
- public BaseItemExtraType? ExtraType { get; set; }
-
- public string? Artists { get; set; }
-
- public string? AlbumArtists { get; set; }
-
- public string? ExternalId { get; set; }
-
- public string? SeriesPresentationUniqueKey { get; set; }
-
- public string? ShowId { get; set; }
-
- public string? OwnerId { get; set; }
-
- public int? Width { get; set; }
-
- public int? Height { get; set; }
-
- public long? Size { get; set; }
-
- public ProgramAudioEntity? Audio { get; set; }
-
- public Guid? ParentId { get; set; }
-
- public Guid? TopParentId { get; set; }
-
- public Guid? SeasonId { get; set; }
-
- public Guid? SeriesId { get; set; }
-
- public ICollection<PeopleBaseItemMap>? Peoples { get; set; }
-
- public ICollection<UserData>? UserData { get; set; }
-
- public ICollection<ItemValueMap>? ItemValues { get; set; }
-
- public ICollection<MediaStreamInfo>? MediaStreams { get; set; }
-
- public ICollection<Chapter>? Chapters { get; set; }
-
- public ICollection<BaseItemProvider>? Provider { get; set; }
-
- public ICollection<AncestorId>? ParentAncestors { get; set; }
-
- public ICollection<AncestorId>? Children { get; set; }
-
- public ICollection<BaseItemMetadataField>? LockedFields { get; set; }
-
- public ICollection<BaseItemTrailerType>? TrailerTypes { get; set; }
-
- public ICollection<BaseItemImageInfo>? Images { get; set; }
-
- // those are references to __LOCAL__ ids not DB ids ... TODO: Bring the whole folder structure into the DB
- // public ICollection<BaseItemEntity>? SeriesEpisodes { get; set; }
- // public BaseItemEntity? Series { get; set; }
- // public BaseItemEntity? Season { get; set; }
- // public BaseItemEntity? Parent { get; set; }
- // public ICollection<BaseItemEntity>? DirectChildren { get; set; }
- // public BaseItemEntity? TopParent { get; set; }
- // public ICollection<BaseItemEntity>? AllChildren { get; set; }
- // public ICollection<BaseItemEntity>? SeasonEpisodes { get; set; }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/BaseItemExtraType.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/BaseItemExtraType.cs
deleted file mode 100644
index 54aef50e40..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/BaseItemExtraType.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-#pragma warning disable CS1591
-namespace Jellyfin.Data.Entities;
-
-public enum BaseItemExtraType
-{
- Unknown = 0,
- Clip = 1,
- Trailer = 2,
- BehindTheScenes = 3,
- DeletedScene = 4,
- Interview = 5,
- Scene = 6,
- Sample = 7,
- ThemeSong = 8,
- ThemeVideo = 9,
- Featurette = 10,
- Short = 11
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/BaseItemImageInfo.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/BaseItemImageInfo.cs
deleted file mode 100644
index 37723df116..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/BaseItemImageInfo.cs
+++ /dev/null
@@ -1,59 +0,0 @@
-#pragma warning disable CA2227
-
-using System;
-using System.Collections.Generic;
-
-namespace Jellyfin.Data.Entities;
-
-/// <summary>
-/// Enum TrailerTypes.
-/// </summary>
-public class BaseItemImageInfo
-{
- /// <summary>
- /// Gets or Sets.
- /// </summary>
- public required Guid Id { get; set; }
-
- /// <summary>
- /// Gets or Sets the path to the original image.
- /// </summary>
- public required string Path { get; set; }
-
- /// <summary>
- /// Gets or Sets the time the image was last modified.
- /// </summary>
- public DateTime DateModified { get; set; }
-
- /// <summary>
- /// Gets or Sets the imagetype.
- /// </summary>
- public ImageInfoImageType ImageType { get; set; }
-
- /// <summary>
- /// Gets or Sets the width of the original image.
- /// </summary>
- public int Width { get; set; }
-
- /// <summary>
- /// Gets or Sets the height of the original image.
- /// </summary>
- public int Height { get; set; }
-
-#pragma warning disable CA1819 // Properties should not return arrays
- /// <summary>
- /// Gets or Sets the blurhash.
- /// </summary>
- public byte[]? Blurhash { get; set; }
-#pragma warning restore CA1819
-
- /// <summary>
- /// Gets or Sets the reference id to the BaseItem.
- /// </summary>
- public required Guid ItemId { get; set; }
-
- /// <summary>
- /// Gets or Sets the referenced Item.
- /// </summary>
- public required BaseItemEntity Item { get; set; }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/BaseItemMetadataField.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/BaseItemMetadataField.cs
deleted file mode 100644
index 27bbfc4731..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/BaseItemMetadataField.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using System;
-
-namespace Jellyfin.Data.Entities;
-
-/// <summary>
-/// Enum MetadataFields.
-/// </summary>
-public class BaseItemMetadataField
-{
- /// <summary>
- /// Gets or Sets Numerical ID of this enumerable.
- /// </summary>
- public required int Id { get; set; }
-
- /// <summary>
- /// Gets or Sets all referenced <see cref="BaseItemEntity"/>.
- /// </summary>
- public required Guid ItemId { get; set; }
-
- /// <summary>
- /// Gets or Sets all referenced <see cref="BaseItemEntity"/>.
- /// </summary>
- public required BaseItemEntity Item { get; set; }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/BaseItemProvider.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/BaseItemProvider.cs
deleted file mode 100644
index 9a1565728d..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/BaseItemProvider.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-
-namespace Jellyfin.Data.Entities;
-
-/// <summary>
-/// Represents a Key-Value relation of an BaseItem's provider.
-/// </summary>
-public class BaseItemProvider
-{
- /// <summary>
- /// Gets or Sets the reference ItemId.
- /// </summary>
- public Guid ItemId { get; set; }
-
- /// <summary>
- /// Gets or Sets the reference BaseItem.
- /// </summary>
- public required BaseItemEntity Item { get; set; }
-
- /// <summary>
- /// Gets or Sets the ProvidersId.
- /// </summary>
- public required string ProviderId { get; set; }
-
- /// <summary>
- /// Gets or Sets the Providers Value.
- /// </summary>
- public required string ProviderValue { get; set; }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/BaseItemTrailerType.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/BaseItemTrailerType.cs
deleted file mode 100644
index 2bb648138a..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/BaseItemTrailerType.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using System;
-
-namespace Jellyfin.Data.Entities;
-
-/// <summary>
-/// Enum TrailerTypes.
-/// </summary>
-public class BaseItemTrailerType
-{
- /// <summary>
- /// Gets or Sets Numerical ID of this enumerable.
- /// </summary>
- public required int Id { get; set; }
-
- /// <summary>
- /// Gets or Sets all referenced <see cref="BaseItemEntity"/>.
- /// </summary>
- public required Guid ItemId { get; set; }
-
- /// <summary>
- /// Gets or Sets all referenced <see cref="BaseItemEntity"/>.
- /// </summary>
- public required BaseItemEntity Item { get; set; }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Chapter.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Chapter.cs
deleted file mode 100644
index 579442cdb6..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Chapter.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-using System;
-
-namespace Jellyfin.Data.Entities;
-
-/// <summary>
-/// The Chapter entity.
-/// </summary>
-public class Chapter
-{
- /// <summary>
- /// Gets or Sets the <see cref="BaseItemEntity"/> reference id.
- /// </summary>
- public required Guid ItemId { get; set; }
-
- /// <summary>
- /// Gets or Sets the <see cref="BaseItemEntity"/> reference.
- /// </summary>
- public required BaseItemEntity Item { get; set; }
-
- /// <summary>
- /// Gets or Sets the chapters index in Item.
- /// </summary>
- public required int ChapterIndex { get; set; }
-
- /// <summary>
- /// Gets or Sets the position within the source file.
- /// </summary>
- public required long StartPositionTicks { get; set; }
-
- /// <summary>
- /// Gets or Sets the common name.
- /// </summary>
- public string? Name { get; set; }
-
- /// <summary>
- /// Gets or Sets the image path.
- /// </summary>
- public string? ImagePath { get; set; }
-
- /// <summary>
- /// Gets or Sets the time the image was last modified.
- /// </summary>
- public DateTime? ImageDateModified { get; set; }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/CustomItemDisplayPreferences.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/CustomItemDisplayPreferences.cs
deleted file mode 100644
index a606595122..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/CustomItemDisplayPreferences.cs
+++ /dev/null
@@ -1,80 +0,0 @@
-using System;
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-
-namespace Jellyfin.Data.Entities
-{
- /// <summary>
- /// An entity that represents a user's custom display preferences for a specific item.
- /// </summary>
- public class CustomItemDisplayPreferences
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="CustomItemDisplayPreferences"/> class.
- /// </summary>
- /// <param name="userId">The user id.</param>
- /// <param name="itemId">The item id.</param>
- /// <param name="client">The client.</param>
- /// <param name="key">The preference key.</param>
- /// <param name="value">The preference value.</param>
- public CustomItemDisplayPreferences(Guid userId, Guid itemId, string client, string key, string? value)
- {
- UserId = userId;
- ItemId = itemId;
- Client = client;
- Key = key;
- Value = value;
- }
-
- /// <summary>
- /// Gets the Id.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; private set; }
-
- /// <summary>
- /// Gets or sets the user Id.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public Guid UserId { get; set; }
-
- /// <summary>
- /// Gets or sets the id of the associated item.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public Guid ItemId { get; set; }
-
- /// <summary>
- /// Gets or sets the client string.
- /// </summary>
- /// <remarks>
- /// Required. Max Length = 32.
- /// </remarks>
- [MaxLength(32)]
- [StringLength(32)]
- public string Client { get; set; }
-
- /// <summary>
- /// Gets or sets the preference key.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public string Key { get; set; }
-
- /// <summary>
- /// Gets or sets the preference value.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public string? Value { get; set; }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/DisplayPreferences.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/DisplayPreferences.cs
deleted file mode 100644
index f0be657691..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/DisplayPreferences.cs
+++ /dev/null
@@ -1,150 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using Jellyfin.Data.Enums;
-
-namespace Jellyfin.Data.Entities
-{
- /// <summary>
- /// An entity representing a user's display preferences.
- /// </summary>
- public class DisplayPreferences
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="DisplayPreferences"/> class.
- /// </summary>
- /// <param name="userId">The user's id.</param>
- /// <param name="itemId">The item id.</param>
- /// <param name="client">The client string.</param>
- public DisplayPreferences(Guid userId, Guid itemId, string client)
- {
- UserId = userId;
- ItemId = itemId;
- Client = client;
- ShowSidebar = false;
- ShowBackdrop = true;
- SkipForwardLength = 30000;
- SkipBackwardLength = 10000;
- ScrollDirection = ScrollDirection.Horizontal;
- ChromecastVersion = ChromecastVersion.Stable;
-
- HomeSections = new HashSet<HomeSection>();
- }
-
- /// <summary>
- /// Gets the Id.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; private set; }
-
- /// <summary>
- /// Gets or sets the user Id.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public Guid UserId { get; set; }
-
- /// <summary>
- /// Gets or sets the id of the associated item.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public Guid ItemId { get; set; }
-
- /// <summary>
- /// Gets or sets the client string.
- /// </summary>
- /// <remarks>
- /// Required. Max Length = 32.
- /// </remarks>
- [MaxLength(32)]
- [StringLength(32)]
- public string Client { get; set; }
-
- /// <summary>
- /// Gets or sets a value indicating whether to show the sidebar.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public bool ShowSidebar { get; set; }
-
- /// <summary>
- /// Gets or sets a value indicating whether to show the backdrop.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public bool ShowBackdrop { get; set; }
-
- /// <summary>
- /// Gets or sets the scroll direction.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public ScrollDirection ScrollDirection { get; set; }
-
- /// <summary>
- /// Gets or sets what the view should be indexed by.
- /// </summary>
- public IndexingKind? IndexBy { get; set; }
-
- /// <summary>
- /// Gets or sets the length of time to skip forwards, in milliseconds.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public int SkipForwardLength { get; set; }
-
- /// <summary>
- /// Gets or sets the length of time to skip backwards, in milliseconds.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public int SkipBackwardLength { get; set; }
-
- /// <summary>
- /// Gets or sets the Chromecast Version.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public ChromecastVersion ChromecastVersion { get; set; }
-
- /// <summary>
- /// Gets or sets a value indicating whether the next video info overlay should be shown.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public bool EnableNextVideoInfoOverlay { get; set; }
-
- /// <summary>
- /// Gets or sets the dashboard theme.
- /// </summary>
- [MaxLength(32)]
- [StringLength(32)]
- public string? DashboardTheme { get; set; }
-
- /// <summary>
- /// Gets or sets the tv home screen.
- /// </summary>
- [MaxLength(32)]
- [StringLength(32)]
- public string? TvHome { get; set; }
-
- /// <summary>
- /// Gets the home sections.
- /// </summary>
- public virtual ICollection<HomeSection> HomeSections { get; private set; }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Group.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Group.cs
deleted file mode 100644
index 09f2372893..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Group.cs
+++ /dev/null
@@ -1,68 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.Linq;
-using Jellyfin.Data.Enums;
-using Jellyfin.Data.Interfaces;
-
-namespace Jellyfin.Data.Entities
-{
- /// <summary>
- /// An entity representing a group.
- /// </summary>
- public class Group : IHasPermissions, IHasConcurrencyToken
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="Group"/> class.
- /// </summary>
- /// <param name="name">The name of the group.</param>
- public Group(string name)
- {
- ArgumentException.ThrowIfNullOrEmpty(name);
-
- Name = name;
- Id = Guid.NewGuid();
-
- Permissions = new HashSet<Permission>();
- Preferences = new HashSet<Preference>();
- }
-
- /// <summary>
- /// Gets the id of this group.
- /// </summary>
- /// <remarks>
- /// Identity, Indexed, Required.
- /// </remarks>
- public Guid Id { get; private set; }
-
- /// <summary>
- /// Gets or sets the group's name.
- /// </summary>
- /// <remarks>
- /// Required, Max length = 255.
- /// </remarks>
- [MaxLength(255)]
- [StringLength(255)]
- public string Name { get; set; }
-
- /// <inheritdoc />
- [ConcurrencyCheck]
- public uint RowVersion { get; private set; }
-
- /// <summary>
- /// Gets a collection containing the group's permissions.
- /// </summary>
- public virtual ICollection<Permission> Permissions { get; private set; }
-
- /// <summary>
- /// Gets a collection containing the group's preferences.
- /// </summary>
- public virtual ICollection<Preference> Preferences { get; private set; }
-
- /// <inheritdoc />
- public void OnSavingChanges()
- {
- RowVersion++;
- }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/HomeSection.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/HomeSection.cs
deleted file mode 100644
index 8dd6e647e2..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/HomeSection.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-using System.ComponentModel.DataAnnotations.Schema;
-using Jellyfin.Data.Enums;
-
-namespace Jellyfin.Data.Entities
-{
- /// <summary>
- /// An entity representing a section on the user's home page.
- /// </summary>
- public class HomeSection
- {
- /// <summary>
- /// Gets the id.
- /// </summary>
- /// <remarks>
- /// Identity. Required.
- /// </remarks>
- [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; private set; }
-
- /// <summary>
- /// Gets or sets the Id of the associated display preferences.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public int DisplayPreferencesId { get; set; }
-
- /// <summary>
- /// Gets or sets the order.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public int Order { get; set; }
-
- /// <summary>
- /// Gets or sets the type.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public HomeSectionType Type { get; set; }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ImageInfo.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ImageInfo.cs
deleted file mode 100644
index 935a53a263..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ImageInfo.cs
+++ /dev/null
@@ -1,54 +0,0 @@
-using System;
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-
-namespace Jellyfin.Data.Entities
-{
- /// <summary>
- /// An entity representing an image.
- /// </summary>
- public class ImageInfo
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="ImageInfo"/> class.
- /// </summary>
- /// <param name="path">The path.</param>
- public ImageInfo(string path)
- {
- Path = path;
- LastModified = DateTime.UtcNow;
- }
-
- /// <summary>
- /// Gets the id.
- /// </summary>
- /// <remarks>
- /// Identity, Indexed, Required.
- /// </remarks>
- [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; private set; }
-
- /// <summary>
- /// Gets the user id.
- /// </summary>
- public Guid? UserId { get; private set; }
-
- /// <summary>
- /// Gets or sets the path of the image.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- [MaxLength(512)]
- [StringLength(512)]
- public string Path { get; set; }
-
- /// <summary>
- /// Gets or sets the date last modified.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public DateTime LastModified { get; set; }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ImageInfoImageType.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ImageInfoImageType.cs
deleted file mode 100644
index f78178dd22..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ImageInfoImageType.cs
+++ /dev/null
@@ -1,76 +0,0 @@
-namespace Jellyfin.Data.Entities;
-
-/// <summary>
-/// Enum ImageType.
-/// </summary>
-public enum ImageInfoImageType
-{
- /// <summary>
- /// The primary.
- /// </summary>
- Primary = 0,
-
- /// <summary>
- /// The art.
- /// </summary>
- Art = 1,
-
- /// <summary>
- /// The backdrop.
- /// </summary>
- Backdrop = 2,
-
- /// <summary>
- /// The banner.
- /// </summary>
- Banner = 3,
-
- /// <summary>
- /// The logo.
- /// </summary>
- Logo = 4,
-
- /// <summary>
- /// The thumb.
- /// </summary>
- Thumb = 5,
-
- /// <summary>
- /// The disc.
- /// </summary>
- Disc = 6,
-
- /// <summary>
- /// The box.
- /// </summary>
- Box = 7,
-
- /// <summary>
- /// The screenshot.
- /// </summary>
- /// <remarks>
- /// This enum value is obsolete.
- /// XmlSerializer does not serialize/deserialize objects that are marked as [Obsolete].
- /// </remarks>
- Screenshot = 8,
-
- /// <summary>
- /// The menu.
- /// </summary>
- Menu = 9,
-
- /// <summary>
- /// The chapter image.
- /// </summary>
- Chapter = 10,
-
- /// <summary>
- /// The box rear.
- /// </summary>
- BoxRear = 11,
-
- /// <summary>
- /// The user profile image.
- /// </summary>
- Profile = 12
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ItemDisplayPreferences.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ItemDisplayPreferences.cs
deleted file mode 100644
index 93e6664ea4..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ItemDisplayPreferences.cs
+++ /dev/null
@@ -1,113 +0,0 @@
-using System;
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using Jellyfin.Data.Enums;
-
-namespace Jellyfin.Data.Entities
-{
- /// <summary>
- /// An entity that represents a user's display preferences for a specific item.
- /// </summary>
- public class ItemDisplayPreferences
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="ItemDisplayPreferences"/> class.
- /// </summary>
- /// <param name="userId">The user id.</param>
- /// <param name="itemId">The item id.</param>
- /// <param name="client">The client.</param>
- public ItemDisplayPreferences(Guid userId, Guid itemId, string client)
- {
- UserId = userId;
- ItemId = itemId;
- Client = client;
-
- SortBy = "SortName";
- SortOrder = SortOrder.Ascending;
- RememberSorting = false;
- RememberIndexing = false;
- }
-
- /// <summary>
- /// Gets the id.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; private set; }
-
- /// <summary>
- /// Gets or sets the user Id.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public Guid UserId { get; set; }
-
- /// <summary>
- /// Gets or sets the id of the associated item.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public Guid ItemId { get; set; }
-
- /// <summary>
- /// Gets or sets the client string.
- /// </summary>
- /// <remarks>
- /// Required. Max Length = 32.
- /// </remarks>
- [MaxLength(32)]
- [StringLength(32)]
- public string Client { get; set; }
-
- /// <summary>
- /// Gets or sets the view type.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public ViewType ViewType { get; set; }
-
- /// <summary>
- /// Gets or sets a value indicating whether the indexing should be remembered.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public bool RememberIndexing { get; set; }
-
- /// <summary>
- /// Gets or sets what the view should be indexed by.
- /// </summary>
- public IndexingKind? IndexBy { get; set; }
-
- /// <summary>
- /// Gets or sets a value indicating whether the sorting type should be remembered.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public bool RememberSorting { get; set; }
-
- /// <summary>
- /// Gets or sets what the view should be sorted by.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- [MaxLength(64)]
- [StringLength(64)]
- public string SortBy { get; set; }
-
- /// <summary>
- /// Gets or sets the sort order.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public SortOrder SortOrder { get; set; }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ItemValue.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ItemValue.cs
deleted file mode 100644
index 11d8e383ee..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ItemValue.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-using System;
-using System.Collections.Generic;
-
-namespace Jellyfin.Data.Entities;
-
-/// <summary>
-/// Represents an ItemValue for a BaseItem.
-/// </summary>
-public class ItemValue
-{
- /// <summary>
- /// Gets or Sets the ItemValueId.
- /// </summary>
- public required Guid ItemValueId { get; set; }
-
- /// <summary>
- /// Gets or Sets the Type.
- /// </summary>
- public required ItemValueType Type { get; set; }
-
- /// <summary>
- /// Gets or Sets the Value.
- /// </summary>
- public required string Value { get; set; }
-
- /// <summary>
- /// Gets or Sets the sanitized Value.
- /// </summary>
- public required string CleanValue { get; set; }
-
- /// <summary>
- /// Gets or Sets all associated BaseItems.
- /// </summary>
-#pragma warning disable CA2227 // Collection properties should be read only
- public ICollection<ItemValueMap>? BaseItemsMap { get; set; }
-#pragma warning restore CA2227 // Collection properties should be read only
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ItemValueMap.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ItemValueMap.cs
deleted file mode 100644
index 94db6a011b..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ItemValueMap.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-using System;
-using System.Collections.Generic;
-
-namespace Jellyfin.Data.Entities;
-
-/// <summary>
-/// Mapping table for the ItemValue BaseItem relation.
-/// </summary>
-public class ItemValueMap
-{
- /// <summary>
- /// Gets or Sets the ItemId.
- /// </summary>
- public required Guid ItemId { get; set; }
-
- /// <summary>
- /// Gets or Sets the ItemValueId.
- /// </summary>
- public required Guid ItemValueId { get; set; }
-
- /// <summary>
- /// Gets or Sets the referenced <see cref="BaseItemEntity"/>.
- /// </summary>
- public required BaseItemEntity Item { get; set; }
-
- /// <summary>
- /// Gets or Sets the referenced <see cref="ItemValue"/>.
- /// </summary>
- public required ItemValue ItemValue { get; set; }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ItemValueType.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ItemValueType.cs
deleted file mode 100644
index 3bae3beccd..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ItemValueType.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-#pragma warning disable CA1027 // Mark enums with FlagsAttribute
-namespace Jellyfin.Data.Entities;
-
-/// <summary>
-/// Provides the Value types for an <see cref="ItemValue"/>.
-/// </summary>
-public enum ItemValueType
-{
- /// <summary>
- /// Artists.
- /// </summary>
- Artist = 0,
-
- /// <summary>
- /// Album.
- /// </summary>
- AlbumArtist = 1,
-
- /// <summary>
- /// Genre.
- /// </summary>
- Genre = 2,
-
- /// <summary>
- /// Studios.
- /// </summary>
- Studios = 3,
-
- /// <summary>
- /// Tags.
- /// </summary>
- Tags = 4,
-
- /// <summary>
- /// InheritedTags.
- /// </summary>
- InheritedTags = 6,
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Artwork.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Artwork.cs
deleted file mode 100644
index fc3c1036f0..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Artwork.cs
+++ /dev/null
@@ -1,64 +0,0 @@
-using System;
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using Jellyfin.Data.Enums;
-using Jellyfin.Data.Interfaces;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity representing artwork.
- /// </summary>
- public class Artwork : IHasConcurrencyToken
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="Artwork"/> class.
- /// </summary>
- /// <param name="path">The path.</param>
- /// <param name="kind">The kind of art.</param>
- public Artwork(string path, ArtKind kind)
- {
- ArgumentException.ThrowIfNullOrEmpty(path);
-
- Path = path;
- Kind = kind;
- }
-
- /// <summary>
- /// Gets the id.
- /// </summary>
- /// <remarks>
- /// Identity, Indexed, Required.
- /// </remarks>
- [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; private set; }
-
- /// <summary>
- /// Gets or sets the path.
- /// </summary>
- /// <remarks>
- /// Required, Max length = 65535.
- /// </remarks>
- [MaxLength(65535)]
- [StringLength(65535)]
- public string Path { get; set; }
-
- /// <summary>
- /// Gets or sets the kind of artwork.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public ArtKind Kind { get; set; }
-
- /// <inheritdoc />
- [ConcurrencyCheck]
- public uint RowVersion { get; private set; }
-
- /// <inheritdoc />
- public void OnSavingChanges()
- {
- RowVersion++;
- }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Book.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Book.cs
deleted file mode 100644
index a838686d05..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Book.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-using System.Collections.Generic;
-using Jellyfin.Data.Interfaces;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity representing a book.
- /// </summary>
- public class Book : LibraryItem, IHasReleases
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="Book"/> class.
- /// </summary>
- /// <param name="library">The library.</param>
- public Book(Library library) : base(library)
- {
- BookMetadata = new HashSet<BookMetadata>();
- Releases = new HashSet<Release>();
- }
-
- /// <summary>
- /// Gets a collection containing the metadata for this book.
- /// </summary>
- public virtual ICollection<BookMetadata> BookMetadata { get; private set; }
-
- /// <inheritdoc />
- public virtual ICollection<Release> Releases { get; private set; }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/BookMetadata.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/BookMetadata.cs
deleted file mode 100644
index 4a350d200e..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/BookMetadata.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-using System.Collections.Generic;
-using Jellyfin.Data.Interfaces;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity containing metadata for a book.
- /// </summary>
- public class BookMetadata : ItemMetadata, IHasCompanies
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="BookMetadata"/> class.
- /// </summary>
- /// <param name="title">The title or name of the object.</param>
- /// <param name="language">ISO-639-3 3-character language codes.</param>
- public BookMetadata(string title, string language) : base(title, language)
- {
- Publishers = new HashSet<Company>();
- }
-
- /// <summary>
- /// Gets or sets the ISBN.
- /// </summary>
- public long? Isbn { get; set; }
-
- /// <summary>
- /// Gets a collection of the publishers for this book.
- /// </summary>
- public virtual ICollection<Company> Publishers { get; private set; }
-
- /// <inheritdoc />
- public ICollection<Company> Companies => Publishers;
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Chapter.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Chapter.cs
deleted file mode 100644
index f068338f92..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Chapter.cs
+++ /dev/null
@@ -1,80 +0,0 @@
-using System;
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using Jellyfin.Data.Interfaces;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity representing a chapter.
- /// </summary>
- public class Chapter : IHasConcurrencyToken
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="Chapter"/> class.
- /// </summary>
- /// <param name="language">ISO-639-3 3-character language codes.</param>
- /// <param name="startTime">The start time for this chapter.</param>
- public Chapter(string language, long startTime)
- {
- ArgumentException.ThrowIfNullOrEmpty(language);
-
- Language = language;
- StartTime = startTime;
- }
-
- /// <summary>
- /// Gets the id.
- /// </summary>
- /// <remarks>
- /// Identity, Indexed, Required.
- /// </remarks>
- [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; private set; }
-
- /// <summary>
- /// Gets or sets the name.
- /// </summary>
- /// <remarks>
- /// Max length = 1024.
- /// </remarks>
- [MaxLength(1024)]
- [StringLength(1024)]
- public string? Name { get; set; }
-
- /// <summary>
- /// Gets or sets the language.
- /// </summary>
- /// <remarks>
- /// Required, Min length = 3, Max length = 3
- /// ISO-639-3 3-character language codes.
- /// </remarks>
- [MinLength(3)]
- [MaxLength(3)]
- [StringLength(3)]
- public string Language { get; set; }
-
- /// <summary>
- /// Gets or sets the start time.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public long StartTime { get; set; }
-
- /// <summary>
- /// Gets or sets the end time.
- /// </summary>
- public long? EndTime { get; set; }
-
- /// <inheritdoc />
- [ConcurrencyCheck]
- public uint RowVersion { get; private set; }
-
- /// <inheritdoc />
- public void OnSavingChanges()
- {
- RowVersion++;
- }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Collection.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Collection.cs
deleted file mode 100644
index 7de6019692..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Collection.cs
+++ /dev/null
@@ -1,57 +0,0 @@
-#pragma warning disable CA1711 // Identifiers should not have incorrect suffix
-
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using Jellyfin.Data.Interfaces;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity representing a collection.
- /// </summary>
- public class Collection : IHasConcurrencyToken
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="Collection"/> class.
- /// </summary>
- public Collection()
- {
- Items = new HashSet<CollectionItem>();
- }
-
- /// <summary>
- /// Gets the id.
- /// </summary>
- /// <remarks>
- /// Identity, Indexed, Required.
- /// </remarks>
- [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; private set; }
-
- /// <summary>
- /// Gets or sets the name.
- /// </summary>
- /// <remarks>
- /// Max length = 1024.
- /// </remarks>
- [MaxLength(1024)]
- [StringLength(1024)]
- public string? Name { get; set; }
-
- /// <inheritdoc />
- [ConcurrencyCheck]
- public uint RowVersion { get; private set; }
-
- /// <summary>
- /// Gets a collection containing this collection's items.
- /// </summary>
- public virtual ICollection<CollectionItem> Items { get; private set; }
-
- /// <inheritdoc />
- public void OnSavingChanges()
- {
- RowVersion++;
- }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/CollectionItem.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/CollectionItem.cs
deleted file mode 100644
index 15b356a74e..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/CollectionItem.cs
+++ /dev/null
@@ -1,64 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using Jellyfin.Data.Interfaces;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity representing a collection item.
- /// </summary>
- public class CollectionItem : IHasConcurrencyToken
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="CollectionItem"/> class.
- /// </summary>
- /// <param name="libraryItem">The library item.</param>
- public CollectionItem(LibraryItem libraryItem)
- {
- LibraryItem = libraryItem;
- }
-
- /// <summary>
- /// Gets or sets the id.
- /// </summary>
- /// <remarks>
- /// Identity, Indexed, Required.
- /// </remarks>
- [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; set; }
-
- /// <inheritdoc />
- [ConcurrencyCheck]
- public uint RowVersion { get; private set; }
-
- /// <summary>
- /// Gets or sets the library item.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public virtual LibraryItem LibraryItem { get; set; }
-
- /// <summary>
- /// Gets or sets the next item in the collection.
- /// </summary>
- /// <remarks>
- /// TODO check if this properly updated Dependent and has the proper principal relationship.
- /// </remarks>
- public virtual CollectionItem? Next { get; set; }
-
- /// <summary>
- /// Gets or sets the previous item in the collection.
- /// </summary>
- /// <remarks>
- /// TODO check if this properly updated Dependent and has the proper principal relationship.
- /// </remarks>
- public virtual CollectionItem? Previous { get; set; }
-
- /// <inheritdoc />
- public void OnSavingChanges()
- {
- RowVersion++;
- }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Company.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Company.cs
deleted file mode 100644
index 1abbee4458..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Company.cs
+++ /dev/null
@@ -1,54 +0,0 @@
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using Jellyfin.Data.Interfaces;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity representing a company.
- /// </summary>
- public class Company : IHasCompanies, IHasConcurrencyToken
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="Company"/> class.
- /// </summary>
- public Company()
- {
- CompanyMetadata = new HashSet<CompanyMetadata>();
- ChildCompanies = new HashSet<Company>();
- }
-
- /// <summary>
- /// Gets the id.
- /// </summary>
- /// <remarks>
- /// Identity, Indexed, Required.
- /// </remarks>
- [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; private set; }
-
- /// <inheritdoc />
- [ConcurrencyCheck]
- public uint RowVersion { get; private set; }
-
- /// <summary>
- /// Gets a collection containing the metadata.
- /// </summary>
- public virtual ICollection<CompanyMetadata> CompanyMetadata { get; private set; }
-
- /// <summary>
- /// Gets a collection containing this company's child companies.
- /// </summary>
- public virtual ICollection<Company> ChildCompanies { get; private set; }
-
- /// <inheritdoc />
- public ICollection<Company> Companies => ChildCompanies;
-
- /// <inheritdoc />
- public void OnSavingChanges()
- {
- RowVersion++;
- }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/CompanyMetadata.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/CompanyMetadata.cs
deleted file mode 100644
index a29f08c7f6..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/CompanyMetadata.cs
+++ /dev/null
@@ -1,59 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity holding metadata for a <see cref="Company"/>.
- /// </summary>
- public class CompanyMetadata : ItemMetadata
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="CompanyMetadata"/> class.
- /// </summary>
- /// <param name="title">The title or name of the object.</param>
- /// <param name="language">ISO-639-3 3-character language codes.</param>
- public CompanyMetadata(string title, string language) : base(title, language)
- {
- }
-
- /// <summary>
- /// Gets or sets the description.
- /// </summary>
- /// <remarks>
- /// Max length = 65535.
- /// </remarks>
- [MaxLength(65535)]
- [StringLength(65535)]
- public string? Description { get; set; }
-
- /// <summary>
- /// Gets or sets the headquarters.
- /// </summary>
- /// <remarks>
- /// Max length = 255.
- /// </remarks>
- [MaxLength(255)]
- [StringLength(255)]
- public string? Headquarters { get; set; }
-
- /// <summary>
- /// Gets or sets the country code.
- /// </summary>
- /// <remarks>
- /// Max length = 2.
- /// </remarks>
- [MaxLength(2)]
- [StringLength(2)]
- public string? Country { get; set; }
-
- /// <summary>
- /// Gets or sets the homepage.
- /// </summary>
- /// <remarks>
- /// Max length = 1024.
- /// </remarks>
- [MaxLength(1024)]
- [StringLength(1024)]
- public string? Homepage { get; set; }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/CustomItem.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/CustomItem.cs
deleted file mode 100644
index e27d01d860..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/CustomItem.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-using System.Collections.Generic;
-using Jellyfin.Data.Interfaces;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity representing a custom item.
- /// </summary>
- public class CustomItem : LibraryItem, IHasReleases
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="CustomItem"/> class.
- /// </summary>
- /// <param name="library">The library.</param>
- public CustomItem(Library library) : base(library)
- {
- CustomItemMetadata = new HashSet<CustomItemMetadata>();
- Releases = new HashSet<Release>();
- }
-
- /// <summary>
- /// Gets a collection containing the metadata for this item.
- /// </summary>
- public virtual ICollection<CustomItemMetadata> CustomItemMetadata { get; private set; }
-
- /// <inheritdoc />
- public virtual ICollection<Release> Releases { get; private set; }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/CustomItemMetadata.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/CustomItemMetadata.cs
deleted file mode 100644
index af2393870f..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/CustomItemMetadata.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity containing metadata for a custom item.
- /// </summary>
- public class CustomItemMetadata : ItemMetadata
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="CustomItemMetadata"/> class.
- /// </summary>
- /// <param name="title">The title or name of the object.</param>
- /// <param name="language">ISO-639-3 3-character language codes.</param>
- public CustomItemMetadata(string title, string language) : base(title, language)
- {
- }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Episode.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Episode.cs
deleted file mode 100644
index ce2f0c6178..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Episode.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-using System.Collections.Generic;
-using Jellyfin.Data.Interfaces;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity representing an episode.
- /// </summary>
- public class Episode : LibraryItem, IHasReleases
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="Episode"/> class.
- /// </summary>
- /// <param name="library">The library.</param>
- public Episode(Library library) : base(library)
- {
- Releases = new HashSet<Release>();
- EpisodeMetadata = new HashSet<EpisodeMetadata>();
- }
-
- /// <summary>
- /// Gets or sets the episode number.
- /// </summary>
- public int? EpisodeNumber { get; set; }
-
- /// <inheritdoc />
- public virtual ICollection<Release> Releases { get; private set; }
-
- /// <summary>
- /// Gets a collection containing the metadata for this episode.
- /// </summary>
- public virtual ICollection<EpisodeMetadata> EpisodeMetadata { get; private set; }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/EpisodeMetadata.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/EpisodeMetadata.cs
deleted file mode 100644
index b0ef11e0f2..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/EpisodeMetadata.cs
+++ /dev/null
@@ -1,49 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity containing metadata for an <see cref="Episode"/>.
- /// </summary>
- public class EpisodeMetadata : ItemMetadata
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="EpisodeMetadata"/> class.
- /// </summary>
- /// <param name="title">The title or name of the object.</param>
- /// <param name="language">ISO-639-3 3-character language codes.</param>
- public EpisodeMetadata(string title, string language) : base(title, language)
- {
- }
-
- /// <summary>
- /// Gets or sets the outline.
- /// </summary>
- /// <remarks>
- /// Max length = 1024.
- /// </remarks>
- [MaxLength(1024)]
- [StringLength(1024)]
- public string? Outline { get; set; }
-
- /// <summary>
- /// Gets or sets the plot.
- /// </summary>
- /// <remarks>
- /// Max length = 65535.
- /// </remarks>
- [MaxLength(65535)]
- [StringLength(65535)]
- public string? Plot { get; set; }
-
- /// <summary>
- /// Gets or sets the tagline.
- /// </summary>
- /// <remarks>
- /// Max length = 1024.
- /// </remarks>
- [MaxLength(1024)]
- [StringLength(1024)]
- public string? Tagline { get; set; }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Genre.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Genre.cs
deleted file mode 100644
index 3b822ee828..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Genre.cs
+++ /dev/null
@@ -1,50 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using Jellyfin.Data.Interfaces;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity representing a genre.
- /// </summary>
- public class Genre : IHasConcurrencyToken
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="Genre"/> class.
- /// </summary>
- /// <param name="name">The name.</param>
- public Genre(string name)
- {
- Name = name;
- }
-
- /// <summary>
- /// Gets the id.
- /// </summary>
- /// <remarks>
- /// Identity, Indexed, Required.
- /// </remarks>
- [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; private set; }
-
- /// <summary>
- /// Gets or sets the name.
- /// </summary>
- /// <remarks>
- /// Indexed, Required, Max length = 255.
- /// </remarks>
- [MaxLength(255)]
- [StringLength(255)]
- public string Name { get; set; }
-
- /// <inheritdoc />
- [ConcurrencyCheck]
- public uint RowVersion { get; private set; }
-
- /// <inheritdoc />
- public void OnSavingChanges()
- {
- RowVersion++;
- }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/ItemMetadata.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/ItemMetadata.cs
deleted file mode 100644
index fa9276c669..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/ItemMetadata.cs
+++ /dev/null
@@ -1,141 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using Jellyfin.Data.Interfaces;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An abstract class that holds metadata.
- /// </summary>
- public abstract class ItemMetadata : IHasArtwork, IHasConcurrencyToken
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="ItemMetadata"/> class.
- /// </summary>
- /// <param name="title">The title or name of the object.</param>
- /// <param name="language">ISO-639-3 3-character language codes.</param>
- protected ItemMetadata(string title, string language)
- {
- ArgumentException.ThrowIfNullOrEmpty(title);
- ArgumentException.ThrowIfNullOrEmpty(language);
-
- Title = title;
- Language = language;
- DateAdded = DateTime.UtcNow;
- DateModified = DateAdded;
-
- PersonRoles = new HashSet<PersonRole>();
- Genres = new HashSet<Genre>();
- Artwork = new HashSet<Artwork>();
- Ratings = new HashSet<Rating>();
- Sources = new HashSet<MetadataProviderId>();
- }
-
- /// <summary>
- /// Gets the id.
- /// </summary>
- /// <remarks>
- /// Identity, Indexed, Required.
- /// </remarks>
- [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; private set; }
-
- /// <summary>
- /// Gets or sets the title.
- /// </summary>
- /// <remarks>
- /// Required, Max length = 1024.
- /// </remarks>
- [MaxLength(1024)]
- [StringLength(1024)]
- public string Title { get; set; }
-
- /// <summary>
- /// Gets or sets the original title.
- /// </summary>
- /// <remarks>
- /// Max length = 1024.
- /// </remarks>
- [MaxLength(1024)]
- [StringLength(1024)]
- public string? OriginalTitle { get; set; }
-
- /// <summary>
- /// Gets or sets the sort title.
- /// </summary>
- /// <remarks>
- /// Max length = 1024.
- /// </remarks>
- [MaxLength(1024)]
- [StringLength(1024)]
- public string? SortTitle { get; set; }
-
- /// <summary>
- /// Gets or sets the language.
- /// </summary>
- /// <remarks>
- /// Required, Min length = 3, Max length = 3.
- /// ISO-639-3 3-character language codes.
- /// </remarks>
- [MinLength(3)]
- [MaxLength(3)]
- [StringLength(3)]
- public string Language { get; set; }
-
- /// <summary>
- /// Gets or sets the release date.
- /// </summary>
- public DateTimeOffset? ReleaseDate { get; set; }
-
- /// <summary>
- /// Gets the date added.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public DateTime DateAdded { get; private set; }
-
- /// <summary>
- /// Gets or sets the date modified.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public DateTime DateModified { get; set; }
-
- /// <inheritdoc />
- [ConcurrencyCheck]
- public uint RowVersion { get; private set; }
-
- /// <summary>
- /// Gets a collection containing the person roles for this item.
- /// </summary>
- public virtual ICollection<PersonRole> PersonRoles { get; private set; }
-
- /// <summary>
- /// Gets a collection containing the genres for this item.
- /// </summary>
- public virtual ICollection<Genre> Genres { get; private set; }
-
- /// <inheritdoc />
- public virtual ICollection<Artwork> Artwork { get; private set; }
-
- /// <summary>
- /// Gets a collection containing the ratings for this item.
- /// </summary>
- public virtual ICollection<Rating> Ratings { get; private set; }
-
- /// <summary>
- /// Gets a collection containing the metadata sources for this item.
- /// </summary>
- public virtual ICollection<MetadataProviderId> Sources { get; private set; }
-
- /// <inheritdoc />
- public void OnSavingChanges()
- {
- RowVersion++;
- }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Library.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Library.cs
deleted file mode 100644
index 0db42a1c7b..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Library.cs
+++ /dev/null
@@ -1,60 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using Jellyfin.Data.Interfaces;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity representing a library.
- /// </summary>
- public class Library : IHasConcurrencyToken
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="Library"/> class.
- /// </summary>
- /// <param name="name">The name of the library.</param>
- /// <param name="path">The path of the library.</param>
- public Library(string name, string path)
- {
- Name = name;
- Path = path;
- }
-
- /// <summary>
- /// Gets the id.
- /// </summary>
- /// <remarks>
- /// Identity, Indexed, Required.
- /// </remarks>
- [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; private set; }
-
- /// <summary>
- /// Gets or sets the name.
- /// </summary>
- /// <remarks>
- /// Required, Max length = 128.
- /// </remarks>
- [MaxLength(128)]
- [StringLength(128)]
- public string Name { get; set; }
-
- /// <summary>
- /// Gets or sets the root path of the library.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public string Path { get; set; }
-
- /// <inheritdoc />
- [ConcurrencyCheck]
- public uint RowVersion { get; private set; }
-
- /// <inheritdoc />
- public void OnSavingChanges()
- {
- RowVersion++;
- }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/LibraryItem.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/LibraryItem.cs
deleted file mode 100644
index d889b871ed..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/LibraryItem.cs
+++ /dev/null
@@ -1,55 +0,0 @@
-using System;
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using Jellyfin.Data.Interfaces;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity representing a library item.
- /// </summary>
- public abstract class LibraryItem : IHasConcurrencyToken
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="LibraryItem"/> class.
- /// </summary>
- /// <param name="library">The library of this item.</param>
- protected LibraryItem(Library library)
- {
- DateAdded = DateTime.UtcNow;
- Library = library;
- }
-
- /// <summary>
- /// Gets the id.
- /// </summary>
- /// <remarks>
- /// Identity, Indexed, Required.
- /// </remarks>
- [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; private set; }
-
- /// <summary>
- /// Gets the date this library item was added.
- /// </summary>
- public DateTime DateAdded { get; private set; }
-
- /// <inheritdoc />
- [ConcurrencyCheck]
- public uint RowVersion { get; private set; }
-
- /// <summary>
- /// Gets or sets the library of this item.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public virtual Library Library { get; set; }
-
- /// <inheritdoc />
- public void OnSavingChanges()
- {
- RowVersion++;
- }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MediaFile.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MediaFile.cs
deleted file mode 100644
index 7b5a3af64c..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MediaFile.cs
+++ /dev/null
@@ -1,72 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using Jellyfin.Data.Enums;
-using Jellyfin.Data.Interfaces;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity representing a file on disk.
- /// </summary>
- public class MediaFile : IHasConcurrencyToken
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="MediaFile"/> class.
- /// </summary>
- /// <param name="path">The path relative to the LibraryRoot.</param>
- /// <param name="kind">The file kind.</param>
- public MediaFile(string path, MediaFileKind kind)
- {
- ArgumentException.ThrowIfNullOrEmpty(path);
-
- Path = path;
- Kind = kind;
-
- MediaFileStreams = new HashSet<MediaFileStream>();
- }
-
- /// <summary>
- /// Gets the id.
- /// </summary>
- /// <remarks>
- /// Identity, Indexed, Required.
- /// </remarks>
- [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; private set; }
-
- /// <summary>
- /// Gets or sets the path relative to the library root.
- /// </summary>
- /// <remarks>
- /// Required, Max length = 65535.
- /// </remarks>
- [MaxLength(65535)]
- [StringLength(65535)]
- public string Path { get; set; }
-
- /// <summary>
- /// Gets or sets the kind of media file.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public MediaFileKind Kind { get; set; }
-
- /// <inheritdoc />
- [ConcurrencyCheck]
- public uint RowVersion { get; private set; }
-
- /// <summary>
- /// Gets a collection containing the streams in this file.
- /// </summary>
- public virtual ICollection<MediaFileStream> MediaFileStreams { get; private set; }
-
- /// <inheritdoc />
- public void OnSavingChanges()
- {
- RowVersion++;
- }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MediaFileStream.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MediaFileStream.cs
deleted file mode 100644
index e24e73ecb7..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MediaFileStream.cs
+++ /dev/null
@@ -1,50 +0,0 @@
-#pragma warning disable CA1711 // Identifiers should not have incorrect suffix
-
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using Jellyfin.Data.Interfaces;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity representing a stream in a media file.
- /// </summary>
- public class MediaFileStream : IHasConcurrencyToken
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="MediaFileStream"/> class.
- /// </summary>
- /// <param name="streamNumber">The number of this stream.</param>
- public MediaFileStream(int streamNumber)
- {
- StreamNumber = streamNumber;
- }
-
- /// <summary>
- /// Gets the id.
- /// </summary>
- /// <remarks>
- /// Identity, Indexed, Required.
- /// </remarks>
- [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; private set; }
-
- /// <summary>
- /// Gets or sets the stream number.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public int StreamNumber { get; set; }
-
- /// <inheritdoc />
- [ConcurrencyCheck]
- public uint RowVersion { get; private set; }
-
- /// <inheritdoc />
- public void OnSavingChanges()
- {
- RowVersion++;
- }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MetadataProvider.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MetadataProvider.cs
deleted file mode 100644
index b38d6a4f1f..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MetadataProvider.cs
+++ /dev/null
@@ -1,53 +0,0 @@
-using System;
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using Jellyfin.Data.Interfaces;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity representing a metadata provider.
- /// </summary>
- public class MetadataProvider : IHasConcurrencyToken
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="MetadataProvider"/> class.
- /// </summary>
- /// <param name="name">The name of the metadata provider.</param>
- public MetadataProvider(string name)
- {
- ArgumentException.ThrowIfNullOrEmpty(name);
-
- Name = name;
- }
-
- /// <summary>
- /// Gets the id.
- /// </summary>
- /// <remarks>
- /// Identity, Indexed, Required.
- /// </remarks>
- [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; private set; }
-
- /// <summary>
- /// Gets or sets the name.
- /// </summary>
- /// <remarks>
- /// Required, Max length = 1024.
- /// </remarks>
- [MaxLength(1024)]
- [StringLength(1024)]
- public string Name { get; set; }
-
- /// <inheritdoc />
- [ConcurrencyCheck]
- public uint RowVersion { get; private set; }
-
- /// <inheritdoc />
- public void OnSavingChanges()
- {
- RowVersion++;
- }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MetadataProviderId.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MetadataProviderId.cs
deleted file mode 100644
index a198f53ba3..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MetadataProviderId.cs
+++ /dev/null
@@ -1,63 +0,0 @@
-using System;
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using Jellyfin.Data.Interfaces;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity representing a unique identifier for a metadata provider.
- /// </summary>
- public class MetadataProviderId : IHasConcurrencyToken
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="MetadataProviderId"/> class.
- /// </summary>
- /// <param name="providerId">The provider id.</param>
- /// <param name="metadataProvider">The metadata provider.</param>
- public MetadataProviderId(string providerId, MetadataProvider metadataProvider)
- {
- ArgumentException.ThrowIfNullOrEmpty(providerId);
-
- ProviderId = providerId;
- MetadataProvider = metadataProvider;
- }
-
- /// <summary>
- /// Gets the id.
- /// </summary>
- /// <remarks>
- /// Identity, Indexed, Required.
- /// </remarks>
- [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; private set; }
-
- /// <summary>
- /// Gets or sets the provider id.
- /// </summary>
- /// <remarks>
- /// Required, Max length = 255.
- /// </remarks>
- [MaxLength(255)]
- [StringLength(255)]
- public string ProviderId { get; set; }
-
- /// <inheritdoc />
- [ConcurrencyCheck]
- public uint RowVersion { get; private set; }
-
- /// <summary>
- /// Gets or sets the metadata provider.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public virtual MetadataProvider MetadataProvider { get; set; }
-
- /// <inheritdoc />
- public void OnSavingChanges()
- {
- RowVersion++;
- }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Movie.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Movie.cs
deleted file mode 100644
index 499fafd0e1..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Movie.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-using System.Collections.Generic;
-using Jellyfin.Data.Interfaces;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity representing a movie.
- /// </summary>
- public class Movie : LibraryItem, IHasReleases
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="Movie"/> class.
- /// </summary>
- /// <param name="library">The library.</param>
- public Movie(Library library) : base(library)
- {
- Releases = new HashSet<Release>();
- MovieMetadata = new HashSet<MovieMetadata>();
- }
-
- /// <inheritdoc />
- public virtual ICollection<Release> Releases { get; private set; }
-
- /// <summary>
- /// Gets a collection containing the metadata for this movie.
- /// </summary>
- public virtual ICollection<MovieMetadata> MovieMetadata { get; private set; }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MovieMetadata.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MovieMetadata.cs
deleted file mode 100644
index 44b5f34d7f..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MovieMetadata.cs
+++ /dev/null
@@ -1,70 +0,0 @@
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using Jellyfin.Data.Interfaces;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity holding the metadata for a movie.
- /// </summary>
- public class MovieMetadata : ItemMetadata, IHasCompanies
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="MovieMetadata"/> class.
- /// </summary>
- /// <param name="title">The title or name of the movie.</param>
- /// <param name="language">ISO-639-3 3-character language codes.</param>
- public MovieMetadata(string title, string language) : base(title, language)
- {
- Studios = new HashSet<Company>();
- }
-
- /// <summary>
- /// Gets or sets the outline.
- /// </summary>
- /// <remarks>
- /// Max length = 1024.
- /// </remarks>
- [MaxLength(1024)]
- [StringLength(1024)]
- public string? Outline { get; set; }
-
- /// <summary>
- /// Gets or sets the tagline.
- /// </summary>
- /// <remarks>
- /// Max length = 1024.
- /// </remarks>
- [MaxLength(1024)]
- [StringLength(1024)]
- public string? Tagline { get; set; }
-
- /// <summary>
- /// Gets or sets the plot.
- /// </summary>
- /// <remarks>
- /// Max length = 65535.
- /// </remarks>
- [MaxLength(65535)]
- [StringLength(65535)]
- public string? Plot { get; set; }
-
- /// <summary>
- /// Gets or sets the country code.
- /// </summary>
- /// <remarks>
- /// Max length = 2.
- /// </remarks>
- [MaxLength(2)]
- [StringLength(2)]
- public string? Country { get; set; }
-
- /// <summary>
- /// Gets the studios that produced this movie.
- /// </summary>
- public virtual ICollection<Company> Studios { get; private set; }
-
- /// <inheritdoc />
- public ICollection<Company> Companies => Studios;
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MusicAlbum.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MusicAlbum.cs
deleted file mode 100644
index d6231bbf02..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MusicAlbum.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-using System.Collections.Generic;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity representing a music album.
- /// </summary>
- public class MusicAlbum : LibraryItem
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="MusicAlbum"/> class.
- /// </summary>
- /// <param name="library">The library.</param>
- public MusicAlbum(Library library) : base(library)
- {
- MusicAlbumMetadata = new HashSet<MusicAlbumMetadata>();
- Tracks = new HashSet<Track>();
- }
-
- /// <summary>
- /// Gets a collection containing the album metadata.
- /// </summary>
- public virtual ICollection<MusicAlbumMetadata> MusicAlbumMetadata { get; private set; }
-
- /// <summary>
- /// Gets a collection containing the tracks.
- /// </summary>
- public virtual ICollection<Track> Tracks { get; private set; }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MusicAlbumMetadata.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MusicAlbumMetadata.cs
deleted file mode 100644
index 691f3504fa..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/MusicAlbumMetadata.cs
+++ /dev/null
@@ -1,56 +0,0 @@
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity holding the metadata for a music album.
- /// </summary>
- public class MusicAlbumMetadata : ItemMetadata
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="MusicAlbumMetadata"/> class.
- /// </summary>
- /// <param name="title">The title or name of the album.</param>
- /// <param name="language">ISO-639-3 3-character language codes.</param>
- public MusicAlbumMetadata(string title, string language) : base(title, language)
- {
- Labels = new HashSet<Company>();
- }
-
- /// <summary>
- /// Gets or sets the barcode.
- /// </summary>
- /// <remarks>
- /// Max length = 255.
- /// </remarks>
- [MaxLength(255)]
- [StringLength(255)]
- public string? Barcode { get; set; }
-
- /// <summary>
- /// Gets or sets the label number.
- /// </summary>
- /// <remarks>
- /// Max length = 255.
- /// </remarks>
- [MaxLength(255)]
- [StringLength(255)]
- public string? LabelNumber { get; set; }
-
- /// <summary>
- /// Gets or sets the country code.
- /// </summary>
- /// <remarks>
- /// Max length = 2.
- /// </remarks>
- [MaxLength(2)]
- [StringLength(2)]
- public string? Country { get; set; }
-
- /// <summary>
- /// Gets a collection containing the labels.
- /// </summary>
- public virtual ICollection<Company> Labels { get; private set; }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Person.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Person.cs
deleted file mode 100644
index 90dc55b70d..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Person.cs
+++ /dev/null
@@ -1,89 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using Jellyfin.Data.Interfaces;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity representing a person.
- /// </summary>
- public class Person : IHasConcurrencyToken
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="Person"/> class.
- /// </summary>
- /// <param name="name">The name of the person.</param>
- public Person(string name)
- {
- ArgumentException.ThrowIfNullOrEmpty(name);
-
- Name = name;
- DateAdded = DateTime.UtcNow;
- DateModified = DateAdded;
-
- Sources = new HashSet<MetadataProviderId>();
- }
-
- /// <summary>
- /// Gets the id.
- /// </summary>
- /// <remarks>
- /// Identity, Indexed, Required.
- /// </remarks>
- [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; private set; }
-
- /// <summary>
- /// Gets or sets the name.
- /// </summary>
- /// <remarks>
- /// Required, Max length = 1024.
- /// </remarks>
- [MaxLength(1024)]
- [StringLength(1024)]
- public string Name { get; set; }
-
- /// <summary>
- /// Gets or sets the source id.
- /// </summary>
- /// <remarks>
- /// Max length = 255.
- /// </remarks>
- [MaxLength(256)]
- [StringLength(256)]
- public string? SourceId { get; set; }
-
- /// <summary>
- /// Gets the date added.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public DateTime DateAdded { get; private set; }
-
- /// <summary>
- /// Gets or sets the date modified.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public DateTime DateModified { get; set; }
-
- /// <inheritdoc />
- [ConcurrencyCheck]
- public uint RowVersion { get; private set; }
-
- /// <summary>
- /// Gets a list of metadata sources for this person.
- /// </summary>
- public virtual ICollection<MetadataProviderId> Sources { get; private set; }
-
- /// <inheritdoc />
- public void OnSavingChanges()
- {
- RowVersion++;
- }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/PersonRole.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/PersonRole.cs
deleted file mode 100644
index 7d40bdf448..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/PersonRole.cs
+++ /dev/null
@@ -1,80 +0,0 @@
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using Jellyfin.Data.Enums;
-using Jellyfin.Data.Interfaces;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity representing a person's role in media.
- /// </summary>
- public class PersonRole : IHasArtwork, IHasConcurrencyToken
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="PersonRole"/> class.
- /// </summary>
- /// <param name="type">The role type.</param>
- /// <param name="person">The person.</param>
- public PersonRole(PersonRoleType type, Person person)
- {
- Type = type;
- Person = person;
- Artwork = new HashSet<Artwork>();
- Sources = new HashSet<MetadataProviderId>();
- }
-
- /// <summary>
- /// Gets the id.
- /// </summary>
- /// <remarks>
- /// Identity, Indexed, Required.
- /// </remarks>
- [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; private set; }
-
- /// <summary>
- /// Gets or sets the name of the person's role.
- /// </summary>
- /// <remarks>
- /// Max length = 1024.
- /// </remarks>
- [MaxLength(1024)]
- [StringLength(1024)]
- public string? Role { get; set; }
-
- /// <summary>
- /// Gets or sets the person's role type.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public PersonRoleType Type { get; set; }
-
- /// <inheritdoc />
- [ConcurrencyCheck]
- public uint RowVersion { get; private set; }
-
- /// <summary>
- /// Gets or sets the person.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public virtual Person Person { get; set; }
-
- /// <inheritdoc />
- public virtual ICollection<Artwork> Artwork { get; private set; }
-
- /// <summary>
- /// Gets a collection containing the metadata sources for this person role.
- /// </summary>
- public virtual ICollection<MetadataProviderId> Sources { get; private set; }
-
- /// <inheritdoc />
- public void OnSavingChanges()
- {
- RowVersion++;
- }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Photo.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Photo.cs
deleted file mode 100644
index 4b459432bc..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Photo.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-using System.Collections.Generic;
-using Jellyfin.Data.Interfaces;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity representing a photo.
- /// </summary>
- public class Photo : LibraryItem, IHasReleases
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="Photo"/> class.
- /// </summary>
- /// <param name="library">The library.</param>
- public Photo(Library library) : base(library)
- {
- PhotoMetadata = new HashSet<PhotoMetadata>();
- Releases = new HashSet<Release>();
- }
-
- /// <summary>
- /// Gets a collection containing the photo metadata.
- /// </summary>
- public virtual ICollection<PhotoMetadata> PhotoMetadata { get; private set; }
-
- /// <inheritdoc />
- public virtual ICollection<Release> Releases { get; private set; }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/PhotoMetadata.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/PhotoMetadata.cs
deleted file mode 100644
index 6c284307d7..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/PhotoMetadata.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity that holds metadata for a photo.
- /// </summary>
- public class PhotoMetadata : ItemMetadata
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="PhotoMetadata"/> class.
- /// </summary>
- /// <param name="title">The title or name of the photo.</param>
- /// <param name="language">ISO-639-3 3-character language codes.</param>
- public PhotoMetadata(string title, string language) : base(title, language)
- {
- }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Rating.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Rating.cs
deleted file mode 100644
index 58c8fa49ef..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Rating.cs
+++ /dev/null
@@ -1,59 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using Jellyfin.Data.Interfaces;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity representing a rating for an entity.
- /// </summary>
- public class Rating : IHasConcurrencyToken
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="Rating"/> class.
- /// </summary>
- /// <param name="value">The value.</param>
- public Rating(double value)
- {
- Value = value;
- }
-
- /// <summary>
- /// Gets the id.
- /// </summary>
- /// <remarks>
- /// Identity, Indexed, Required.
- /// </remarks>
- [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; private set; }
-
- /// <summary>
- /// Gets or sets the value.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public double Value { get; set; }
-
- /// <summary>
- /// Gets or sets the number of votes.
- /// </summary>
- public int? Votes { get; set; }
-
- /// <inheritdoc />
- [ConcurrencyCheck]
- public uint RowVersion { get; private set; }
-
- /// <summary>
- /// Gets or sets the rating type.
- /// If this is <c>null</c> it's the internal user rating.
- /// </summary>
- public virtual RatingSource? RatingType { get; set; }
-
- /// <inheritdoc />
- public void OnSavingChanges()
- {
- RowVersion++;
- }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/RatingSource.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/RatingSource.cs
deleted file mode 100644
index 0f3a073244..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/RatingSource.cs
+++ /dev/null
@@ -1,73 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using Jellyfin.Data.Interfaces;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// This is the entity to store review ratings, not age ratings.
- /// </summary>
- public class RatingSource : IHasConcurrencyToken
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="RatingSource"/> class.
- /// </summary>
- /// <param name="minimumValue">The minimum value.</param>
- /// <param name="maximumValue">The maximum value.</param>
- public RatingSource(double minimumValue, double maximumValue)
- {
- MinimumValue = minimumValue;
- MaximumValue = maximumValue;
- }
-
- /// <summary>
- /// Gets the id.
- /// </summary>
- /// <remarks>
- /// Identity, Indexed, Required.
- /// </remarks>
- [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; private set; }
-
- /// <summary>
- /// Gets or sets the name.
- /// </summary>
- /// <remarks>
- /// Max length = 1024.
- /// </remarks>
- [MaxLength(1024)]
- [StringLength(1024)]
- public string? Name { get; set; }
-
- /// <summary>
- /// Gets or sets the minimum value.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public double MinimumValue { get; set; }
-
- /// <summary>
- /// Gets or sets the maximum value.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public double MaximumValue { get; set; }
-
- /// <inheritdoc />
- [ConcurrencyCheck]
- public uint RowVersion { get; private set; }
-
- /// <summary>
- /// Gets or sets the metadata source.
- /// </summary>
- public virtual MetadataProviderId? Source { get; set; }
-
- /// <inheritdoc />
- public void OnSavingChanges()
- {
- RowVersion++;
- }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Release.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Release.cs
deleted file mode 100644
index e68ab9105a..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Release.cs
+++ /dev/null
@@ -1,67 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using Jellyfin.Data.Interfaces;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity representing a release for a library item, eg. Director's cut vs. standard.
- /// </summary>
- public class Release : IHasConcurrencyToken
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="Release"/> class.
- /// </summary>
- /// <param name="name">The name of this release.</param>
- public Release(string name)
- {
- ArgumentException.ThrowIfNullOrEmpty(name);
-
- Name = name;
-
- MediaFiles = new HashSet<MediaFile>();
- Chapters = new HashSet<Chapter>();
- }
-
- /// <summary>
- /// Gets the id.
- /// </summary>
- /// <remarks>
- /// Identity, Indexed, Required.
- /// </remarks>
- [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; private set; }
-
- /// <summary>
- /// Gets or sets the name.
- /// </summary>
- /// <remarks>
- /// Required, Max length = 1024.
- /// </remarks>
- [MaxLength(1024)]
- [StringLength(1024)]
- public string Name { get; set; }
-
- /// <inheritdoc />
- [ConcurrencyCheck]
- public uint RowVersion { get; private set; }
-
- /// <summary>
- /// Gets a collection containing the media files for this release.
- /// </summary>
- public virtual ICollection<MediaFile> MediaFiles { get; private set; }
-
- /// <summary>
- /// Gets a collection containing the chapters for this release.
- /// </summary>
- public virtual ICollection<Chapter> Chapters { get; private set; }
-
- /// <inheritdoc />
- public void OnSavingChanges()
- {
- RowVersion++;
- }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Season.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Season.cs
deleted file mode 100644
index fc110b49da..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Season.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using System.Collections.Generic;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity representing a season.
- /// </summary>
- public class Season : LibraryItem
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="Season"/> class.
- /// </summary>
- /// <param name="library">The library.</param>
- public Season(Library library) : base(library)
- {
- Episodes = new HashSet<Episode>();
- SeasonMetadata = new HashSet<SeasonMetadata>();
- }
-
- /// <summary>
- /// Gets or sets the season number.
- /// </summary>
- public int? SeasonNumber { get; set; }
-
- /// <summary>
- /// Gets the season metadata.
- /// </summary>
- public virtual ICollection<SeasonMetadata> SeasonMetadata { get; private set; }
-
- /// <summary>
- /// Gets a collection containing the number of episodes.
- /// </summary>
- public virtual ICollection<Episode> Episodes { get; private set; }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/SeasonMetadata.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/SeasonMetadata.cs
deleted file mode 100644
index da40a075f5..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/SeasonMetadata.cs
+++ /dev/null
@@ -1,29 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity that holds metadata for seasons.
- /// </summary>
- public class SeasonMetadata : ItemMetadata
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="SeasonMetadata"/> class.
- /// </summary>
- /// <param name="title">The title or name of the object.</param>
- /// <param name="language">ISO-639-3 3-character language codes.</param>
- public SeasonMetadata(string title, string language) : base(title, language)
- {
- }
-
- /// <summary>
- /// Gets or sets the outline.
- /// </summary>
- /// <remarks>
- /// Max length = 1024.
- /// </remarks>
- [MaxLength(1024)]
- [StringLength(1024)]
- public string? Outline { get; set; }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Series.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Series.cs
deleted file mode 100644
index ab484c96d6..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Series.cs
+++ /dev/null
@@ -1,46 +0,0 @@
-using System;
-using System.Collections.Generic;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity representing a series.
- /// </summary>
- public class Series : LibraryItem
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="Series"/> class.
- /// </summary>
- /// <param name="library">The library.</param>
- public Series(Library library) : base(library)
- {
- Seasons = new HashSet<Season>();
- SeriesMetadata = new HashSet<SeriesMetadata>();
- }
-
- /// <summary>
- /// Gets or sets the days of week.
- /// </summary>
- public DayOfWeek? AirsDayOfWeek { get; set; }
-
- /// <summary>
- /// Gets or sets the time the show airs, ignore the date portion.
- /// </summary>
- public DateTimeOffset? AirsTime { get; set; }
-
- /// <summary>
- /// Gets or sets the date the series first aired.
- /// </summary>
- public DateTime? FirstAired { get; set; }
-
- /// <summary>
- /// Gets a collection containing the series metadata.
- /// </summary>
- public virtual ICollection<SeriesMetadata> SeriesMetadata { get; private set; }
-
- /// <summary>
- /// Gets a collection containing the seasons.
- /// </summary>
- public virtual ICollection<Season> Seasons { get; private set; }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/SeriesMetadata.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/SeriesMetadata.cs
deleted file mode 100644
index 42115802c5..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/SeriesMetadata.cs
+++ /dev/null
@@ -1,70 +0,0 @@
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using Jellyfin.Data.Interfaces;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity representing series metadata.
- /// </summary>
- public class SeriesMetadata : ItemMetadata, IHasCompanies
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="SeriesMetadata"/> class.
- /// </summary>
- /// <param name="title">The title or name of the object.</param>
- /// <param name="language">ISO-639-3 3-character language codes.</param>
- public SeriesMetadata(string title, string language) : base(title, language)
- {
- Networks = new HashSet<Company>();
- }
-
- /// <summary>
- /// Gets or sets the outline.
- /// </summary>
- /// <remarks>
- /// Max length = 1024.
- /// </remarks>
- [MaxLength(1024)]
- [StringLength(1024)]
- public string? Outline { get; set; }
-
- /// <summary>
- /// Gets or sets the plot.
- /// </summary>
- /// <remarks>
- /// Max length = 65535.
- /// </remarks>
- [MaxLength(65535)]
- [StringLength(65535)]
- public string? Plot { get; set; }
-
- /// <summary>
- /// Gets or sets the tagline.
- /// </summary>
- /// <remarks>
- /// Max length = 1024.
- /// </remarks>
- [MaxLength(1024)]
- [StringLength(1024)]
- public string? Tagline { get; set; }
-
- /// <summary>
- /// Gets or sets the country code.
- /// </summary>
- /// <remarks>
- /// Max length = 2.
- /// </remarks>
- [MaxLength(2)]
- [StringLength(2)]
- public string? Country { get; set; }
-
- /// <summary>
- /// Gets a collection containing the networks.
- /// </summary>
- public virtual ICollection<Company> Networks { get; private set; }
-
- /// <inheritdoc />
- public ICollection<Company> Companies => Networks;
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Track.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Track.cs
deleted file mode 100644
index d354000337..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/Track.cs
+++ /dev/null
@@ -1,34 +0,0 @@
-using System.Collections.Generic;
-using Jellyfin.Data.Interfaces;
-
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity representing a track.
- /// </summary>
- public class Track : LibraryItem, IHasReleases
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="Track"/> class.
- /// </summary>
- /// <param name="library">The library.</param>
- public Track(Library library) : base(library)
- {
- Releases = new HashSet<Release>();
- TrackMetadata = new HashSet<TrackMetadata>();
- }
-
- /// <summary>
- /// Gets or sets the track number.
- /// </summary>
- public int? TrackNumber { get; set; }
-
- /// <inheritdoc />
- public virtual ICollection<Release> Releases { get; private set; }
-
- /// <summary>
- /// Gets a collection containing the track metadata.
- /// </summary>
- public virtual ICollection<TrackMetadata> TrackMetadata { get; private set; }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/TrackMetadata.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/TrackMetadata.cs
deleted file mode 100644
index 042d2b90db..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Libraries/TrackMetadata.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-namespace Jellyfin.Data.Entities.Libraries
-{
- /// <summary>
- /// An entity holding metadata for a track.
- /// </summary>
- public class TrackMetadata : ItemMetadata
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="TrackMetadata"/> class.
- /// </summary>
- /// <param name="title">The title or name of the object.</param>
- /// <param name="language">ISO-639-3 3-character language codes.</param>
- public TrackMetadata(string title, string language) : base(title, language)
- {
- }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/MediaSegment.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/MediaSegment.cs
deleted file mode 100644
index 90120d7721..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/MediaSegment.cs
+++ /dev/null
@@ -1,42 +0,0 @@
-using System;
-using System.ComponentModel.DataAnnotations.Schema;
-using Jellyfin.Data.Enums;
-
-namespace Jellyfin.Data.Entities;
-
-/// <summary>
-/// An entity representing the metadata for a group of trickplay tiles.
-/// </summary>
-public class MediaSegment
-{
- /// <summary>
- /// Gets or sets the id of the media segment.
- /// </summary>
- [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public Guid Id { get; set; }
-
- /// <summary>
- /// Gets or sets the id of the associated item.
- /// </summary>
- public Guid ItemId { get; set; }
-
- /// <summary>
- /// Gets or sets the Type of content this segment defines.
- /// </summary>
- public MediaSegmentType Type { get; set; }
-
- /// <summary>
- /// Gets or sets the end of the segment.
- /// </summary>
- public long EndTicks { get; set; }
-
- /// <summary>
- /// Gets or sets the start of the segment.
- /// </summary>
- public long StartTicks { get; set; }
-
- /// <summary>
- /// Gets or sets Id of the media segment provider this entry originates from.
- /// </summary>
- public required string SegmentProviderId { get; set; }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/MediaStreamInfo.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/MediaStreamInfo.cs
deleted file mode 100644
index 77816565af..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/MediaStreamInfo.cs
+++ /dev/null
@@ -1,103 +0,0 @@
-#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member
-
-using System;
-using System.Diagnostics.CodeAnalysis;
-
-namespace Jellyfin.Data.Entities;
-
-public class MediaStreamInfo
-{
- public required Guid ItemId { get; set; }
-
- public required BaseItemEntity Item { get; set; }
-
- public int StreamIndex { get; set; }
-
- public required MediaStreamTypeEntity StreamType { get; set; }
-
- public string? Codec { get; set; }
-
- public string? Language { get; set; }
-
- public string? ChannelLayout { get; set; }
-
- public string? Profile { get; set; }
-
- public string? AspectRatio { get; set; }
-
- public string? Path { get; set; }
-
- public bool? IsInterlaced { get; set; }
-
- public int? BitRate { get; set; }
-
- public int? Channels { get; set; }
-
- public int? SampleRate { get; set; }
-
- public bool IsDefault { get; set; }
-
- public bool IsForced { get; set; }
-
- public bool IsExternal { get; set; }
-
- public int? Height { get; set; }
-
- public int? Width { get; set; }
-
- public float? AverageFrameRate { get; set; }
-
- public float? RealFrameRate { get; set; }
-
- public float? Level { get; set; }
-
- public string? PixelFormat { get; set; }
-
- public int? BitDepth { get; set; }
-
- public bool? IsAnamorphic { get; set; }
-
- public int? RefFrames { get; set; }
-
- public string? CodecTag { get; set; }
-
- public string? Comment { get; set; }
-
- public string? NalLengthSize { get; set; }
-
- public bool? IsAvc { get; set; }
-
- public string? Title { get; set; }
-
- public string? TimeBase { get; set; }
-
- public string? CodecTimeBase { get; set; }
-
- public string? ColorPrimaries { get; set; }
-
- public string? ColorSpace { get; set; }
-
- public string? ColorTransfer { get; set; }
-
- public int? DvVersionMajor { get; set; }
-
- public int? DvVersionMinor { get; set; }
-
- public int? DvProfile { get; set; }
-
- public int? DvLevel { get; set; }
-
- public int? RpuPresentFlag { get; set; }
-
- public int? ElPresentFlag { get; set; }
-
- public int? BlPresentFlag { get; set; }
-
- public int? DvBlSignalCompatibilityId { get; set; }
-
- public bool? IsHearingImpaired { get; set; }
-
- public int? Rotation { get; set; }
-
- public string? KeyFrames { get; set; }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/MediaStreamTypeEntity.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/MediaStreamTypeEntity.cs
deleted file mode 100644
index f57672a2cf..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/MediaStreamTypeEntity.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-namespace Jellyfin.Data.Entities;
-
-/// <summary>
-/// Enum MediaStreamType.
-/// </summary>
-public enum MediaStreamTypeEntity
-{
- /// <summary>
- /// The audio.
- /// </summary>
- Audio = 0,
-
- /// <summary>
- /// The video.
- /// </summary>
- Video = 1,
-
- /// <summary>
- /// The subtitle.
- /// </summary>
- Subtitle = 2,
-
- /// <summary>
- /// The embedded image.
- /// </summary>
- EmbeddedImage = 3,
-
- /// <summary>
- /// The data.
- /// </summary>
- Data = 4,
-
- /// <summary>
- /// The lyric.
- /// </summary>
- Lyric = 5
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/People.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/People.cs
deleted file mode 100644
index 18c778b17a..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/People.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-#pragma warning disable CA2227 // Collection properties should be read only
-
-using System;
-using System.Collections.Generic;
-
-namespace Jellyfin.Data.Entities;
-
-/// <summary>
-/// People entity.
-/// </summary>
-public class People
-{
- /// <summary>
- /// Gets or Sets the PeopleId.
- /// </summary>
- public required Guid Id { get; set; }
-
- /// <summary>
- /// Gets or Sets the Persons Name.
- /// </summary>
- public required string Name { get; set; }
-
- /// <summary>
- /// Gets or Sets the Type.
- /// </summary>
- public string? PersonType { get; set; }
-
- /// <summary>
- /// Gets or Sets the mapping of People to BaseItems.
- /// </summary>
- public ICollection<PeopleBaseItemMap>? BaseItems { get; set; }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/PeopleBaseItemMap.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/PeopleBaseItemMap.cs
deleted file mode 100644
index bfaaf82151..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/PeopleBaseItemMap.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-using System;
-
-namespace Jellyfin.Data.Entities;
-
-/// <summary>
-/// Mapping table for People to BaseItems.
-/// </summary>
-public class PeopleBaseItemMap
-{
- /// <summary>
- /// Gets or Sets the SortOrder.
- /// </summary>
- public int? SortOrder { get; set; }
-
- /// <summary>
- /// Gets or Sets the ListOrder.
- /// </summary>
- public int? ListOrder { get; set; }
-
- /// <summary>
- /// Gets or Sets the Role name the associated actor played in the <see cref="BaseItemEntity"/>.
- /// </summary>
- public string? Role { get; set; }
-
- /// <summary>
- /// Gets or Sets The ItemId.
- /// </summary>
- public required Guid ItemId { get; set; }
-
- /// <summary>
- /// Gets or Sets Reference Item.
- /// </summary>
- public required BaseItemEntity Item { get; set; }
-
- /// <summary>
- /// Gets or Sets The PeopleId.
- /// </summary>
- public required Guid PeopleId { get; set; }
-
- /// <summary>
- /// Gets or Sets Reference People.
- /// </summary>
- public required People People { get; set; }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Permission.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Permission.cs
deleted file mode 100644
index 6d2e68077c..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Permission.cs
+++ /dev/null
@@ -1,68 +0,0 @@
-#pragma warning disable CA1711 // Identifiers should not have incorrect suffix
-
-using System;
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using Jellyfin.Data.Enums;
-using Jellyfin.Data.Interfaces;
-
-namespace Jellyfin.Data.Entities
-{
- /// <summary>
- /// An entity representing whether the associated user has a specific permission.
- /// </summary>
- public class Permission : IHasConcurrencyToken
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="Permission"/> class.
- /// Public constructor with required data.
- /// </summary>
- /// <param name="kind">The permission kind.</param>
- /// <param name="value">The value of this permission.</param>
- public Permission(PermissionKind kind, bool value)
- {
- Kind = kind;
- Value = value;
- }
-
- /// <summary>
- /// Gets the id of this permission.
- /// </summary>
- /// <remarks>
- /// Identity, Indexed, Required.
- /// </remarks>
- [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; private set; }
-
- /// <summary>
- /// Gets or sets the id of the associated user.
- /// </summary>
- public Guid? UserId { get; set; }
-
- /// <summary>
- /// Gets the type of this permission.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public PermissionKind Kind { get; private set; }
-
- /// <summary>
- /// Gets or sets a value indicating whether the associated user has this permission.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public bool Value { get; set; }
-
- /// <inheritdoc />
- [ConcurrencyCheck]
- public uint RowVersion { get; private set; }
-
- /// <inheritdoc/>
- public void OnSavingChanges()
- {
- RowVersion++;
- }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Preference.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Preference.cs
deleted file mode 100644
index a6ab275d31..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Preference.cs
+++ /dev/null
@@ -1,68 +0,0 @@
-using System;
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using Jellyfin.Data.Enums;
-using Jellyfin.Data.Interfaces;
-
-namespace Jellyfin.Data.Entities
-{
- /// <summary>
- /// An entity representing a preference attached to a user or group.
- /// </summary>
- public class Preference : IHasConcurrencyToken
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="Preference"/> class.
- /// Public constructor with required data.
- /// </summary>
- /// <param name="kind">The preference kind.</param>
- /// <param name="value">The value.</param>
- public Preference(PreferenceKind kind, string value)
- {
- Kind = kind;
- Value = value ?? throw new ArgumentNullException(nameof(value));
- }
-
- /// <summary>
- /// Gets the id of this preference.
- /// </summary>
- /// <remarks>
- /// Identity, Indexed, Required.
- /// </remarks>
- [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; private set; }
-
- /// <summary>
- /// Gets or sets the id of the associated user.
- /// </summary>
- public Guid? UserId { get; set; }
-
- /// <summary>
- /// Gets the type of this preference.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public PreferenceKind Kind { get; private set; }
-
- /// <summary>
- /// Gets or sets the value of this preference.
- /// </summary>
- /// <remarks>
- /// Required, Max length = 65535.
- /// </remarks>
- [MaxLength(65535)]
- [StringLength(65535)]
- public string Value { get; set; }
-
- /// <inheritdoc/>
- [ConcurrencyCheck]
- public uint RowVersion { get; private set; }
-
- /// <inheritdoc/>
- public void OnSavingChanges()
- {
- RowVersion++;
- }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ProgramAudioEntity.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ProgramAudioEntity.cs
deleted file mode 100644
index 9d79e5ddb1..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/ProgramAudioEntity.cs
+++ /dev/null
@@ -1,37 +0,0 @@
-namespace Jellyfin.Data.Entities;
-
-/// <summary>
-/// Lists types of Audio.
-/// </summary>
-public enum ProgramAudioEntity
-{
- /// <summary>
- /// Mono.
- /// </summary>
- Mono = 0,
-
- /// <summary>
- /// Stereo.
- /// </summary>
- Stereo = 1,
-
- /// <summary>
- /// Dolby.
- /// </summary>
- Dolby = 2,
-
- /// <summary>
- /// DolbyDigital.
- /// </summary>
- DolbyDigital = 3,
-
- /// <summary>
- /// Thx.
- /// </summary>
- Thx = 4,
-
- /// <summary>
- /// Atmos.
- /// </summary>
- Atmos = 5
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Security/ApiKey.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Security/ApiKey.cs
deleted file mode 100644
index 1fcbe0f5e9..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Security/ApiKey.cs
+++ /dev/null
@@ -1,56 +0,0 @@
-using System;
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using System.Globalization;
-
-namespace Jellyfin.Data.Entities.Security
-{
- /// <summary>
- /// An entity representing an API key.
- /// </summary>
- public class ApiKey
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="ApiKey"/> class.
- /// </summary>
- /// <param name="name">The name.</param>
- public ApiKey(string name)
- {
- Name = name;
-
- AccessToken = Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture);
- DateCreated = DateTime.UtcNow;
- }
-
- /// <summary>
- /// Gets the id.
- /// </summary>
- /// <remarks>
- /// Identity, Indexed, Required.
- /// </remarks>
- [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; private set; }
-
- /// <summary>
- /// Gets or sets the date created.
- /// </summary>
- public DateTime DateCreated { get; set; }
-
- /// <summary>
- /// Gets or sets the date of last activity.
- /// </summary>
- public DateTime DateLastActivity { get; set; }
-
- /// <summary>
- /// Gets or sets the name.
- /// </summary>
- [MaxLength(64)]
- [StringLength(64)]
- public string Name { get; set; }
-
- /// <summary>
- /// Gets or sets the access token.
- /// </summary>
- public string AccessToken { get; set; }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Security/Device.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Security/Device.cs
deleted file mode 100644
index 67d7f78eda..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Security/Device.cs
+++ /dev/null
@@ -1,107 +0,0 @@
-using System;
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using System.Globalization;
-
-namespace Jellyfin.Data.Entities.Security
-{
- /// <summary>
- /// An entity representing a device.
- /// </summary>
- public class Device
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="Device"/> class.
- /// </summary>
- /// <param name="userId">The user id.</param>
- /// <param name="appName">The app name.</param>
- /// <param name="appVersion">The app version.</param>
- /// <param name="deviceName">The device name.</param>
- /// <param name="deviceId">The device id.</param>
- public Device(Guid userId, string appName, string appVersion, string deviceName, string deviceId)
- {
- UserId = userId;
- AppName = appName;
- AppVersion = appVersion;
- DeviceName = deviceName;
- DeviceId = deviceId;
-
- AccessToken = Guid.NewGuid().ToString("N", CultureInfo.InvariantCulture);
- DateCreated = DateTime.UtcNow;
- DateModified = DateCreated;
- DateLastActivity = DateCreated;
-
- // Non-nullable for EF Core, as this is a required relationship.
- User = null!;
- }
-
- /// <summary>
- /// Gets the id.
- /// </summary>
- [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; private set; }
-
- /// <summary>
- /// Gets the user id.
- /// </summary>
- public Guid UserId { get; private set; }
-
- /// <summary>
- /// Gets or sets the access token.
- /// </summary>
- public string AccessToken { get; set; }
-
- /// <summary>
- /// Gets or sets the app name.
- /// </summary>
- [MaxLength(64)]
- [StringLength(64)]
- public string AppName { get; set; }
-
- /// <summary>
- /// Gets or sets the app version.
- /// </summary>
- [MaxLength(32)]
- [StringLength(32)]
- public string AppVersion { get; set; }
-
- /// <summary>
- /// Gets or sets the device name.
- /// </summary>
- [MaxLength(64)]
- [StringLength(64)]
- public string DeviceName { get; set; }
-
- /// <summary>
- /// Gets or sets the device id.
- /// </summary>
- [MaxLength(256)]
- [StringLength(256)]
- public string DeviceId { get; set; }
-
- /// <summary>
- /// Gets or sets a value indicating whether this device is active.
- /// </summary>
- public bool IsActive { get; set; }
-
- /// <summary>
- /// Gets or sets the date created.
- /// </summary>
- public DateTime DateCreated { get; set; }
-
- /// <summary>
- /// Gets or sets the date modified.
- /// </summary>
- public DateTime DateModified { get; set; }
-
- /// <summary>
- /// Gets or sets the date of last activity.
- /// </summary>
- public DateTime DateLastActivity { get; set; }
-
- /// <summary>
- /// Gets the user.
- /// </summary>
- public User User { get; private set; }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Security/DeviceOptions.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Security/DeviceOptions.cs
deleted file mode 100644
index 531f66c627..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/Security/DeviceOptions.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using System.ComponentModel.DataAnnotations.Schema;
-
-namespace Jellyfin.Data.Entities.Security
-{
- /// <summary>
- /// An entity representing custom options for a device.
- /// </summary>
- public class DeviceOptions
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="DeviceOptions"/> class.
- /// </summary>
- /// <param name="deviceId">The device id.</param>
- public DeviceOptions(string deviceId)
- {
- DeviceId = deviceId;
- }
-
- /// <summary>
- /// Gets the id.
- /// </summary>
- [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
- public int Id { get; private set; }
-
- /// <summary>
- /// Gets the device id.
- /// </summary>
- public string DeviceId { get; private set; }
-
- /// <summary>
- /// Gets or sets the custom name.
- /// </summary>
- public string? CustomName { get; set; }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/TrickplayInfo.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/TrickplayInfo.cs
deleted file mode 100644
index ff9a68beff..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/TrickplayInfo.cs
+++ /dev/null
@@ -1,75 +0,0 @@
-using System;
-using System.Text.Json.Serialization;
-
-namespace Jellyfin.Data.Entities;
-
-/// <summary>
-/// An entity representing the metadata for a group of trickplay tiles.
-/// </summary>
-public class TrickplayInfo
-{
- /// <summary>
- /// Gets or sets the id of the associated item.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- [JsonIgnore]
- public Guid ItemId { get; set; }
-
- /// <summary>
- /// Gets or sets width of an individual thumbnail.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public int Width { get; set; }
-
- /// <summary>
- /// Gets or sets height of an individual thumbnail.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public int Height { get; set; }
-
- /// <summary>
- /// Gets or sets amount of thumbnails per row.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public int TileWidth { get; set; }
-
- /// <summary>
- /// Gets or sets amount of thumbnails per column.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public int TileHeight { get; set; }
-
- /// <summary>
- /// Gets or sets total amount of non-black thumbnails.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public int ThumbnailCount { get; set; }
-
- /// <summary>
- /// Gets or sets interval in milliseconds between each trickplay thumbnail.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public int Interval { get; set; }
-
- /// <summary>
- /// Gets or sets peak bandwidth usage in bits per second.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public int Bandwidth { get; set; }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/User.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/User.cs
deleted file mode 100644
index f3398eeeac..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/User.cs
+++ /dev/null
@@ -1,338 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using System.Linq;
-using System.Text.Json.Serialization;
-using Jellyfin.Data.Enums;
-using Jellyfin.Data.Interfaces;
-
-namespace Jellyfin.Data.Entities
-{
- /// <summary>
- /// An entity representing a user.
- /// </summary>
- public class User : IHasPermissions, IHasConcurrencyToken
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="User"/> class.
- /// Public constructor with required data.
- /// </summary>
- /// <param name="username">The username for the new user.</param>
- /// <param name="authenticationProviderId">The Id of the user's authentication provider.</param>
- /// <param name="passwordResetProviderId">The Id of the user's password reset provider.</param>
- public User(string username, string authenticationProviderId, string passwordResetProviderId)
- {
- ArgumentException.ThrowIfNullOrEmpty(username);
- ArgumentException.ThrowIfNullOrEmpty(authenticationProviderId);
- ArgumentException.ThrowIfNullOrEmpty(passwordResetProviderId);
-
- Username = username;
- AuthenticationProviderId = authenticationProviderId;
- PasswordResetProviderId = passwordResetProviderId;
-
- AccessSchedules = new HashSet<AccessSchedule>();
- DisplayPreferences = new HashSet<DisplayPreferences>();
- ItemDisplayPreferences = new HashSet<ItemDisplayPreferences>();
- // Groups = new HashSet<Group>();
- Permissions = new HashSet<Permission>();
- Preferences = new HashSet<Preference>();
- // ProviderMappings = new HashSet<ProviderMapping>();
-
- // Set default values
- Id = Guid.NewGuid();
- InvalidLoginAttemptCount = 0;
- EnableUserPreferenceAccess = true;
- MustUpdatePassword = false;
- DisplayMissingEpisodes = false;
- DisplayCollectionsView = false;
- HidePlayedInLatest = true;
- RememberAudioSelections = true;
- RememberSubtitleSelections = true;
- EnableNextEpisodeAutoPlay = true;
- EnableAutoLogin = false;
- PlayDefaultAudioTrack = true;
- SubtitleMode = SubtitlePlaybackMode.Default;
- SyncPlayAccess = SyncPlayUserAccessType.CreateAndJoinGroups;
- }
-
- /// <summary>
- /// Gets or sets the Id of the user.
- /// </summary>
- /// <remarks>
- /// Identity, Indexed, Required.
- /// </remarks>
- [JsonIgnore]
- public Guid Id { get; set; }
-
- /// <summary>
- /// Gets or sets the user's name.
- /// </summary>
- /// <remarks>
- /// Required, Max length = 255.
- /// </remarks>
- [MaxLength(255)]
- [StringLength(255)]
- public string Username { get; set; }
-
- /// <summary>
- /// Gets or sets the user's password, or <c>null</c> if none is set.
- /// </summary>
- /// <remarks>
- /// Max length = 65535.
- /// </remarks>
- [MaxLength(65535)]
- [StringLength(65535)]
- public string? Password { get; set; }
-
- /// <summary>
- /// Gets or sets a value indicating whether the user must update their password.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public bool MustUpdatePassword { get; set; }
-
- /// <summary>
- /// Gets or sets the audio language preference.
- /// </summary>
- /// <remarks>
- /// Max length = 255.
- /// </remarks>
- [MaxLength(255)]
- [StringLength(255)]
- public string? AudioLanguagePreference { get; set; }
-
- /// <summary>
- /// Gets or sets the authentication provider id.
- /// </summary>
- /// <remarks>
- /// Required, Max length = 255.
- /// </remarks>
- [MaxLength(255)]
- [StringLength(255)]
- public string AuthenticationProviderId { get; set; }
-
- /// <summary>
- /// Gets or sets the password reset provider id.
- /// </summary>
- /// <remarks>
- /// Required, Max length = 255.
- /// </remarks>
- [MaxLength(255)]
- [StringLength(255)]
- public string PasswordResetProviderId { get; set; }
-
- /// <summary>
- /// Gets or sets the invalid login attempt count.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public int InvalidLoginAttemptCount { get; set; }
-
- /// <summary>
- /// Gets or sets the last activity date.
- /// </summary>
- public DateTime? LastActivityDate { get; set; }
-
- /// <summary>
- /// Gets or sets the last login date.
- /// </summary>
- public DateTime? LastLoginDate { get; set; }
-
- /// <summary>
- /// Gets or sets the number of login attempts the user can make before they are locked out.
- /// </summary>
- public int? LoginAttemptsBeforeLockout { get; set; }
-
- /// <summary>
- /// Gets or sets the maximum number of active sessions the user can have at once.
- /// </summary>
- public int MaxActiveSessions { get; set; }
-
- /// <summary>
- /// Gets or sets the subtitle mode.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public SubtitlePlaybackMode SubtitleMode { get; set; }
-
- /// <summary>
- /// Gets or sets a value indicating whether the default audio track should be played.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public bool PlayDefaultAudioTrack { get; set; }
-
- /// <summary>
- /// Gets or sets the subtitle language preference.
- /// </summary>
- /// <remarks>
- /// Max length = 255.
- /// </remarks>
- [MaxLength(255)]
- [StringLength(255)]
- public string? SubtitleLanguagePreference { get; set; }
-
- /// <summary>
- /// Gets or sets a value indicating whether missing episodes should be displayed.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public bool DisplayMissingEpisodes { get; set; }
-
- /// <summary>
- /// Gets or sets a value indicating whether to display the collections view.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public bool DisplayCollectionsView { get; set; }
-
- /// <summary>
- /// Gets or sets a value indicating whether the user has a local password.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public bool EnableLocalPassword { get; set; }
-
- /// <summary>
- /// Gets or sets a value indicating whether the server should hide played content in "Latest".
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public bool HidePlayedInLatest { get; set; }
-
- /// <summary>
- /// Gets or sets a value indicating whether to remember audio selections on played content.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public bool RememberAudioSelections { get; set; }
-
- /// <summary>
- /// Gets or sets a value indicating whether to remember subtitle selections on played content.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public bool RememberSubtitleSelections { get; set; }
-
- /// <summary>
- /// Gets or sets a value indicating whether to enable auto-play for the next episode.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public bool EnableNextEpisodeAutoPlay { get; set; }
-
- /// <summary>
- /// Gets or sets a value indicating whether the user should auto-login.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public bool EnableAutoLogin { get; set; }
-
- /// <summary>
- /// Gets or sets a value indicating whether the user can change their preferences.
- /// </summary>
- /// <remarks>
- /// Required.
- /// </remarks>
- public bool EnableUserPreferenceAccess { get; set; }
-
- /// <summary>
- /// Gets or sets the maximum parental age rating.
- /// </summary>
- public int? MaxParentalAgeRating { get; set; }
-
- /// <summary>
- /// Gets or sets the remote client bitrate limit.
- /// </summary>
- public int? RemoteClientBitrateLimit { get; set; }
-
- /// <summary>
- /// Gets or sets the internal id.
- /// This is a temporary stopgap for until the library db is migrated.
- /// This corresponds to the value of the index of this user in the library db.
- /// </summary>
- public long InternalId { get; set; }
-
- /// <summary>
- /// Gets or sets the user's profile image. Can be <c>null</c>.
- /// </summary>
- // [ForeignKey("UserId")]
- public virtual ImageInfo? ProfileImage { get; set; }
-
- /// <summary>
- /// Gets the user's display preferences.
- /// </summary>
- public virtual ICollection<DisplayPreferences> DisplayPreferences { get; private set; }
-
- /// <summary>
- /// Gets or sets the level of sync play permissions this user has.
- /// </summary>
- public SyncPlayUserAccessType SyncPlayAccess { get; set; }
-
- /// <summary>
- /// Gets or sets the cast receiver id.
- /// </summary>
- [StringLength(32)]
- public string? CastReceiverId { get; set; }
-
- /// <inheritdoc />
- [ConcurrencyCheck]
- public uint RowVersion { get; private set; }
-
- /// <summary>
- /// Gets the list of access schedules this user has.
- /// </summary>
- public virtual ICollection<AccessSchedule> AccessSchedules { get; private set; }
-
- /// <summary>
- /// Gets the list of item display preferences.
- /// </summary>
- public virtual ICollection<ItemDisplayPreferences> ItemDisplayPreferences { get; private set; }
-
- /*
- /// <summary>
- /// Gets the list of groups this user is a member of.
- /// </summary>
- public virtual ICollection<Group> Groups { get; private set; }
- */
-
- /// <summary>
- /// Gets the list of permissions this user has.
- /// </summary>
- [ForeignKey("Permission_Permissions_Guid")]
- public virtual ICollection<Permission> Permissions { get; private set; }
-
- /*
- /// <summary>
- /// Gets the list of provider mappings this user has.
- /// </summary>
- public virtual ICollection<ProviderMapping> ProviderMappings { get; private set; }
- */
-
- /// <summary>
- /// Gets the list of preferences this user has.
- /// </summary>
- [ForeignKey("Preference_Preferences_Guid")]
- public virtual ICollection<Preference> Preferences { get; private set; }
-
- /// <inheritdoc/>
- public void OnSavingChanges()
- {
- RowVersion++;
- }
- }
-}
diff --git a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/UserData.cs b/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/UserData.cs
deleted file mode 100644
index 05ab6dd2d2..0000000000
--- a/Jellyfin.Database/Jellyfin.Database.Implementations/Entities/UserData.cs
+++ /dev/null
@@ -1,92 +0,0 @@
-using System;
-using System.ComponentModel.DataAnnotations.Schema;
-
-namespace Jellyfin.Data.Entities;
-
-/// <summary>
-/// Provides <see cref="BaseItemEntity"/> and <see cref="User"/> related data.
-/// </summary>
-public class UserData
-{
- /// <summary>
- /// Gets or sets the custom data key.
- /// </summary>
- /// <value>The rating.</value>
- public required string CustomDataKey { get; set; }
-
- /// <summary>
- /// Gets or sets the users 0-10 rating.
- /// </summary>
- /// <value>The rating.</value>
- public double? Rating { get; set; }
-
- /// <summary>
- /// Gets or sets the playback position ticks.
- /// </summary>
- /// <value>The playback position ticks.</value>
- public long PlaybackPositionTicks { get; set; }
-
- /// <summary>
- /// Gets or sets the play count.
- /// </summary>
- /// <value>The play count.</value>
- public int PlayCount { get; set; }
-
- /// <summary>
- /// Gets or sets a value indicating whether this instance is favorite.
- /// </summary>
- /// <value><c>true</c> if this instance is favorite; otherwise, <c>false</c>.</value>
- public bool IsFavorite { get; set; }
-
- /// <summary>
- /// Gets or sets the last played date.
- /// </summary>
- /// <value>The last played date.</value>
- public DateTime? LastPlayedDate { get; set; }
-
- /// <summary>
- /// Gets or sets a value indicating whether this <see cref="UserData" /> is played.
- /// </summary>
- /// <value><c>true</c> if played; otherwise, <c>false</c>.</value>
- public bool Played { get; set; }
-
- /// <summary>
- /// Gets or sets the index of the audio stream.
- /// </summary>
- /// <value>The index of the audio stream.</value>
- public int? AudioStreamIndex { get; set; }
-
- /// <summary>
- /// Gets or sets the index of the subtitle stream.
- /// </summary>
- /// <value>The index of the subtitle stream.</value>
- public int? SubtitleStreamIndex { get; set; }
-
- /// <summary>
- /// Gets or sets a value indicating whether the item is liked or not.
- /// This should never be serialized.
- /// </summary>
- /// <value><c>null</c> if [likes] contains no value, <c>true</c> if [likes]; otherwise, <c>false</c>.</value>
- public bool? Likes { get; set; }
-
- /// <summary>
- /// Gets or sets the key.
- /// </summary>
- /// <value>The key.</value>
- public required Guid ItemId { get; set; }
-
- /// <summary>
- /// Gets or Sets the BaseItem.
- /// </summary>
- public required BaseItemEntity? Item { get; set; }
-
- /// <summary>
- /// Gets or Sets the UserId.
- /// </summary>
- public required Guid UserId { get; set; }
-
- /// <summary>
- /// Gets or Sets the User.
- /// </summary>
- public required User? User { get; set; }
-}