팀원분 중 한분이 아이디어를 내주셔서 KeepIt이라는 웹사이트 URL 저장을 만들기로 했다.
세부 내용 => SA
▶ 역할 분담
강의에 예제 중에 폴더 만들기가 있어 그걸 참고하여 만들었다.
오류 보다는 헷갈렸던 몇가지 정리했다.
* FeedFolder
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
// feed 연결 => FeedFolder 대 feed 기준
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="feed_id",nullable = false)
private Feed feed;
// folder 연결 => FeedFolder 대 folder 기준
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="folder_id",nullable = false)
private Folder folder;
public FeedFolder(Feed feed, Folder folder){
this.feed = feed;
this.folder = folder;
}
* FeedFolderRepository
=> 폴더를 조회하는 경우 사용 -> 호출 class :FeedService
=> 타 repository와 동일
Optional<FeedFolder> findByFeedAndFolder(Feed feed, Folder folder);
public void addFolders(List<String> folderNames, User user) {
List<Folder> existFolderList = folderRepository.findAllByUserAndTitleIn(user,folderNames);
=> 입력한 유저명의 전체 폴더 가져오기
List<Folder> folderList = new ArrayList<>();
for (String folderName : folderNames) {
if(!isExistFolderName(folderName,existFolderList)){
=> 기존에 있는 폴더와 비교(중복 확인)
Folder folder = new Folder(folderName, user);
=> 중복된게 없다면 새로운 폴더 만들기
folderList.add(folder); => 추가
} else {
throw new IllegalArgumentException("폴더명이 중복되었습니다.");
}
}
folderRepository.saveAll(folderList); => 저장
}
=> DB에 있는 데이터인지 확인하는 메서드
private boolean isExistFolderName(String folderName, List<Folder> existFolderList) {
for(Folder existFolder : existFolderList){
if(folderName.equals(existFolder.getTitle())){
return true;
}
}
return false; => 값이 일치하는게 하나도 없음
=> 그럼 addFolders 에서 !false => true 로 받아 폴더를 만들어줌
}