aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Data/Entities/CollectionItem.cs
blob: d879806ee6f82401e1dc48df0e710fdb6b8a6ec5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace Jellyfin.Data.Entities
{
    public partial class CollectionItem
    {
        partial void Init();

        /// <summary>
        /// Default constructor. Protected due to required properties, but present because EF needs it.
        /// </summary>
        protected CollectionItem()
        {
            // NOTE: This class has one-to-one associations with CollectionItem.
            // One-to-one associations are not validated in constructors since this causes a scenario where each one must be constructed before the other.

            Init();
        }

        /// <summary>
        /// Replaces default constructor, since it's protected. Caller assumes responsibility for setting all required values before saving.
        /// </summary>
        public static CollectionItem CreateCollectionItemUnsafe()
        {
            return new CollectionItem();
        }

        /// <summary>
        /// Public constructor with required data.
        /// </summary>
        /// <param name="_collection0"></param>
        /// <param name="_collectionitem1"></param>
        /// <param name="_collectionitem2"></param>
        public CollectionItem(Collection _collection0, CollectionItem _collectionitem1, CollectionItem _collectionitem2)
        {
            // NOTE: This class has one-to-one associations with CollectionItem.
            // One-to-one associations are not validated in constructors since this causes a scenario where each one must be constructed before the other.

            if (_collection0 == null)
            {
                throw new ArgumentNullException(nameof(_collection0));
            }

            _collection0.CollectionItem.Add(this);

            if (_collectionitem1 == null)
            {
                throw new ArgumentNullException(nameof(_collectionitem1));
            }

            _collectionitem1.Next = this;

            if (_collectionitem2 == null)
            {
                throw new ArgumentNullException(nameof(_collectionitem2));
            }

            _collectionitem2.Previous = this;

            Init();
        }

        /// <summary>
        /// Static create function (for use in LINQ queries, etc.)
        /// </summary>
        /// <param name="_collection0"></param>
        /// <param name="_collectionitem1"></param>
        /// <param name="_collectionitem2"></param>
        public static CollectionItem Create(Collection _collection0, CollectionItem _collectionitem1, CollectionItem _collectionitem2)
        {
            return new CollectionItem(_collection0, _collectionitem1, _collectionitem2);
        }

        /*************************************************************************
         * Properties
         *************************************************************************/

        /// <summary>
        /// Backing field for Id.
        /// </summary>
        internal int _Id;
        /// <summary>
        /// When provided in a partial class, allows value of Id to be changed before setting.
        /// </summary>
        partial void SetId(int oldValue, ref int newValue);
        /// <summary>
        /// When provided in a partial class, allows value of Id to be changed before returning.
        /// </summary>
        partial void GetId(ref int result);

        /// <summary>
        /// Identity, Indexed, Required.
        /// </summary>
        [Key]
        [Required]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Id
        {
            get
            {
                int value = _Id;
                GetId(ref value);
                return _Id = value;
            }

            protected set
            {
                int oldValue = _Id;
                SetId(oldValue, ref value);
                if (oldValue != value)
                {
                    _Id = value;
                }
            }
        }

        /// <summary>
        /// Required, ConcurrenyToken.
        /// </summary>
        [ConcurrencyCheck]
        [Required]
        public uint RowVersion { get; set; }

        public void OnSavingChanges()
        {
            RowVersion++;
        }

        /*************************************************************************
         * Navigation properties
         *************************************************************************/

        /// <summary>
        /// Required.
        /// </summary>
        [ForeignKey("LibraryItem_Id")]
        public virtual LibraryItem LibraryItem { get; set; }

        /// <remarks>
        /// TODO check if this properly updated dependant and has the proper principal relationship
        /// </remarks>
        [ForeignKey("CollectionItem_Next_Id")]
        public virtual CollectionItem Next { get; set; }

        /// <remarks>
        /// TODO check if this properly updated dependant and has the proper principal relationship
        /// </remarks>
        [ForeignKey("CollectionItem_Previous_Id")]
        public virtual CollectionItem Previous { get; set; }
    }
}