MediaFileStream.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using System;
  2. using System.ComponentModel.DataAnnotations;
  3. using System.ComponentModel.DataAnnotations.Schema;
  4. using Jellyfin.Data.Interfaces;
  5. namespace Jellyfin.Data.Entities.Libraries
  6. {
  7. /// <summary>
  8. /// An entity representing a stream in a media file.
  9. /// </summary>
  10. public class MediaFileStream : IHasConcurrencyToken
  11. {
  12. /// <summary>
  13. /// Initializes a new instance of the <see cref="MediaFileStream"/> class.
  14. /// </summary>
  15. /// <param name="streamNumber">The number of this stream.</param>
  16. /// <param name="mediaFile">The media file.</param>
  17. public MediaFileStream(int streamNumber, MediaFile mediaFile)
  18. {
  19. StreamNumber = streamNumber;
  20. if (mediaFile == null)
  21. {
  22. throw new ArgumentNullException(nameof(mediaFile));
  23. }
  24. mediaFile.MediaFileStreams.Add(this);
  25. }
  26. /// <summary>
  27. /// Initializes a new instance of the <see cref="MediaFileStream"/> class.
  28. /// </summary>
  29. /// <remarks>
  30. /// Default constructor. Protected due to required properties, but present because EF needs it.
  31. /// </remarks>
  32. protected MediaFileStream()
  33. {
  34. }
  35. /// <summary>
  36. /// Gets or sets the id.
  37. /// </summary>
  38. /// <remarks>
  39. /// Identity, Indexed, Required.
  40. /// </remarks>
  41. [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
  42. public int Id { get; protected set; }
  43. /// <summary>
  44. /// Gets or sets the stream number.
  45. /// </summary>
  46. /// <remarks>
  47. /// Required.
  48. /// </remarks>
  49. public int StreamNumber { get; set; }
  50. /// <inheritdoc />
  51. [ConcurrencyCheck]
  52. public uint RowVersion { get; set; }
  53. /// <inheritdoc />
  54. public void OnSavingChanges()
  55. {
  56. RowVersion++;
  57. }
  58. }
  59. }