using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using Jellyfin.Data.Interfaces; using Microsoft.Extensions.Logging; namespace Jellyfin.Data.Entities { /// /// An entity referencing an activity log entry. /// public class ActivityLog : IHasConcurrencyToken { /// /// Initializes a new instance of the class. /// Public constructor with required data. /// /// The name. /// The type. /// The user id. public ActivityLog(string name, string type, Guid userId) { ArgumentException.ThrowIfNullOrEmpty(name); ArgumentException.ThrowIfNullOrEmpty(type); Name = name; Type = type; UserId = userId; DateCreated = DateTime.UtcNow; LogSeverity = LogLevel.Information; } /// /// Gets the identity of this instance. /// [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int Id { get; private set; } /// /// Gets or sets the name. /// /// /// Required, Max length = 512. /// [MaxLength(512)] [StringLength(512)] public string Name { get; set; } /// /// Gets or sets the overview. /// /// /// Max length = 512. /// [MaxLength(512)] [StringLength(512)] public string? Overview { get; set; } /// /// Gets or sets the short overview. /// /// /// Max length = 512. /// [MaxLength(512)] [StringLength(512)] public string? ShortOverview { get; set; } /// /// Gets or sets the type. /// /// /// Required, Max length = 256. /// [MaxLength(256)] [StringLength(256)] public string Type { get; set; } /// /// Gets or sets the user id. /// /// /// Required. /// public Guid UserId { get; set; } /// /// Gets or sets the item id. /// /// /// Max length = 256. /// [MaxLength(256)] [StringLength(256)] public string? ItemId { get; set; } /// /// Gets or sets the date created. This should be in UTC. /// /// /// Required. /// public DateTime DateCreated { get; set; } /// /// Gets or sets the log severity. Default is . /// /// /// Required. /// public LogLevel LogSeverity { get; set; } /// [ConcurrencyCheck] public uint RowVersion { get; private set; } /// public void OnSavingChanges() { RowVersion++; } } }