Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Excepti
// Generator 관련 접근
.requestMatchers("/generator/", "/generator/{generatorId}", "/generator/list/{memberId}").permitAll()
// Bookmark 관련 접근
.requestMatchers("/bookmark/add/{memberId}/{generatorId}", "/bookmark/delete/{bookmarkId}" ).permitAll()
.requestMatchers("/bookmark/add/{memberId}/{generatorId}", "/bookmark/delete/{memberId}/{generatorId}" ).permitAll()
// Crawling 관련 접근
.requestMatchers("/crawl", "/crawl-with-login").permitAll() // /crawl 경로 접근 허용
// 기타 관련 접근
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import lombok.*;


import javax.net.ssl.SSLSession;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
Expand Down Expand Up @@ -74,4 +75,13 @@ public void addEvent(Event event) {
this.events.add(event);
event.setGenerator(this);
}

public Bookmark getBookmarkByMember(Long memberId) {
return this.bookmarkList.stream()
.filter(bookmark -> bookmark.getMember().getMemberId().equals(memberId))
.findFirst()
.orElse(null); // 해당 멤버의 북마크가 없을 경우 null 반환
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,7 @@ public interface BookmarkRepository extends JpaRepository<Bookmark, Long> {
@Query("SELECT b.generator.generatorId FROM Bookmark b WHERE b.member.memberId = :memberId")
List<Long> findBookmarkedGeneratorIdsByMemberId(@Param("memberId") Long memberId);

@Query("SELECT b.id FROM Bookmark b WHERE b.member.id = :memberId AND b.generator.generatorId = :generatorId")
Long findBookmarkIdByMemberAndGenerator(@Param("memberId") Long memberId, @Param("generatorId") Long generatorId);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package Capstone.AutoScheduler.global.service.BookmarkService;

public interface BookmarkQueryService {
Long findBookmarkIdByMemberAndGenerator(Long memberId, Long generatorId);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package Capstone.AutoScheduler.global.service.BookmarkService;

import Capstone.AutoScheduler.global.repository.BookmarkRepository;
import jakarta.transaction.Transactional;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
@Transactional
@Slf4j
public class BookmarkQueryServiceImpl implements BookmarkQueryService {
private final BookmarkRepository bookmarkRepository;

@Override
public Long findBookmarkIdByMemberAndGenerator(Long memberId, Long generatorId) {
return bookmarkRepository.findBookmarkIdByMemberAndGenerator(memberId, generatorId);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import Capstone.AutoScheduler.global.converter.BookmarkConverter;
import Capstone.AutoScheduler.global.domain.entity.Bookmark;
import Capstone.AutoScheduler.global.service.BookmarkService.BookmarkCommandService;
import Capstone.AutoScheduler.global.service.BookmarkService.BookmarkQueryService;
import Capstone.AutoScheduler.global.web.dto.Bookmark.BookmarkResponseDTO;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
Expand All @@ -22,6 +23,7 @@
@Tag(name = "일정 생성기 북마크 API", description = "일정 생성기 북마크 추가/삭제/개수 조회 관련 API입니다.")
public class BookmarkController {
private final BookmarkCommandService bookmarkCommandService;
private final BookmarkQueryService bookmarkQueryService;

// 북마크 추가
@PostMapping("/add/{memberId}/{generatorId}")
Expand All @@ -35,12 +37,13 @@ public ApiResponse<BookmarkResponseDTO.CreateBookmarkResultDTO> createBookmark(
}

// 북마크 삭제
@DeleteMapping("/delete/{bookmarkId}")
@Operation(summary = "북마크 삭제 API", description = "bookmarks, bookmarkId")
public ApiResponse<BookmarkResponseDTO.DeleteBookmarkResultDTO> deleteBookmark(
@PathVariable(name = "bookmarkId") Long bookmarkId
) {
@DeleteMapping("/delete/{memberId}/{generatorId}")
@Operation(summary = "북마크 삭제 API", description = "memberId와 generatorId를 이용해 북마크를 삭제합니다.")
public ApiResponse<BookmarkResponseDTO.DeleteBookmarkResultDTO> deleteBookmark(@PathVariable Long memberId, @PathVariable Long generatorId) {
Long bookmarkId = bookmarkQueryService.findBookmarkIdByMemberAndGenerator(memberId, generatorId);
bookmarkCommandService.deleteBookmark(bookmarkId);

return ApiResponse.onSuccess(SuccessStatus.BOOKMARK_OK, BookmarkConverter.toDeleteBookmarkResultDTO(bookmarkId));
}

}
Loading