using Microsoft.AspNetCore.Mvc.ModelBinding.Binders; using Microsoft.EntityFrameworkCore; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Net.NetworkInformation; namespace HyperBooru; public class Media : HBObject { public string Checksum { get; set; } public string MimeType { get; set; } public string? ShortDescription { get; set; } public string? LongDescription { get; set; } public virtual List UploadedFiles { get; set; } = new(); public bool IsIngest => Tags .Select(t => t.TagDefinition) .Any(td => td.Guid == HBContext.IngestTag); public string? DisplayName { get { if(ShortDescription is not null) return ShortDescription; return UploadedFiles .OrderBy(f => f.UploadTime) .First()?.Filename; } } } public record UploadedFile { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int UploadedFileId { get; set; } public string OriginalChecksum { get; set; } public string? Filename { get; set; } public DateTime UploadTime { get; set; } = DateTime.UtcNow; public DateTime? LastAccessTime { get; set; } public DateTime? LastWriteTime { get; set; } public DateTime? CreateTime { get; set; } public virtual Media Media { get; set; } }