Skip to content

Commit 2540b4b

Browse files
committed
[feat]: card & board 데이터 삭제
1 parent bca7c94 commit 2540b4b

File tree

12 files changed

+45
-25
lines changed

12 files changed

+45
-25
lines changed

server/Recruit-Api/src/main/java/com/econovation/recruit/api/applicant/controller/ApplicantController.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
import com.econovation.recruit.api.applicant.usecase.TimeTableLoadUseCase;
1414
import com.econovation.recruit.api.applicant.usecase.TimeTableRegisterUseCase;
1515
import com.econovation.recruit.api.applicant.validate.ApplicantValidator;
16-
import com.econovation.recruit.api.recruitment.usecase.RecruitmentUseCase;
1716
import com.econovation.recruit.api.recruitment.util.LatestRecruitmentVo;
1817
import com.econovation.recruitcommon.annotation.ApiErrorExceptionsExample;
1918
import com.econovation.recruitcommon.annotation.TimeTrace;
@@ -22,21 +21,17 @@
2221
import com.econovation.recruitdomain.domains.dto.EmailSendDto;
2322
import com.econovation.recruitdomain.domains.timetable.domain.TimeTable;
2423
import com.econovation.recruitinfrastructure.apache.CommonsEmailSender;
25-
import feign.Response;
2624
import io.swagger.v3.oas.annotations.Operation;
2725
import io.swagger.v3.oas.annotations.tags.Tag;
2826
import java.time.LocalDateTime;
2927
import java.util.HashMap;
3028
import java.util.List;
3129
import java.util.Map;
3230
import java.util.UUID;
33-
import javax.annotation.PostConstruct;
34-
import javax.persistence.criteria.CriteriaBuilder.In;
3531
import lombok.RequiredArgsConstructor;
3632
import lombok.extern.slf4j.Slf4j;
3733
import org.axonframework.commandhandling.gateway.CommandGateway;
3834
import org.springdoc.api.annotations.ParameterObject;
39-
import org.springframework.beans.factory.annotation.Value;
4035
import org.springframework.http.HttpStatus;
4136
import org.springframework.http.ResponseEntity;
4237
import org.springframework.web.bind.annotation.*;
@@ -182,9 +177,7 @@ public ResponseEntity<List<GetApplicantsStatusResponse>> getApplicantsStatus(
182177

183178
@Operation(summary = "year에 해당하는 모든 지원서를 삭제합니다.")
184179
@DeleteMapping("/applicants/all/{year}")
185-
public ResponseEntity<String> deleteApplicants(
186-
@PathVariable("year") Integer year
187-
) {
180+
public ResponseEntity<String> deleteApplicants(@PathVariable("year") Integer year) {
188181
applicantCommandUseCase.deleteByYear(year);
189182
return new ResponseEntity<>(APPLICANTS_BY_YEAR_SUCCESS_DELETE_MESSAGE, HttpStatus.OK);
190183
}

server/Recruit-Api/src/main/java/com/econovation/recruit/api/applicant/service/AnswerCommandService.java

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
import com.econovation.recruitdomain.domains.applicant.domain.state.ApplicantState;
1111
import com.econovation.recruitdomain.domains.applicant.event.domainevent.ApplicantRegisterEvent;
1212
import com.econovation.recruitdomain.domains.applicant.event.domainevent.ApplicantStateModifyEvent;
13+
import com.econovation.recruitdomain.domains.board.adaptor.BoardAdaptor;
14+
import com.econovation.recruitdomain.domains.card.adaptor.CardAdaptor;
1315
import com.econovation.recruitdomain.domains.label.adaptor.LabelAdaptor;
1416
import com.econovation.recruitdomain.domains.score.adaptor.ScoreAdaptor;
1517
import com.econovation.recruitdomain.domains.timetable.adaptor.TimeTableAdapter;
@@ -30,6 +32,8 @@ public class AnswerCommandService implements ApplicantCommandUseCase {
3032
private final TimeTableAdapter timeTableAdapter;
3133
private final ScoreAdaptor scoreAdaptor;
3234
private final LabelAdaptor labelAdaptor;
35+
private final CardAdaptor cardAdaptor;
36+
private final BoardAdaptor boardAdaptor;
3337

3438
@Override
3539
@Transactional
@@ -75,24 +79,15 @@ public UUID execute(Map<String, Object> qna, UUID id) {
7579
@Override
7680
@Transactional
7781
public void deleteByYear(Integer year) {
78-
// TODO: year에 해당하는 지원자 id 리스트로 뽑기
7982
List<String> applicantIds = answerAdaptor.findApplicantIdsByYear(year);
80-
System.out.println(applicantIds);
8183
mongoAnswerAdaptor.delete(year);
82-
// TODO: 지원자 id 리스트를 가지고 time_table 데이터 삭제하기 delete(List<String> applicantIds, Integer year)
83-
timeTableAdapter.deleteAllByApplicantIds(applicantIds);
8484

85-
// TODO: 지원자 id 리스트를 가지고 score 데이터 삭제하기
85+
timeTableAdapter.deleteAllByApplicantIds(applicantIds);
8686
scoreAdaptor.deleteAllByApplicantIds(applicantIds);
87-
88-
// TODO: 지원자 id 리스트를 가지고 label 데이터 삭제하기
8987
labelAdaptor.deleteAllByApplicantIds(applicantIds);
9088

91-
// TODO: card 테이블에서 지원자 id 리스트에 대응하는 board_id 조회하기
92-
93-
// TODO: 이전에서 조회한 board_id 리스트에 대응하는 board 데이터 삭제하기
94-
95-
// TODO: card 테이블에서 지원자 id 리스트에 대응하는 데이터 삭제하기
96-
89+
List<Long> cardIds = cardAdaptor.findAllByApplicantIds(applicantIds);
90+
boardAdaptor.deleteAllByCardIds(cardIds);
91+
cardAdaptor.deleteAllByApplicantIds(applicantIds);
9792
}
9893
}

server/Recruit-Domain/src/main/java/com/econovation/recruitdomain/domains/applicant/adaptor/AnswerAdaptor.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -200,8 +200,6 @@ public List<String> findApplicantIdsByYear(Integer year) {
200200
query.fields().include("id");
201201

202202
List<MongoAnswer> answers = mongoTemplate.find(query, MongoAnswer.class);
203-
return answers.stream()
204-
.map(MongoAnswer::getId)
205-
.toList();
203+
return answers.stream().map(MongoAnswer::getId).toList();
206204
}
207205
}

server/Recruit-Domain/src/main/java/com/econovation/recruitdomain/domains/board/adaptor/BoardAdaptor.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,4 +86,10 @@ public void delete(Board board) {
8686
public void saveAll(List<Board> board) {
8787
boardRepository.saveAll(board);
8888
}
89+
90+
@Override
91+
public void deleteAllByCardIds(List<Long> cardIds) {
92+
boardRepository.deleteAllByCardIdIn(cardIds);
93+
}
94+
;
8995
}

server/Recruit-Domain/src/main/java/com/econovation/recruitdomain/domains/board/domain/BoardRepository.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,6 @@ public interface BoardRepository extends JpaRepository<Board, Integer> {
1717
List<Board> findByColumnIdIn(List<Integer> columnsIds);
1818

1919
Optional<Board> findByCardId(Long cardId);
20+
21+
void deleteAllByCardIdIn(List<Long> cardIds);
2022
}

server/Recruit-Domain/src/main/java/com/econovation/recruitdomain/domains/card/adaptor/CardAdaptor.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,14 @@ public Card findByApplicantId(String applicantId) {
5151
public List<Card> findByIdIn(List<Long> cardIds) {
5252
return cardRepository.findAllById(cardIds);
5353
}
54+
55+
@Override
56+
public List<Long> findAllByApplicantIds(List<String> applicantIds) {
57+
return cardRepository.findAllCardIdByApplicantIdIn(applicantIds);
58+
}
59+
60+
@Override
61+
public void deleteAllByApplicantIds(List<String> applicantIds) {
62+
cardRepository.deleteAllByApplicantIdIn(applicantIds);
63+
}
5464
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,18 @@
11
package com.econovation.recruitdomain.domains.card.domain;
22

3+
import java.util.List;
34
import java.util.Optional;
45
import org.springframework.data.jpa.repository.JpaRepository;
6+
import org.springframework.data.jpa.repository.Query;
7+
import org.springframework.data.repository.query.Param;
58
import org.springframework.stereotype.Repository;
69

710
@Repository
811
public interface CardRepository extends JpaRepository<Card, Long> {
912
Optional<Card> findByApplicantId(String applicantId);
13+
14+
@Query("SELECT c.id FROM Card c WHERE c.applicantId IN :applicantIds")
15+
List<Long> findAllCardIdByApplicantIdIn(@Param("applicantIds") List<String> applicantIds);
16+
17+
void deleteAllByApplicantIdIn(List<String> applicantIds);
1018
}

server/Recruit-Domain/src/main/java/com/econovation/recruitdomain/domains/label/adaptor/LabelAdaptor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,6 @@ public List<Label> loadLabelByCardId(Long cardId) {
8686

8787
@Override
8888
public void deleteAllByApplicantIds(List<String> applicantIds) {
89-
labelRepository.deleteAllByApplicantIdIn(applicantIds);
89+
labelRepository.deleteAllByApplicantIdIn(applicantIds);
9090
}
9191
}

server/Recruit-Domain/src/main/java/com/econovation/recruitdomain/domains/timetable/domain/TimeTableRepository.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@
77
@Repository
88
public interface TimeTableRepository extends JpaRepository<TimeTable, Integer> {
99
List<TimeTable> findByApplicantId(String applicantId);
10+
1011
void deleteByApplicantIdIn(List<String> applicantIds);
1112
}

server/Recruit-Domain/src/main/java/com/econovation/recruitdomain/out/BoardRecordPort.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,6 @@ public interface BoardRecordPort {
99
void delete(Board board);
1010

1111
void saveAll(List<Board> board);
12+
13+
void deleteAllByCardIds(List<Long> cardIds);
1214
}

0 commit comments

Comments
 (0)