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 DbMedia : DbObject { 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 DbMedia() => base.ObjectType = ObjectType.Media; public string? DisplayName { get { if(ShortDescription is not null) return ShortDescription; return UploadedFiles .OrderBy(f => f.UploadTime) .First()?.Filename; } } } public record DbUploadedFile { [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.Now; public DateTime? LastAccessTime { get; set; } public DateTime? LastWriteTime { get; set; } public DateTime? CreateTime { get; set; } public virtual DbMedia Media { get; set; } }