-
Notifications
You must be signed in to change notification settings - Fork 3
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
[Feat] 태스크 위치 이동 API 구현 #53
Conversation
❓ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LexoRank 까지 빠르게 도입하셨군요!
return new UpdateTaskResponse(task); | ||
} | ||
|
||
async move(id: number, moveTaskRequest: MoveTaskRequest) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🟡
update
와 move
사이에는 많은 공통 로직이 있어보입니다.
update
를 더 확장성을 고려해서 만들고 그 로직을 활용하는 방향으로 move
를 구현하는 것이 좋을 것 같아요!
그동안 마스터님들의 말슴은
보통 세번 반복되면 리팩토링한다는 것이긴 합니다.
한번 더 겹치면 고려해주세용~
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
update
랑 move
는 별도의 스토리로 구성한 만큼, 서로 의존성을 갖지 않게 하고 싶어서 update를 move에서 활용하는 설계는 고려하지 않았던 것 같습니다.
대신에 ,, 사실 같은 코드가 반복되다 보니, 아래 2가지 부분을 별도 메서드로 분리할까 고민했었습니다.
아래 코드를 분리하면 update, move외에 다른 메서드에서도 재사용할 수 있을 것 같아서용 ,,
작성할 때는 분리할 정도의 코드는 아니라고 생각했었는데, 말씀 듣고 다시 한번 생각해보니 다른 생성, 조회, 삭제 메서드에서도 활용될 수 있는 재사용성 높은 코드라서 분리하는게 여러모로 좋아보이네요 ...!
const task = await this.taskRepository.findOneBy({ id });
if (!task) {
throw new NotFoundException('Task not found');
}
const section = await this.sectionRepository.findOneBy({ id: updateTaskRequest.sectionId });
if (!section) {
throw new NotFoundException('Section not found');
}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
오 그렇네요 같은 코드가 보이네
나중에 왜 이랬는지 경험 공유해주세요 헤헤
시간 나면 렉소랭크 직접 구현하죠
const beforePostion = LexoRank.parse(moveTaskRequest.beforePosition); | ||
const afterPosition = LexoRank.parse(moveTaskRequest.afterPosition); | ||
task.position = beforePostion.between(afterPosition).toString(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lexo rank 사용법이 굉장히 간단하고 좋네요.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
맞습니다 ㅋㅋㅋ
비슷한 기능의 메서드가 많아서 공부할 땐 좀 헷갈렸는데, 사용법 자체는 굉장히 간단하더라구요 !
위에 주엽님 코멘트에 답글로 남겨놨습니당 힛
조씁니다 ! 재밌겠다 ... |
진짜 재밌는 거 맞죠? ㅎㅎ |
관련 이슈 번호
close #18
작업 내용
고민과 학습내용
LexoRank는 라이브러리를 사용하여 구현했습니다.
라이브러리의 기능에 대해서는 아래 자료를 참고했습니다.
Reference
https://www.npmjs.com/package/lexorank
스크린샷