[클론 코딩] 네이버 카페 - 카페 생성시 기본 게시판
2024. 5. 28. 14:45ㆍProject/Naver Cafe
네이버 카페에는 게시글을 작성할 수 있고 이를 분류하는 게시판이라는 기능이 존재한다. 해당 기능이 존재하기 때문에 사용자들은 '카페에는 게시판이 있고 게시판 마다 게시글이 있다'라고 서비스를 이해하고 사용할 수 있는 것이다.
네이버 카페는 기본적으로 생성시 '자유게시판'이라는 게시판이 생성된다. 그래서 이번에는 게시판에 대한 서비스(게시판 추가, 수정 등)를 구현하기 전에 카페 생성시 자동적으로 생성되는 게시판에 대한 구현을 먼저 하고자 한다.
BulletinBoard
package CloneCoding.NaverCafe.domain.bulletinBoard;
import static CloneCoding.NaverCafe.domain.bulletinBoard.enums.BasicBulletinBoardData.*;
import static CloneCoding.NaverCafe.domain.cafeMember.enums.CafeMemberPosition.*;
@Entity
@Table(name = "BULLETIN_BOARD")
@Getter
@Builder
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
public class BulletinBoard {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "SEQUENCE")
private int sequence;
@Column(name = "NAME")
private String name;
@Column(name = "DESCRIPTION")
private String description;
@Column(name = "WRITE_AUTH")
private String writeAuth;
@Column(name = "READ_AUTH")
private String readAuth;
@Column(name = "COMMENT_AUTH")
private String commentAuth;
@Column(name = "USE_FAVORITE")
private boolean useFavorite;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "CAFE_ID")
private Cafe cafeId;
public static BulletinBoard createBasicBulletinBoard(Cafe cafe) {
return BulletinBoard.builder()
.sequence(1)
.name(BASIC_NAME.getValue())
.description(BASIC_DESCRIPTION.getValue())
.writeAuth(CAFE_MEMBER.getPosition())
.readAuth(CAFE_MEMBER.getPosition())
.commentAuth(CAFE_MEMBER.getPosition())
.useFavorite(true)
.cafeId(cafe)
.build();
}
}
- id : 식별키(PK)
- sequence : 게시판 노출 순서
- name : 게시판 이름
- description : 게시판에 대한 설명
- writeAuth : 게시판 글쓰기 가능 등급(최소 기준)
- readAuth : 게시판 읽기 가능 등급(최소 기준)
- commentAuth : 게시판 댓글 작성 가능 등급(최소 기준)
- useFavorite : 좋아요 기능 사용 여부
- cafeId : 참조키(FK)
- createBasicBulletinBoard() : 카페 ID 정보를 받아 기본 게시판을 생성하는 메서드
BasicBulletinBoardData
package CloneCoding.NaverCafe.domain.bulletinBoard.enums;
@Getter
@RequiredArgsConstructor
public enum BasicBulletinBoardData {
BASIC_NAME("자유게시판"),
BASIC_DESCRIPTION(""),
;
private final String value;
}
기본 게시판에 사용되는 정보를 상수로 갖는 Enum 클래스, 카페 생성시 기본 게시판이 생성될 때 해당 정보들을 사용해 기본 게시판을 생성하게 된다.
CafeServiceImpl
package CloneCoding.NaverCafe.domain.cafe.service;
@Service
@RequiredArgsConstructor
public class CafeServiceImpl implements CafeService {
private final CafeRepository cafeRepository;
private final MemberRepository memberRepository;
private final KeywordRepository keywordRepository;
private final CafeMemberRepository cafeMemberRepository;
private final BulletinBoardRepository bulletinBoardRepository;
private final AesUtil aesUtil;
@Override
public String createCafe(RequestCreateCafe request, String token) {
Cafe cafe = Cafe.createCafe(request.getCafeInfo());
Member member = checkMember(token);
List<Keyword> keywords = createKeywords(request.getKeywords(), cafe);
CafeMember cafeManager = CafeMember.createCafeManager(
member.getAccountId(), member.getNickname(),
member.getGender(), member.getBirthday(), cafe
);
BulletinBoard basicBulletinBoard = BulletinBoard.createBasicBulletinBoard(cafe);
cafeRepository.save(cafe);
keywordRepository.saveAll(keywords);
cafeMemberRepository.save(cafeManager);
bulletinBoardRepository.save(basicBulletinBoard);
return CREATE_CAFE_COMPLETE.getMessage();
}
}
카페 생성시에 사용되는 CafeServiceImpl의 createCafe() 메서드에 기본 게시판을 생성(게시판 객체)하고 DB에 저장(엔티티 저장)하는 부분을 추가하였다. 이로써 카페를 생성하면 기본 게시판도 자동으로 생성된다.
API TEST
기본 게시판이 잘 생성되는지 기존 API 요청(카페 생성)을 통해 확인한 결과이다. 카페 정상 생성 후에 DB를 확인해 보니 기본 게시판(=자유게시판)이 잘 생성된 걸 확인할 수 있었다.
'Project > Naver Cafe' 카테고리의 다른 글
[클론 코딩] 네이버 카페 - 통합게시판 수정 (0) | 2024.05.29 |
---|---|
[클론 코딩] 네이버 카페 - 통합게시판 추가 (0) | 2024.05.28 |
[클론 코딩] 네이버 카페 - 카페 탈퇴 (0) | 2024.05.26 |
[클론 코딩] 네이버 카페 - 카페 회원정보 수정 (0) | 2024.05.26 |
[클론 코딩] 네이버 카페 - 카페 회원 가입 (0) | 2024.05.22 |