PublisherProfile.java
package qwerty.chaekit.domain.member.publisher;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import qwerty.chaekit.domain.BaseEntity;
import qwerty.chaekit.domain.member.Member;
import qwerty.chaekit.domain.member.publisher.enums.PublisherApprovalStatus;
@Entity
@Getter
@Table(name = "publisher_profile")
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class PublisherProfile extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "member_id", nullable = false)
private Member member;
@Column(nullable = false)
private String publisherName;
private String profileImageKey;
@Column(nullable = false)
@Enumerated(EnumType.STRING)
private PublisherApprovalStatus approvalStatus = PublisherApprovalStatus.PENDING;
@Builder
public PublisherProfile(Long id, Member member, String publisherName, String profileImageKey) {
this.id = id;
this.member = member;
this.publisherName = publisherName;
this.profileImageKey = profileImageKey;
}
public void approvePublisher() {
approvalStatus = PublisherApprovalStatus.APPROVED;
}
public void rejectPublisher() {
approvalStatus = PublisherApprovalStatus.REJECTED;
}
public boolean isApproved() {
return approvalStatus == PublisherApprovalStatus.APPROVED;
}
public boolean isNotAdmin() {
return !isAdmin();
}
public boolean isAdmin() {
return member.isAdmin();
}
}