namespace HyperBooru.ApiRecords; public class TagInfo { public string Id { get; init; } public string? Namespace { get; init; } public string Name { get; init; } public bool IsImplicit { get; init; } } public class MediaInfo { public string Id { get; init; } public string Checksum { get; init; } public string MimeType { get; init; } public string? ShortDescription { get; init; } public string? LongDescription { get; init; } public UploadedFileInfo[] UploadedFileHistory { get; init; } public MediaInfo(DbMedia media) { Id = media.Guid.ToString(); Checksum = media.Checksum; MimeType = media.MimeType; ShortDescription = media.ShortDescription; LongDescription = media.LongDescription; UploadedFileHistory = media.UploadedFiles .Select(uf => new UploadedFileInfo(uf)) .ToArray(); } } public record MediaUpdateInfo { public string? ShortDescription { get; init; } public string? LongDescription { get; init; } } public class UploadedFileInfo { public string Checksum { get; init; } public string? Filename { get; init; } public DateTime UploadTime { get; init; } public DateTime? LastAccessTime { get; init; } public DateTime? LastWriteTime { get; init; } public DateTime? CreateTime { get; init; } public UploadedFileInfo(DbUploadedFile uploadedFile) { Checksum = uploadedFile.OriginalChecksum; Filename = uploadedFile.Filename; UploadTime = uploadedFile.UploadTime; LastAccessTime = uploadedFile.LastAccessTime; LastWriteTime = uploadedFile.LastWriteTime; CreateTime = uploadedFile.CreateTime; } }