Node로 구현한 Todo API입니다.
- Node.js v16, MySQL 5.6, TypeScript 를 사용해야 한다.
- Express.js MVC 구조를 설계해야 한다.
- NestJs 마이그레이션을 포함한다.
- GraphQL 마이그레이션을 포함한다.
- 아래 API 스펙을 만족하는 REST API 설계와 데이터베이스 설계가 되어야 한다.
- 서버와 데이터베이스 타임존이 UTC 로 가정하되, 조회는 KST 기준으로 해야 한다.
- API 스펙 내에서 발생할 수 있는 예외 케이스들은 적절한 응답과 함께 별도의 형식으로 처리되어야 한다.
- 모든 응답은 JSON 으로 반환해야 한다.
- ORM 은 어떤것을 선택해도 상관없으나, TypeORM 과 MikroORM 을 권장한다.
- 카카오스타일 TypeScript 스타일 가이드를 준수해서 작성해야 한다.
- 사용자는 할 일을 생성할 수 있다.
- 할 일이 생성될 때 마다 생성되는 필드가 있어야 한다. (date_created)
- 할 일이 수정될 때 마다 갱신되는 필드가 있어야 한다. (date_updated)
- 할 일의 제목(title) 을 설정할 수 있어야 하며, 반드시 존재해야 한다.
- 할 일의 상태(status) 를 설정할 수 있어야 하며, 상태는
TODO
,IN_PROGRESS
,DONE
으로 구성되어야 한다.- 기본 값은
TODO
이다.
- 기본 값은
- 할 일의 우선순위(priority) 를 설정할 수 있어야 하며, 우선순위는 Number 타입이어야 한다.
- 할 일의 마감일 (deadline) 을 설정할 수 있어야 하며, 설정하지 않을 수도 있다.
- 사용자는 할 일 목록을 조회할 수 있다.
- 할 일의 제목(title) 로 목록을 조회할 수 있다.
- 제목의 일부로도 검색할 수 있어야 한다.
- 할 일의 상태(status)로 목록을 조회할 수 있다.
- 할 일의 우선순위(priority) 로 정렬 순서를 바꿀 수 있다.
- 할 일의 마감일(deadline)로 목록을 조회할 수 있다.
- 조회를 원하는 시작일과 종료일을
YYYY-MM-DD
형식으로 받아야 한다.
- 조회를 원하는 시작일과 종료일을
- 할 일의 완료일(date_completed) 으로 목록을 조회할 수 있다.
- 조회를 원하는 시작일과 종료일을
YYYY-MM-DD
형식으로 받아야 한다.
- 조회를 원하는 시작일과 종료일을
- 목록 조회는 페이지네이션이 되어야 한다.
- 목록 조회는 우선순위 오름차순으로 기본 정렬이 되어 있어야 한다.
- 할 일의 제목(title) 로 목록을 조회할 수 있다.
- 사용자는 할 일 상세 정보를 조회할 수 있다.
- 사용자는 할 일을 변경할 수 있다.
- 할 일의 상태가
DONE
으로 변경될 때 완료일(date_completed) 이 변경되어야 한다. - 완료된 할 일은 수정할 수 없어야 한다.
- 할 일의 상태가
- 사용자는 할 일을 삭제할 수 있다.
- 완료된 할 일은 삭제할 수 없다.
- 할 일 목록 조회
- 요청 예시
GET /todos
- 응답 예시
[ { "title": "할 일", "status": "TODO", "priority": 1, "deadline": "2022-06-28T14:59:59.999Z", "date_create": "2022-06-24T14:59:59.999Z", "date_updated": "2022-06-24T14:59:59.999Z" } ]
- 요청 예시