interface CommentInterface {
    id?: number;
    userId: number | null;
    postId: number;
    parentId?: number | null;
    content: Text | string;
    status: string;
    commentAuthorName?: string | null;
    commentAuthorEmail?: string | null;
    wpCommentId?: number | null;
}

interface CommentObjectInterface {
    id: number;
    userId: number | null;
    postId: number;
    parentId?: number | null;
    content: Text | string;
    status: string;
    author?: UserPublicObjectInterface;
    replies?: CommentPaginatedList;
    createdAt: Date;
    updatedAt: Date;
}

interface CommentCreateRequestObject {
    postId: number;
    parentId?: number | null;
    content: string;
}

interface CommentUpdateRequestObject {
    content: string;
    postId?: number;
}

interface CommentListRequestObject {
    page: number;
    perPage: number;
    sortBy: string;
    sortDirection: string;
    postId: number;
    parentId?: number | null;
    status?: string | null;
    userId?: number | null;
}

interface CommentPaginatedData {
    count: number;
    rows: CommentObjectInterface[] | []
}

interface CommentPaginatedList {
    page: number;
    perPage: number;
    totalRecords: number;
    totalPages?: number;
    data: CommentObjectInterface[] | [];
}
