HighlightComment.java
package qwerty.chaekit.domain.highlight.comment;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import qwerty.chaekit.domain.BaseEntity;
import qwerty.chaekit.domain.highlight.Highlight;
import qwerty.chaekit.domain.member.user.UserProfile;
import java.util.ArrayList;
import java.util.List;
@Entity
@Getter
@Table(name = "highlight_comment")
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class HighlightComment extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="author_id")
private UserProfile author;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="highlight_id")
private Highlight highlight;
@Column(nullable = false, length = 1000)
private String content;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "parent_id")
private HighlightComment parent;
@OneToMany(mappedBy = "parent", cascade = CascadeType.ALL, orphanRemoval = true)
private List<HighlightComment> replies = new ArrayList<>();
@Builder
public HighlightComment(UserProfile author, Highlight highlight, String content, HighlightComment parent) {
this.author = author;
this.highlight = highlight;
this.content = content;
this.parent = parent;
}
public void updateContent(String comment) {
this.content = comment;
}
public void addReply(HighlightComment reply) {
this.replies.add(reply);
}
}