Metadata.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel.DataAnnotations;
  4. using System.ComponentModel.DataAnnotations.Schema;
  5. namespace Jellyfin.Data.Entities
  6. {
  7. public abstract partial class Metadata
  8. {
  9. partial void Init();
  10. /// <summary>
  11. /// Default constructor. Protected due to being abstract.
  12. /// </summary>
  13. protected Metadata()
  14. {
  15. PersonRoles = new HashSet<PersonRole>();
  16. Genres = new HashSet<Genre>();
  17. Artwork = new HashSet<Artwork>();
  18. Ratings = new HashSet<Rating>();
  19. Sources = new HashSet<MetadataProviderId>();
  20. Init();
  21. }
  22. /// <summary>
  23. /// Public constructor with required data.
  24. /// </summary>
  25. /// <param name="title">The title or name of the object.</param>
  26. /// <param name="language">ISO-639-3 3-character language codes.</param>
  27. protected Metadata(string title, string language, DateTime dateadded, DateTime datemodified)
  28. {
  29. if (string.IsNullOrEmpty(title))
  30. {
  31. throw new ArgumentNullException(nameof(title));
  32. }
  33. this.Title = title;
  34. if (string.IsNullOrEmpty(language))
  35. {
  36. throw new ArgumentNullException(nameof(language));
  37. }
  38. this.Language = language;
  39. this.PersonRoles = new HashSet<PersonRole>();
  40. this.Genres = new HashSet<Genre>();
  41. this.Artwork = new HashSet<Artwork>();
  42. this.Ratings = new HashSet<Rating>();
  43. this.Sources = new HashSet<MetadataProviderId>();
  44. Init();
  45. }
  46. /*************************************************************************
  47. * Properties
  48. *************************************************************************/
  49. /// <summary>
  50. /// Backing field for Id.
  51. /// </summary>
  52. internal int _Id;
  53. /// <summary>
  54. /// When provided in a partial class, allows value of Id to be changed before setting.
  55. /// </summary>
  56. partial void SetId(int oldValue, ref int newValue);
  57. /// <summary>
  58. /// When provided in a partial class, allows value of Id to be changed before returning.
  59. /// </summary>
  60. partial void GetId(ref int result);
  61. /// <summary>
  62. /// Identity, Indexed, Required.
  63. /// </summary>
  64. [Key]
  65. [Required]
  66. [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
  67. public int Id
  68. {
  69. get
  70. {
  71. int value = _Id;
  72. GetId(ref value);
  73. return _Id = value;
  74. }
  75. protected set
  76. {
  77. int oldValue = _Id;
  78. SetId(oldValue, ref value);
  79. if (oldValue != value)
  80. {
  81. _Id = value;
  82. }
  83. }
  84. }
  85. /// <summary>
  86. /// Backing field for Title.
  87. /// </summary>
  88. protected string _Title;
  89. /// <summary>
  90. /// When provided in a partial class, allows value of Title to be changed before setting.
  91. /// </summary>
  92. partial void SetTitle(string oldValue, ref string newValue);
  93. /// <summary>
  94. /// When provided in a partial class, allows value of Title to be changed before returning.
  95. /// </summary>
  96. partial void GetTitle(ref string result);
  97. /// <summary>
  98. /// Required, Max length = 1024
  99. /// The title or name of the object.
  100. /// </summary>
  101. [Required]
  102. [MaxLength(1024)]
  103. [StringLength(1024)]
  104. public string Title
  105. {
  106. get
  107. {
  108. string value = _Title;
  109. GetTitle(ref value);
  110. return _Title = value;
  111. }
  112. set
  113. {
  114. string oldValue = _Title;
  115. SetTitle(oldValue, ref value);
  116. if (oldValue != value)
  117. {
  118. _Title = value;
  119. }
  120. }
  121. }
  122. /// <summary>
  123. /// Backing field for OriginalTitle.
  124. /// </summary>
  125. protected string _OriginalTitle;
  126. /// <summary>
  127. /// When provided in a partial class, allows value of OriginalTitle to be changed before setting.
  128. /// </summary>
  129. partial void SetOriginalTitle(string oldValue, ref string newValue);
  130. /// <summary>
  131. /// When provided in a partial class, allows value of OriginalTitle to be changed before returning.
  132. /// </summary>
  133. partial void GetOriginalTitle(ref string result);
  134. /// <summary>
  135. /// Max length = 1024
  136. /// </summary>
  137. [MaxLength(1024)]
  138. [StringLength(1024)]
  139. public string OriginalTitle
  140. {
  141. get
  142. {
  143. string value = _OriginalTitle;
  144. GetOriginalTitle(ref value);
  145. return _OriginalTitle = value;
  146. }
  147. set
  148. {
  149. string oldValue = _OriginalTitle;
  150. SetOriginalTitle(oldValue, ref value);
  151. if (oldValue != value)
  152. {
  153. _OriginalTitle = value;
  154. }
  155. }
  156. }
  157. /// <summary>
  158. /// Backing field for SortTitle.
  159. /// </summary>
  160. protected string _SortTitle;
  161. /// <summary>
  162. /// When provided in a partial class, allows value of SortTitle to be changed before setting.
  163. /// </summary>
  164. partial void SetSortTitle(string oldValue, ref string newValue);
  165. /// <summary>
  166. /// When provided in a partial class, allows value of SortTitle to be changed before returning.
  167. /// </summary>
  168. partial void GetSortTitle(ref string result);
  169. /// <summary>
  170. /// Max length = 1024
  171. /// </summary>
  172. [MaxLength(1024)]
  173. [StringLength(1024)]
  174. public string SortTitle
  175. {
  176. get
  177. {
  178. string value = _SortTitle;
  179. GetSortTitle(ref value);
  180. return _SortTitle = value;
  181. }
  182. set
  183. {
  184. string oldValue = _SortTitle;
  185. SetSortTitle(oldValue, ref value);
  186. if (oldValue != value)
  187. {
  188. _SortTitle = value;
  189. }
  190. }
  191. }
  192. /// <summary>
  193. /// Backing field for Language.
  194. /// </summary>
  195. protected string _Language;
  196. /// <summary>
  197. /// When provided in a partial class, allows value of Language to be changed before setting.
  198. /// </summary>
  199. partial void SetLanguage(string oldValue, ref string newValue);
  200. /// <summary>
  201. /// When provided in a partial class, allows value of Language to be changed before returning.
  202. /// </summary>
  203. partial void GetLanguage(ref string result);
  204. /// <summary>
  205. /// Required, Min length = 3, Max length = 3
  206. /// ISO-639-3 3-character language codes.
  207. /// </summary>
  208. [Required]
  209. [MinLength(3)]
  210. [MaxLength(3)]
  211. [StringLength(3)]
  212. public string Language
  213. {
  214. get
  215. {
  216. string value = _Language;
  217. GetLanguage(ref value);
  218. return _Language = value;
  219. }
  220. set
  221. {
  222. string oldValue = _Language;
  223. SetLanguage(oldValue, ref value);
  224. if (oldValue != value)
  225. {
  226. _Language = value;
  227. }
  228. }
  229. }
  230. /// <summary>
  231. /// Backing field for ReleaseDate.
  232. /// </summary>
  233. protected DateTimeOffset? _ReleaseDate;
  234. /// <summary>
  235. /// When provided in a partial class, allows value of ReleaseDate to be changed before setting.
  236. /// </summary>
  237. partial void SetReleaseDate(DateTimeOffset? oldValue, ref DateTimeOffset? newValue);
  238. /// <summary>
  239. /// When provided in a partial class, allows value of ReleaseDate to be changed before returning.
  240. /// </summary>
  241. partial void GetReleaseDate(ref DateTimeOffset? result);
  242. public DateTimeOffset? ReleaseDate
  243. {
  244. get
  245. {
  246. DateTimeOffset? value = _ReleaseDate;
  247. GetReleaseDate(ref value);
  248. return _ReleaseDate = value;
  249. }
  250. set
  251. {
  252. DateTimeOffset? oldValue = _ReleaseDate;
  253. SetReleaseDate(oldValue, ref value);
  254. if (oldValue != value)
  255. {
  256. _ReleaseDate = value;
  257. }
  258. }
  259. }
  260. /// <summary>
  261. /// Backing field for DateAdded.
  262. /// </summary>
  263. protected DateTime _DateAdded;
  264. /// <summary>
  265. /// When provided in a partial class, allows value of DateAdded to be changed before setting.
  266. /// </summary>
  267. partial void SetDateAdded(DateTime oldValue, ref DateTime newValue);
  268. /// <summary>
  269. /// When provided in a partial class, allows value of DateAdded to be changed before returning.
  270. /// </summary>
  271. partial void GetDateAdded(ref DateTime result);
  272. /// <summary>
  273. /// Required.
  274. /// </summary>
  275. [Required]
  276. public DateTime DateAdded
  277. {
  278. get
  279. {
  280. DateTime value = _DateAdded;
  281. GetDateAdded(ref value);
  282. return _DateAdded = value;
  283. }
  284. internal set
  285. {
  286. DateTime oldValue = _DateAdded;
  287. SetDateAdded(oldValue, ref value);
  288. if (oldValue != value)
  289. {
  290. _DateAdded = value;
  291. }
  292. }
  293. }
  294. /// <summary>
  295. /// Backing field for DateModified.
  296. /// </summary>
  297. protected DateTime _DateModified;
  298. /// <summary>
  299. /// When provided in a partial class, allows value of DateModified to be changed before setting.
  300. /// </summary>
  301. partial void SetDateModified(DateTime oldValue, ref DateTime newValue);
  302. /// <summary>
  303. /// When provided in a partial class, allows value of DateModified to be changed before returning.
  304. /// </summary>
  305. partial void GetDateModified(ref DateTime result);
  306. /// <summary>
  307. /// Required.
  308. /// </summary>
  309. [Required]
  310. public DateTime DateModified
  311. {
  312. get
  313. {
  314. DateTime value = _DateModified;
  315. GetDateModified(ref value);
  316. return _DateModified = value;
  317. }
  318. internal set
  319. {
  320. DateTime oldValue = _DateModified;
  321. SetDateModified(oldValue, ref value);
  322. if (oldValue != value)
  323. {
  324. _DateModified = value;
  325. }
  326. }
  327. }
  328. /// <summary>
  329. /// Required, ConcurrenyToken.
  330. /// </summary>
  331. [ConcurrencyCheck]
  332. [Required]
  333. public uint RowVersion { get; set; }
  334. public void OnSavingChanges()
  335. {
  336. RowVersion++;
  337. }
  338. /*************************************************************************
  339. * Navigation properties
  340. *************************************************************************/
  341. [ForeignKey("PersonRole_PersonRoles_Id")]
  342. public virtual ICollection<PersonRole> PersonRoles { get; protected set; }
  343. [ForeignKey("PersonRole_PersonRoles_Id")]
  344. public virtual ICollection<Genre> Genres { get; protected set; }
  345. [ForeignKey("PersonRole_PersonRoles_Id")]
  346. public virtual ICollection<Artwork> Artwork { get; protected set; }
  347. [ForeignKey("PersonRole_PersonRoles_Id")]
  348. public virtual ICollection<Rating> Ratings { get; protected set; }
  349. [ForeignKey("PersonRole_PersonRoles_Id")]
  350. public virtual ICollection<MetadataProviderId> Sources { get; protected set; }
  351. }
  352. }