namespace Application.Features.Api.Forum.Post.Get;

public sealed record Response(
    int ID,
    int BoardID,
    string BoardCode,
    int? BoardPrefixID,
    int? MemberID,
    string Subject,
    string Content,
    string? SID,
    string? Email,
    string? Name,

    // 말머리
    Response.BoardPrefixDto? BoardPrefix,

    // 작성자
    Response.WriterDto? Writer,

    bool IsReply,
    bool IsAnonymous,
    bool IsSecret,
    bool IsNotice,
    bool IsSpeaker,
    int Views,
    int Likes,
    int Dislikes,
    int Comments,
    int Reports,
    byte Images,
    byte Medias,
    byte Files,
    byte Tags,
    string? IpAddress,
    DateTime CreatedAt,

    // 태그
    List<Response.TagDto> TagList,

    // 이전/다음 게시글
    int? PrevID,
    int? NextID,

    // 사용자별 상태
    bool HasLike,
    bool HasDislike,
    bool HasBookmark,
    bool HasReport
) {
    public sealed record BoardPrefixDto(int ID, int BoardID, string Name, string? Color, int Posts);
    public sealed record WriterDto(int ID, string SID, string? Name, string? Thumb, string? Icon, string? GradeImage, string? Summary, DateTime CreatedAt);
    public sealed record TagDto(int ID, string Slug);
}
