|
4 | 4 | import java.util.Collections;
|
5 | 5 | import java.util.List;
|
6 | 6 | import java.util.Set;
|
| 7 | +import java.util.stream.Collectors; |
7 | 8 |
|
8 | 9 | import org.springframework.data.domain.PageRequest;
|
9 | 10 | import org.springframework.data.domain.Pageable;
|
|
13 | 14 | import org.springframework.transaction.annotation.Transactional;
|
14 | 15 | import org.springframework.web.multipart.MultipartFile;
|
15 | 16 |
|
| 17 | +import com.sponus.coredomain.domain.bookmark.repository.BookmarkRepository; |
16 | 18 | import com.sponus.coredomain.domain.organization.Club;
|
17 | 19 | import com.sponus.coredomain.domain.organization.Company;
|
18 | 20 | import com.sponus.coredomain.domain.organization.Organization;
|
|
40 | 42 | @RequiredArgsConstructor
|
41 | 43 | public class OrganizationService {
|
42 | 44 | private final OrganizationRepository organizationRepository;
|
| 45 | + private final BookmarkRepository bookmarkRepository; |
43 | 46 | private final S3Service s3Service;
|
44 | 47 | private final PasswordEncoder passwordEncoder;
|
45 | 48 | private final SearchHistoryRepository searchHistoryRepository;
|
@@ -75,12 +78,21 @@ private Organization findOrganizationById(Long organizationId) {
|
75 | 78 | }
|
76 | 79 |
|
77 | 80 | public PageResponse<OrganizationGetResponse> getOrganizations(
|
| 81 | + Organization authOrganization, |
78 | 82 | PageCondition pageCondition,
|
79 | 83 | OrganizationType organizationType) {
|
| 84 | + // TODO: FETCH JOIN으로 변경 |
| 85 | + Set<Long> bookmarkedOrganizationIds = bookmarkRepository.findByOrganization(authOrganization).stream() |
| 86 | + .map((bookmark) -> bookmark.getTarget().getId()) |
| 87 | + .collect(Collectors.toSet()); |
80 | 88 | Pageable pageable = PageRequest.of(pageCondition.getPage() - 1, pageCondition.getSize());
|
81 | 89 | List<OrganizationGetResponse> organizations = organizationRepository.findOrganizations(
|
82 |
| - organizationType, pageable).stream() |
83 |
| - .map(OrganizationGetResponse::of).toList(); |
| 90 | + organizationType, pageable) |
| 91 | + .stream() |
| 92 | + .map(organization -> |
| 93 | + OrganizationGetResponse.of(organization, bookmarkedOrganizationIds.contains(organization.getId()))) |
| 94 | + .toList(); |
| 95 | + |
84 | 96 | return PageResponse.of(
|
85 | 97 | PageableExecutionUtils.getPage(organizations, pageable,
|
86 | 98 | () -> organizationRepository.countByOrganizationType(organizationType)));
|
|
0 commit comments