Chapter.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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. public Chapter(string language, long startTime)
  19. {
  20. if (string.IsNullOrEmpty(language))
  21. {
  22. throw new ArgumentNullException(nameof(language));
  23. }
  24. Language = language;
  25. StartTime = startTime;
  26. }
  27. /// <summary>
  28. /// Gets or sets the id.
  29. /// </summary>
  30. /// <remarks>
  31. /// Identity, Indexed, Required.
  32. /// </remarks>
  33. [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
  34. public int Id { get; protected set; }
  35. /// <summary>
  36. /// Gets or sets the name.
  37. /// </summary>
  38. /// <remarks>
  39. /// Max length = 1024.
  40. /// </remarks>
  41. [MaxLength(1024)]
  42. [StringLength(1024)]
  43. public string? Name { get; set; }
  44. /// <summary>
  45. /// Gets or sets the language.
  46. /// </summary>
  47. /// <remarks>
  48. /// Required, Min length = 3, Max length = 3
  49. /// ISO-639-3 3-character language codes.
  50. /// </remarks>
  51. [MinLength(3)]
  52. [MaxLength(3)]
  53. [StringLength(3)]
  54. public string Language { get; set; }
  55. /// <summary>
  56. /// Gets or sets the start time.
  57. /// </summary>
  58. /// <remarks>
  59. /// Required.
  60. /// </remarks>
  61. public long StartTime { get; set; }
  62. /// <summary>
  63. /// Gets or sets the end time.
  64. /// </summary>
  65. public long? EndTime { get; set; }
  66. /// <inheritdoc />
  67. [ConcurrencyCheck]
  68. public uint RowVersion { get; protected set; }
  69. /// <inheritdoc />
  70. public void OnSavingChanges()
  71. {
  72. RowVersion++;
  73. }
  74. }
  75. }