728x90
반응형
투두를 완료했을 때 다르게 표시하기 위해서 투두의 상태를 추가하였습니다.
[TodoStatus.java]
package hooyn.todo.domain;
public enum TodoStatus {
NOT_COMPLETE, ING, COMPLETE
}
[Todo.java]
//필드 추가
//데이터베이스에 저장될 때 String으로 저장되게 하기 위해서 EnumType.String으로 설정하였습니다.
@Enumerated(EnumType.STRING)
private TodoStatus status;
//생성 메서드에서 status NOT_COMPLETE 상태로 설정하였습니다.
@Builder
private Todo(String title, String content, Deadline deadline){
this.title = title;
this.content = content;
this.deadline = deadline;
this.create_time = LocalDateTime.now();
this.status = TodoStatus.NOT_COMPLETE;
}
[TodoService.java]
//투두 상태 변경 (완료 & 완료취소)
Long updateTodoStatus(Long todo_id);
[TodoServiceImpl.java]
/**
* 투두 상태 변경 (완료 & 완료취소)
*/
@Override
@Transactional
public Long updateTodoStatus(Long todo_id) {
Todo todo = todoRepository.findById(todo_id);
TodoStatus status = todo.getStatus();
if(status.equals(TodoStatus.NOT_COMPLETE)){
todo.changeTodoStatus(TodoStatus.COMPLETE);
} else if(status.equals(TodoStatus.COMPLETE)){
todo.changeTodoStatus(TodoStatus.NOT_COMPLETE);
}
return todo.getId();
}
[TodoController.java]
/**
* 투두 상태 변경
*/
@PutMapping("/todo/status")
public Response updateTodoStatus(@RequestBody UpdateTodoStatusRequest request){
Member member = memberService.findUserByUUID(request.getUuid());
if(member!=null){
Long todo_id = todoService.updateTodoStatus(request.getTodo_id());
log.info("투두 상태 변경 Success Code:200 " + now.getDate());
return new Response(true, HttpStatus.OK.value(), todo_id, "투두 상태가 변경되었습니다.");
} else {
// 301 에러
log.error("아이디 없음 Error Code:301 " + now.getDate());
return new Response(false, HttpStatus.MOVED_PERMANENTLY.value(), null, "등록되지 않은 회원입니다.");
}
}
키워드에 따른 투두 조회 시 키워드 포함 범위를 제목과 내용 모두로 변경하였습니다.
[TodoRepositoryImpl.java]
/**
* content가 포함된 투두 조회
*/
@Override
public List<Todo> findByContent(String uuid, String content, Integer page) {
return queryFactory
.selectFrom(todo)
.where(
(todo.content.like("%"+content+"%").or(todo.title.like("%"+content+"%")))
.and(todo.member.uuid.eq(UUID.fromString(uuid)))
)
.orderBy(todo.create_time.desc())
.offset(0+((page-1)*10))
.limit(10)
.fetch();
}
728x90
반응형
'Project > Todo' 카테고리의 다른 글
[Git] update gitignore (2) | 2022.07.24 |
---|---|
[AWS EC2 ubuntu] Todo 프로젝트 .jar 배포 (1) | 2022.07.21 |
[Spring Boot] Todo 서비스 구현 (2) (0) | 2022.07.18 |
[Spring Boot] Todo 서비스 구현 (1) (0) | 2022.07.17 |
[Refactoring] 관심사 분리를 통한 DIP 지키기 (0) | 2022.07.15 |