Skip to content

Commit

Permalink
Merge pull request #137 from studio-recoding/fix-category-delete
Browse files Browse the repository at this point in the history
[🔧fix] category 삭제 및 CICD 수정
  • Loading branch information
JeonHaeseung authored Jul 9, 2024
2 parents a5e9d22 + b532ac2 commit 5ad18e3
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 51 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/dev-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -100,8 +100,8 @@ jobs:
script: |
sh ./dev/config/scripts/deploy.sh
sudo docker stop $(sudo docker ps -a -q)
sudo docker rm $(sudo docker ps -a -q)
sudo docker stop $(sudo docker ps -a --filter="name=backend-server" -q)
sudo docker rm $(sudo docker ps -a --filter="name=backend-server" -q)
sudo docker rmi $(sudo docker images -q)
docker pull jeonhaeseung/ness-server-dev:dev
docker run -d --name backend-server -p 80:8080 --restart unless-stopped jeonhaeseung/ness-server-dev:dev
4 changes: 2 additions & 2 deletions .github/workflows/prod-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -105,8 +105,8 @@ jobs:
script: |
sh ./prod/config/scripts/deploy.sh
sudo docker stop $(sudo docker ps -a -q)
sudo docker rm $(sudo docker ps -a -q)
sudo docker stop $(sudo docker ps -a --filter="name=backend-server" -q)
sudo docker rm $(sudo docker ps -a --filter="name=backend-server" -q)
sudo docker rmi $(sudo docker images -q)
docker pull jeonhaeseung/ness-server-prod:main
docker run -d --name backend-server -p 80:8080 --restart unless-stopped jeonhaeseung/ness-server-prod:main
21 changes: 18 additions & 3 deletions src/main/java/Ness/Backend/domain/category/CategoryService.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import Ness.Backend.domain.member.MemberRepository;
import Ness.Backend.domain.member.entity.Member;
import Ness.Backend.domain.schedule.ScheduleRepository;
import Ness.Backend.domain.schedule.ScheduleService;
import Ness.Backend.domain.schedule.entity.Schedule;
import Ness.Backend.global.error.exception.DefaultCategoryException;
import Ness.Backend.global.error.exception.DuplicateCategoryException;
Expand All @@ -28,6 +29,7 @@ public class CategoryService {
private final CategoryRepository categoryRepository;
private final MemberRepository memberRepository;
private final ScheduleRepository scheduleRepository;
private final ScheduleService scheduleService;
/* 특정 유저의 카테고리 전부 가져오기 */
@Transactional(readOnly = true)
public GetCategoryListDto getUserCategory(Long memberId) {
Expand Down Expand Up @@ -93,11 +95,24 @@ public void deleteUserCategory(Long memberId, Long categoryId){
//디폴트 카테고리 찾기
Category defaultCategory = categoryRepository.findCategoryByMember_idAndIsDefaultNone(memberId, true);

//삭제할 카테고리의 일정은 모두 디폴트로 옮기기
//삭제할 카테고리의 일정은 모두 디폴트로 옮기고, 변경 사항을 VectorDB에도 저장하기
List<Schedule> changeScheduleList = scheduleRepository.findSchedulesByCategory_Id(categoryId);

changeScheduleList.forEach(
schedule -> schedule.changeCategory(defaultCategory));
changeScheduleList.forEach(schedule -> {
schedule.changeCategory(defaultCategory);

scheduleService.putAiSchedule(
schedule.getInfo(),
schedule.getLocation(),
schedule.getPerson(),
schedule.getStartTime(),
schedule.getEndTime(),
schedule.getCategory().getName(),
schedule.getCategory().getId(),
schedule.getCategory().getColor(),
schedule.getMember().getId(),
schedule.getId());
});

//해당 카테고리 삭제
log.info(categoryId + "번 카테고리 " + deleteCategory.getName() + " 삭제");
Expand Down
106 changes: 62 additions & 44 deletions src/main/java/Ness/Backend/domain/schedule/ScheduleService.java
Original file line number Diff line number Diff line change
Expand Up @@ -67,50 +67,6 @@ public GetScheduleListDto getOneDayUserSchedule(Long memberId, ZonedDateTime dat
.findOneDaySchedulesByMember_Id(memberId, date));
}

/* 사용자가 직접 변경한 스케쥴 RDB에 저장하는 로직 */
public GetScheduleListDto changeSchedule(Long memberId, PutScheduleDto putScheduleDto){
Schedule schedule = scheduleRepository.findScheduleById(putScheduleDto.getId());
Category category = categoryRepository.findCategoryById(putScheduleDto.getCategoryNum());

//RDB에서 변경
schedule.changeSchedule(
putScheduleDto.getInfo(),
putScheduleDto.getLocation(),
putScheduleDto.getPerson(),
putScheduleDto.getStartTime(),
putScheduleDto.getEndTime(),
category);

//VectorDB에서 변경
ZonedDateTime endTime = putScheduleDto.getEndTime();
if(endTime == null){
endTime = putScheduleDto.getStartTime();
}

PutFastApiScheduleDto dto = PutFastApiScheduleDto.builder()
.info(putScheduleDto.getInfo())
.location(putScheduleDto.getLocation())
.person(putScheduleDto.getPerson())
.startTime(putScheduleDto.getStartTime())
.endTime(endTime)
.category(category.getName())
.category_id(category.getId())
.category_color(category.getColor())
.member_id(memberId)
.schedule_id(putScheduleDto.getId())
.build();

ResponseEntity<JsonNode> responseNode = fastApiPutScheduleApi.putFastApiSchedule(dto);

if (responseNode.getStatusCode() == HttpStatusCode.valueOf(201)) {
log.info("Succeed to put data in Vector DB");
} else {
log.error("Failed to put data in Vector DB");
}

return getOneDayUserSchedule(memberId, putScheduleDto.getOriginalTime().withZoneSameInstant(ZoneId.of("Asia/Seoul")));
}

/* 사용자가 직접 삭제한 스케쥴 */
public GetScheduleListDto deleteSchedule(Long memberId, Long scheduleId){
Schedule schedule = scheduleRepository.findScheduleById(scheduleId);
Expand Down Expand Up @@ -280,6 +236,68 @@ public void postNewAiSchedule(String info, String location, String person,
}
}

/* 사용자가 직접 변경한 스케쥴 RDB에 저장하는 로직 */
public GetScheduleListDto changeSchedule(Long memberId, PutScheduleDto putScheduleDto){
Schedule schedule = scheduleRepository.findScheduleById(putScheduleDto.getId());
Category category = categoryRepository.findCategoryById(putScheduleDto.getCategoryNum());

//RDB에서 변경
schedule.changeSchedule(
putScheduleDto.getInfo(),
putScheduleDto.getLocation(),
putScheduleDto.getPerson(),
putScheduleDto.getStartTime(),
putScheduleDto.getEndTime(),
category);

//VectorDB에서 변경
putAiSchedule(
putScheduleDto.getInfo(),
putScheduleDto.getLocation(),
putScheduleDto.getPerson(),
putScheduleDto.getStartTime(),
putScheduleDto.getEndTime(),
category.getName(),
category.getId(),
category.getColor(),
memberId,
putScheduleDto.getId());

return getOneDayUserSchedule(memberId, putScheduleDto.getOriginalTime().withZoneSameInstant(ZoneId.of("Asia/Seoul")));
}

/*스케쥴 변경을 VectorDB에 저장하는 API 호출 */
public void putAiSchedule(String info, String location, String person,
ZonedDateTime startTime, ZonedDateTime endTime,
String category, Long category_id, String category_color, Long memberId, Long scheduleId){

// null 값은 전달되서는 안됨
if(endTime == null){
endTime = startTime;
}

PutFastApiScheduleDto dto = PutFastApiScheduleDto.builder()
.info(info)
.location(location)
.person(person)
.startTime(startTime.withZoneSameInstant(ZoneId.of("Asia/Seoul")))
.endTime(endTime.withZoneSameInstant(ZoneId.of("Asia/Seoul")))
.category(category)
.category_id(category_id)
.category_color(category_color)
.member_id(memberId)
.schedule_id(scheduleId)
.build();

ResponseEntity<JsonNode> responseNode = fastApiPutScheduleApi.putFastApiSchedule(dto);

if (responseNode.getStatusCode() == HttpStatusCode.valueOf(201)) {
log.info("Succeed to save data in Vector DB");
} else {
log.error("Failed to save data in Vector DB");
}
}

/* 리스트 DTO 만들어서 반환하는 로직 */
public GetScheduleListDto makeScheduleListDto(List<Schedule> scheduleList){
// ScheduleListResponseDto에 매핑
Expand Down

0 comments on commit 5ad18e3

Please sign in to comment.