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; }
}
}