728x90
Task 생성
api 컨트롤 단에서 Task 생성하는 로직을 구현한다
userId 의 정보를 가져온다음 유효검증 후 생성 한다.
1)TaskCreateReq 를 구현
2)TaskService 구현 및 create 메소드 생성
-Schedule.task 만든거 확인
3)AuthUser 클래스를 생성
-식별자id 타입이 Long이라 타입변환이 중복되니까 클래스로 만든다.
4)UserService 에서 getOrthrowById 메소드를 구현
- JpaRepo 에서 findById 를 구현하여 id 찾는 로직은 있지만 예외처리가 없어 , 혼합사용
api 컨트롤 단에서 Task 생성하는 로직을 구현한다.
@RequiredArgsConstructor
@RequestMapping("/api/schedule")
@RestController
public class ScheduleController {
private final TaskService taskService;
@PostMapping("/tasks") //할일
public ResponseEntity<Void> createTask(@RequestBody TaskCreateReq taskCreateReq,
HttpSession session){
//유저의 정보를 갖고온다
final Long userId = (Long) session.getAttribute(LOGIN_SESSION_KEY);
//유저 유효검증
if(userId==null){
throw new RuntimeException("bad request. no session");
}
taskService.create(taskCreateReq, AuthUser.of(userId));
return ResponseEntity.ok().build();
}
}
1)TaskCreateReq 를 구현
@Data
public class TaskCreateReq {
private final String title; // 제목
private final String description; //내용
private final LocalDateTime taskAt; //일정
}
2)TaskService 구현 및 create 메소드 생성
@Service
@RequiredArgsConstructor
public class TaskService {
private final UserService userService;
private final ScheduleRepository scheduleRepository;
public void create(TaskCreateReq req, AuthUser authUser) {
final Schedule taskSchedule = Schedule.task(
req.getTitle(),
req.getDescription(),
req.getTaskAt(),
userService.getOrThrowById(authUser.getId()));
scheduleRepository.save(taskSchedule);
}
}
3)AuthUser 클래스를 생성
@Getter
public class AuthUser {
private final Long id;
private AuthUser(Long id) {
this.id = id;
}
public static AuthUser of(Long id) {
return new AuthUser(id);
}
}
4)UserService 에서 getOrthrowById 메소드를 구현
public User getOrThrowById(Long id) {
return userRepository.findById(id).orElseThrow(() -> new RuntimeException("no user."));
}
728x90
'calendar' 카테고리의 다른 글
event 생성(시간겹치는 로직, 이메일발송) (0) | 2023.03.18 |
---|---|
ArgumentResolver를 이용한 권한처리 (0) | 2023.03.18 |
Bcrypt 암호화적용 (0) | 2023.03.17 |
calendar API설계 (0) | 2023.03.17 |
도메인설계 및 중복제거 (코드최적화,BaseEntity,Auditing 적용) (0) | 2023.03.17 |