Chapter.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. #pragma warning disable CA2227
  2. using System;
  3. using System.ComponentModel.DataAnnotations;
  4. using System.ComponentModel.DataAnnotations.Schema;
  5. using Jellyfin.Data.Interfaces;
  6. namespace Jellyfin.Data.Entities.Libraries
  7. {
  8. /// <summary>
  9. /// An entity representing a chapter.
  10. /// </summary>
  11. public class Chapter : IHasConcurrencyToken
  12. {
  13. /// <summary>
  14. /// Initializes a new instance of the <see cref="Chapter"/> class.
  15. /// </summary>
  16. /// <param name="language">ISO-639-3 3-character language codes.</param>
  17. /// <param name="startTime">The start time for this chapter.</param>
  18. /// <param name="release">The release.</param>
  19. public Chapter(string language, long startTime, Release release)
  20. {
  21. if (string.IsNullOrEmpty(language))
  22. {
  23. throw new ArgumentNullException(nameof(language));
  24. }
  25. Language = language;
  26. StartTime = startTime;
  27. if (release == null)
  28. {
  29. throw new ArgumentNullException(nameof(release));
  30. }
  31. release.Chapters.Add(this);
  32. }
  33. /// <summary>
  34. /// Initializes a new instance of the <see cref="Chapter"/> class.
  35. /// </summary>
  36. /// <remarks>
  37. /// Default constructor. Protected due to required properties, but present because EF needs it.
  38. /// </remarks>
  39. protected Chapter()
  40. {
  41. }
  42. /// <summary>
  43. /// Gets or sets the id.
  44. /// </summary>
  45. /// <remarks>
  46. /// Identity, Indexed, Required.
  47. /// </remarks>
  48. [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
  49. public int Id { get; protected set; }
  50. /// <summary>
  51. /// Gets or sets the name.
  52. /// </summary>
  53. /// <remarks>
  54. /// Max length = 1024.
  55. /// </remarks>
  56. [MaxLength(1024)]
  57. [StringLength(1024)]
  58. public string Name { get; set; }
  59. /// <summary>
  60. /// Gets or sets the language.
  61. /// </summary>
  62. /// <remarks>
  63. /// Required, Min length = 3, Max length = 3
  64. /// ISO-639-3 3-character language codes.
  65. /// </remarks>
  66. [Required]
  67. [MinLength(3)]
  68. [MaxLength(3)]
  69. [StringLength(3)]
  70. public string Language { get; set; }
  71. /// <summary>
  72. /// Gets or sets the start time.
  73. /// </summary>
  74. /// <remarks>
  75. /// Required.
  76. /// </remarks>
  77. public long StartTime { get; set; }
  78. /// <summary>
  79. /// Gets or sets the end time.
  80. /// </summary>
  81. public long? EndTime { get; set; }
  82. /// <inheritdoc />
  83. [ConcurrencyCheck]
  84. public uint RowVersion { get; protected set; }
  85. /// <inheritdoc />
  86. public void OnSavingChanges()
  87. {
  88. RowVersion++;
  89. }
  90. }
  91. }