Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[DEV-28] 커스텀 수강과목 수정 api 분리 생성 삭제 #249

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
c6208b5
refactor: UpdateTakenLectureController update -> generate, delete로 분리
Hoya324 Apr 9, 2024
f788d40
feat: 수강과목 삭제 UseCase
Hoya324 Apr 9, 2024
149eeef
feat: 수강과목 삭제 Service
Hoya324 Apr 9, 2024
8138258
refactor: 수강과목 삭제 Port id 단건 삭제로 변경
Hoya324 Apr 9, 2024
37cb39a
refactor: 수강과목 삭제 Adapter id 단건 삭제로 변경
Hoya324 Apr 9, 2024
cc05328
feat: application 레벨 수강 과목 생성 로직 추가
Hoya324 Apr 10, 2024
56dab7b
feat: 수강과목 저장 로직 추가
Hoya324 Apr 10, 2024
218fd72
feat: 과목 id에 의한 과목 단건 조회
Hoya324 Apr 10, 2024
a69dbd5
refactor: UpdateTakenLectureController update -> generate, delete로 분리
Hoya324 Apr 10, 2024
b111dad
refactor: UpdateTakenLectureController update -> generate, delete로 분리…
Hoya324 Apr 10, 2024
2304741
feat: 수강과목 삭제 로직 추가
Hoya324 Apr 10, 2024
eaecea5
test: spring test container 통합을 위한 test 설정
Hoya324 Apr 10, 2024
ceaf1c7
test: UpdateTakenLectureController update -> generate, delete로 분리로 test
Hoya324 Apr 10, 2024
eabca88
refactor: Semester 타입 String으로 설정
Hoya324 Apr 10, 2024
436ace8
refactor: Controller 메서드명 변경
Hoya324 Apr 11, 2024
f651662
refactor: Controller 메서드명 변경
Hoya324 Apr 11, 2024
163c527
refactor: path variable 변수명 camel case로 변경
Hoya324 Apr 11, 2024
a62c1c6
refactor: parsing으로 인한 수강과목 생성과 구분되도록 customize 명시
Hoya324 Apr 11, 2024
3881bfc
refactor: DeleteTakenLecture UseCase Service 통합
Hoya324 Apr 11, 2024
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 @@ -9,4 +9,6 @@ public interface FindLecturePort {
List<Lecture> findLecturesByLectureCodes(List<String> lectureCodes);

List<Lecture> findLecturesByIds(List<Long> lectureIds);

Lecture findLectureById(Long lectureId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,21 @@
import java.util.stream.Collectors;

import com.plzgraduate.myongjigraduatebe.core.meta.PersistenceAdapter;
import com.plzgraduate.myongjigraduatebe.lecture.application.port.FindLecturePort;
import com.plzgraduate.myongjigraduatebe.lecture.application.port.SearchLecturePort;
import com.plzgraduate.myongjigraduatebe.lecture.domain.model.Lecture;
import com.plzgraduate.myongjigraduatebe.lecture.infrastructure.adapter.persistence.entity.LectureJpaEntity;
import com.plzgraduate.myongjigraduatebe.lecture.infrastructure.adapter.persistence.mapper.LectureMapper;
import com.plzgraduate.myongjigraduatebe.lecture.infrastructure.adapter.persistence.repository.LectureQueryRepository;
import com.plzgraduate.myongjigraduatebe.lecture.infrastructure.adapter.persistence.repository.LectureRepository;
import com.plzgraduate.myongjigraduatebe.lecture.application.port.FindLecturePort;
import com.plzgraduate.myongjigraduatebe.lecture.application.port.SearchLecturePort;
import com.plzgraduate.myongjigraduatebe.lecture.domain.model.Lecture;

import lombok.RequiredArgsConstructor;

@PersistenceAdapter
@RequiredArgsConstructor
public class LecturePersistenceAdapter implements FindLecturePort, SearchLecturePort {

private final static String NOT_FOUND_LECTURE_ERROR_MESSAGE = "해당 과목을 찾을 수 없습니다.";
private final LectureQueryRepository lectureQueryRepository;
private final LectureRepository lectureRepository;
private final LectureMapper lectureMapper;
Expand All @@ -38,6 +39,13 @@ public List<Lecture> findLecturesByIds(List<Long> lectureIds) {
.collect(Collectors.toList());
}

@Override
public Lecture findLectureById(final Long lectureId) {
LectureJpaEntity lectureJpaEntity = lectureRepository.findById(lectureId)
.orElseThrow(() -> new IllegalArgumentException(NOT_FOUND_LECTURE_ERROR_MESSAGE));
return lectureMapper.mapToLectureModel(lectureJpaEntity);
}

@Override
public List<Lecture> searchLectureByNameOrCode(String type, String keyword) {
List<LectureJpaEntity> lectureJpaEntities = lectureQueryRepository.searchByNameOrCode(type, keyword);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
import com.plzgraduate.myongjigraduatebe.parsing.application.usecase.ParsingTextUseCase;
import com.plzgraduate.myongjigraduatebe.parsing.domain.ParsingInformation;
import com.plzgraduate.myongjigraduatebe.parsing.domain.ParsingTakenLectureDto;
import com.plzgraduate.myongjigraduatebe.takenlecture.application.usecase.delete.DeleteTakenLectureByUserUseCase;
import com.plzgraduate.myongjigraduatebe.takenlecture.application.usecase.delete.DeleteTakenLectureUseCase;
import com.plzgraduate.myongjigraduatebe.takenlecture.application.usecase.save.SaveTakenLectureFromParsingTextUseCase;
import com.plzgraduate.myongjigraduatebe.takenlecture.domain.model.TakenLectureInformation;
import com.plzgraduate.myongjigraduatebe.user.application.usecase.find.FindUserUseCase;
Expand All @@ -35,7 +35,7 @@ class ParsingTextService implements ParsingTextUseCase {
private final FindUserUseCase findUserUseCase;
private final UpdateStudentInformationUseCase updateStudentInformationUseCase;
private final SaveTakenLectureFromParsingTextUseCase saveTakenLectureFromParsingTextUseCase;
private final DeleteTakenLectureByUserUseCase deleteTakenLectureByUserUseCase;
private final DeleteTakenLectureUseCase deleteTakenLectureByUserUseCase;

private final GenerateOrModifyCompletedCreditUseCase generateOrModifyCompletedCreditUseCase;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@

import javax.validation.Valid;

import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;

import com.plzgraduate.myongjigraduatebe.core.meta.LoginUser;
import com.plzgraduate.myongjigraduatebe.takenlecture.api.dto.request.UpdateTakenLectureRequest;
import com.plzgraduate.myongjigraduatebe.takenlecture.api.dto.request.GenerateCustomizedTakenLectureRequest;

import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
Expand All @@ -14,5 +15,11 @@
public interface UpdateTakenLectureApiPresentation {

@Parameter(name = "userId", description = "로그인한 유저의 PK값")
void updateTakenLectures(@LoginUser Long userId, @Valid @RequestBody UpdateTakenLectureRequest updateTakenLectureRequest);
void generateCustomizedTakenLecture(@LoginUser Long userId,
@Valid @RequestBody GenerateCustomizedTakenLectureRequest generateCustomizedTakenLectureRequest);

@Parameter(name = "userId", description = "로그인한 유저의 PK값")
@Parameter(name = "takenLectureId", description = "삭제할 수강 과목 ID")
void deleteCustomizedTakenLecture(@LoginUser Long userId,
@Valid @PathVariable Long takenLectureId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,38 @@

import javax.validation.Valid;

import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;

import com.plzgraduate.myongjigraduatebe.core.meta.LoginUser;
import com.plzgraduate.myongjigraduatebe.core.meta.WebAdapter;
import com.plzgraduate.myongjigraduatebe.takenlecture.api.dto.request.UpdateTakenLectureRequest;
import com.plzgraduate.myongjigraduatebe.takenlecture.application.usecase.update.UpdateTakenLectureUseCase;
import com.plzgraduate.myongjigraduatebe.takenlecture.api.dto.request.GenerateCustomizedTakenLectureRequest;
import com.plzgraduate.myongjigraduatebe.takenlecture.application.usecase.delete.DeleteTakenLectureUseCase;
import com.plzgraduate.myongjigraduatebe.takenlecture.application.usecase.save.GenerateCustomizedTakenLectureUseCase;

import lombok.RequiredArgsConstructor;

@WebAdapter
@RequestMapping("/api/v1/taken-lectures")
@RequiredArgsConstructor
public class UpdateTakenLectureController implements UpdateTakenLectureApiPresentation {
private final UpdateTakenLectureUseCase updateTakenLectureUseCase;

@PostMapping("/update")
public void updateTakenLectures(@LoginUser Long userId,
@Valid @RequestBody UpdateTakenLectureRequest updateTakenLectureRequest) {
updateTakenLectureUseCase.modifyTakenLecture(userId, updateTakenLectureRequest.getDeletedTakenLectures(),
updateTakenLectureRequest.getAddedTakenLectures());
private final GenerateCustomizedTakenLectureUseCase generateCustomizedTakenLectureUseCase;
private final DeleteTakenLectureUseCase deleteTakenLectureUseCase;

@PostMapping()
public void generateCustomizedTakenLecture(@LoginUser Long userId,
@Valid @RequestBody GenerateCustomizedTakenLectureRequest generateCustomizedTakenLectureRequest) {
generateCustomizedTakenLectureUseCase.generateCustomizedTakenLecture(userId,
generateCustomizedTakenLectureRequest.getLectureId());
}

@DeleteMapping("{takenLectureId}")
public void deleteCustomizedTakenLecture(@LoginUser Long userId,
@Valid @PathVariable Long takenLectureId) {
deleteTakenLectureUseCase.deleteTakenLecture(userId, takenLectureId);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.plzgraduate.myongjigraduatebe.takenlecture.api.dto.request;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@NoArgsConstructor
public class GenerateCustomizedTakenLectureRequest {

@Schema(name = "lectureId", example = "103")
private Long lectureId;

@Builder
private GenerateCustomizedTakenLectureRequest(Long lectureId) {
this.lectureId = lectureId;
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,5 @@
public interface DeleteTakenLecturePort {
void deleteAllTakenLecturesByUser(User user);

void deleteTakenLecturesByIds(List<Long> deleteIds);
void deleteTakenLectureById(Long deleteId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,6 @@
public interface SaveTakenLecturePort {

void saveTakenLectures(List<TakenLecture> takenLectures);

void saveTakenLecture(TakenLecture takenLecture);
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.plzgraduate.myongjigraduatebe.takenlecture.application.service.delete;

import org.springframework.transaction.annotation.Transactional;

import com.plzgraduate.myongjigraduatebe.completedcredit.application.usecase.GenerateOrModifyCompletedCreditUseCase;
import com.plzgraduate.myongjigraduatebe.core.meta.UseCase;
import com.plzgraduate.myongjigraduatebe.takenlecture.application.usecase.delete.DeleteTakenLectureUseCase;
import com.plzgraduate.myongjigraduatebe.takenlecture.application.port.DeleteTakenLecturePort;
import com.plzgraduate.myongjigraduatebe.user.application.usecase.find.FindUserUseCase;
import com.plzgraduate.myongjigraduatebe.user.domain.model.User;

import lombok.RequiredArgsConstructor;

@UseCase
@Transactional
@RequiredArgsConstructor
class DeleteTakenLectureService implements DeleteTakenLectureUseCase {

private final FindUserUseCase findUserUseCase;
private final DeleteTakenLecturePort deleteTakenLecturePort;
private final GenerateOrModifyCompletedCreditUseCase generateOrModifyCompletedCreditUseCase;

@Override
public void deleteAllTakenLecturesByUser(User user) {
deleteTakenLecturePort.deleteAllTakenLecturesByUser(user);
}

@Override
public void deleteTakenLecture(Long userId, Long deletedTakenLectureId) {
User user = findUserUseCase.findUserById(userId);
deleteTakenLecturePort.deleteTakenLectureById(deletedTakenLectureId);
generateOrModifyCompletedCreditUseCase.generateOrModifyCompletedCredit(user);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.plzgraduate.myongjigraduatebe.takenlecture.application.service.save;

import org.springframework.transaction.annotation.Transactional;

import com.plzgraduate.myongjigraduatebe.completedcredit.application.usecase.GenerateOrModifyCompletedCreditUseCase;
import com.plzgraduate.myongjigraduatebe.core.meta.UseCase;
import com.plzgraduate.myongjigraduatebe.lecture.application.port.FindLecturePort;
import com.plzgraduate.myongjigraduatebe.lecture.domain.model.Lecture;
import com.plzgraduate.myongjigraduatebe.takenlecture.application.port.SaveTakenLecturePort;
import com.plzgraduate.myongjigraduatebe.takenlecture.application.usecase.save.GenerateCustomizedTakenLectureUseCase;
import com.plzgraduate.myongjigraduatebe.takenlecture.domain.model.TakenLecture;
import com.plzgraduate.myongjigraduatebe.user.application.usecase.find.FindUserUseCase;
import com.plzgraduate.myongjigraduatebe.user.domain.model.User;

import lombok.RequiredArgsConstructor;

@UseCase
@Transactional
@RequiredArgsConstructor
public class GenerateCustomizedTakenLectureService implements GenerateCustomizedTakenLectureUseCase {

private final FindUserUseCase findUserUseCase;
private final FindLecturePort findLecturePort;
private final SaveTakenLecturePort saveTakenLecturePort;
private final GenerateOrModifyCompletedCreditUseCase generateOrModifyCompletedCreditUseCase;

@Override
public void generateCustomizedTakenLecture(final Long userId, final Long addedTakenLectureId) {
User user = findUserUseCase.findUserById(userId);
Lecture lecture = findLecturePort.findLectureById(addedTakenLectureId);
addCustomTakenLecture(user, lecture);
generateOrModifyCompletedCreditUseCase.generateOrModifyCompletedCredit(user);
}

private void addCustomTakenLecture(User user, Lecture addedLecture) {
TakenLecture addedTakenLecture = TakenLecture.custom(user, addedLecture);
saveTakenLecturePort.saveTakenLecture(addedTakenLecture);
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

import com.plzgraduate.myongjigraduatebe.user.domain.model.User;

public interface DeleteTakenLectureByUserUseCase {
public interface DeleteTakenLectureUseCase {
void deleteAllTakenLecturesByUser(User user);

void deleteTakenLecture(Long userId, Long deletedTakenLectureId);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.plzgraduate.myongjigraduatebe.takenlecture.application.usecase.save;


public interface GenerateCustomizedTakenLectureUseCase {
void generateCustomizedTakenLecture(Long userId, Long addedTakenLectureId);
}

This file was deleted.

Loading
Loading