diff options
Diffstat (limited to 'Jellyfin.Data/Entities/Group.cs')
| -rw-r--r-- | Jellyfin.Data/Entities/Group.cs | 129 |
1 files changed, 58 insertions, 71 deletions
diff --git a/Jellyfin.Data/Entities/Group.cs b/Jellyfin.Data/Entities/Group.cs index 54f9f4905..878811e59 100644 --- a/Jellyfin.Data/Entities/Group.cs +++ b/Jellyfin.Data/Entities/Group.cs @@ -1,109 +1,96 @@ +#pragma warning disable CA2227 + using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using Jellyfin.Data.Enums; +using Jellyfin.Data.Interfaces; namespace Jellyfin.Data.Entities { - public partial class Group + /// <summary> + /// An entity representing a group. + /// </summary> + public class Group : IHasPermissions, IHasConcurrencyToken { - partial void Init(); - /// <summary> - /// Default constructor. Protected due to required properties, but present because EF needs it. + /// Initializes a new instance of the <see cref="Group"/> class. /// </summary> - protected Group() + /// <param name="name">The name of the group.</param> + public Group(string name) { - GroupPermissions = new HashSet<Permission>(); - ProviderMappings = new HashSet<ProviderMapping>(); - Preferences = new HashSet<Preference>(); - - Init(); - } + if (string.IsNullOrEmpty(name)) + { + throw new ArgumentNullException(nameof(name)); + } - /// <summary> - /// Replaces default constructor, since it's protected. Caller assumes responsibility for setting all required values before saving. - /// </summary> - public static Group CreateGroupUnsafe() - { - return new Group(); - } + Name = name; + Id = Guid.NewGuid(); - /// <summary> - /// Public constructor with required data - /// </summary> - /// <param name="name"></param> - /// <param name="_user0"></param> - public Group(string name, User _user0) - { - if (string.IsNullOrEmpty(name)) throw new ArgumentNullException(nameof(name)); - this.Name = name; - - if (_user0 == null) throw new ArgumentNullException(nameof(_user0)); - _user0.Groups.Add(this); - - this.GroupPermissions = new HashSet<Permission>(); - this.ProviderMappings = new HashSet<ProviderMapping>(); - this.Preferences = new HashSet<Preference>(); - - Init(); + Permissions = new HashSet<Permission>(); + Preferences = new HashSet<Preference>(); } /// <summary> - /// Static create function (for use in LINQ queries, etc.) + /// Initializes a new instance of the <see cref="Group"/> class. /// </summary> - /// <param name="name"></param> - /// <param name="_user0"></param> - public static Group Create(string name, User _user0) + /// <remarks> + /// Default constructor. Protected due to required properties, but present because EF needs it. + /// </remarks> + protected Group() { - return new Group(name, _user0); } - /************************************************************************* - * Properties - *************************************************************************/ - /// <summary> - /// Identity, Indexed, Required + /// Gets or sets the id of this group. /// </summary> - [Key] - [Required] - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; protected set; } + /// <remarks> + /// Identity, Indexed, Required. + /// </remarks> + public Guid Id { get; protected set; } /// <summary> - /// Required, Max length = 255 + /// Gets or sets the group's name. /// </summary> + /// <remarks> + /// Required, Max length = 255. + /// </remarks> [Required] [MaxLength(255)] [StringLength(255)] public string Name { get; set; } - /// <summary> - /// Required, ConcurrenyToken - /// </summary> + /// <inheritdoc /> [ConcurrencyCheck] - [Required] public uint RowVersion { get; set; } - public void OnSavingChanges() - { - RowVersion++; - } - - /************************************************************************* - * Navigation properties - *************************************************************************/ + /// <summary> + /// Gets or sets a collection containing the group's permissions. + /// </summary> + public virtual ICollection<Permission> Permissions { get; protected set; } - [ForeignKey("Permission_GroupPermissions_Id")] - public virtual ICollection<Permission> GroupPermissions { get; protected set; } + /// <summary> + /// Gets or sets a collection containing the group's preferences. + /// </summary> + public virtual ICollection<Preference> Preferences { get; protected set; } - [ForeignKey("ProviderMapping_ProviderMappings_Id")] - public virtual ICollection<ProviderMapping> ProviderMappings { get; protected set; } + /// <inheritdoc/> + public bool HasPermission(PermissionKind kind) + { + return Permissions.First(p => p.Kind == kind).Value; + } - [ForeignKey("Preference_Preferences_Id")] - public virtual ICollection<Preference> Preferences { get; protected set; } + /// <inheritdoc/> + public void SetPermission(PermissionKind kind, bool value) + { + Permissions.First(p => p.Kind == kind).Value = value; + } + /// <inheritdoc /> + public void OnSavingChanges() + { + RowVersion++; + } } } - |
