using Nuuru.Server.DTOs.Reaction; namespace Nuuru.Server.DTOs.Booru { /// /// Data transfer object for Post entity /// public class PostDto { public int Id { get; set; } // Storage and identification public string StorageIdentifier { get; set; } public string ImageHash { get; set; } public string MimeType { get; set; } // File metadata public long FileSize { get; set; } public string? OriginalFileName { get; set; } public string? Source { get; set; } public string? Description { get; set; } // Media dimensions public int? Width { get; set; } public int? Height { get; set; } public int? DurationSeconds { get; set; } // Thumbnails public string? ThumbnailPath { get; set; } // Timestamps public DateTime UploadedAt { get; set; } // Content rating public string Rating { get; set; } = "safe"; // Content category public string Category { get; set; } = "gallery"; // Approval status public bool IsApproved { get; set; } public UploaderDto? ApprovedBy { get; set; } public DateTime? ApprovedAt { get; set; } // Comments lock public bool CommentsLocked { get; set; } // Trash public bool IsTrashed { get; set; } public DateTime? TrashedAt { get; set; } public string? TrashReason { get; set; } // Featured public bool IsFeatured { get; set; } public DateTime? FeaturedAt { get; set; } // Boints cosmetics public bool HasGoldenFrame { get; set; } // Relationships (DTOs to prevent circular references) public UploaderDto Uploader { get; set; } public List Tags { get; set; } = new(); // Reactions public ReactionDTO? Reactions { get; set; } } }