-
Notifications
You must be signed in to change notification settings - Fork 7
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 ts rest 적용 #599
The head ref may contain hidden characters: "598-\uD788\uC2A4\uD1A0\uB9AC-api-ts-rest-\uC801\uC6A9"
Conversation
page와 limit가 string으로 들어가요! help... |
histories 라우터에 추가
histories controller 추가
impl 추가
histories 전용 type 파일 추가
histories service 추가
권한 없음 에러 추가
권한 없음 에러 오브젝트 추가
meta 스키마 추가
eslint comma 추가
contract에 histories 추가
contract에 histories 명세 추가
contract에 histories에서 사용하는 GET 메서드들의 query string 스키마 추가
contract에 공용으로 사용할 권한 없음 에러 스키마 추가
- 전체 대출 기록 조회하는 controller 추가 - 나의 대출 기록 조회하는 controller 추가
- 전체 대출 기록 조회하는 service 추가 - 나의 대출 기록 조회하는 service 추가
histories 조회 시의 query string schema 구조 변경
VHistories 가져올 때 중괄호 이용
histories를 조회하여 200 스테이터스 일 때 반환하는 스키마 추가
callsign으로도 검색할 수 있도록 조건 추가 및 query undefined 체크 추가
meta 스키마 공용 스키마로 추가
id 타입을 string -> number로 변경
z.number()...를 positiveInt로 변경
서비스 함수 반환 타입 오브젝트 형식으로 변경
getMyHistories 반환값 데이터베이스 조회 결과로 변경
서비스 함수들 반환 타입 변경
서비스 파일과 서비스 구현 파일, 컨트롤러 파일과 컨트롤러 구현 파일 분리
contracts/src/histories/schema.ts
Outdated
createdAt: z.string(), | ||
returnedAt: z.string(), | ||
updatedAt: z.date(), |
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.
VHistories
의 createdAt
필드의 타입은 Date
이나, createdAt
의 타입이 string
이어서 타입 오류가 나고 있습니다. 하지만 typeorm 쿼리에서 날짜를 문자열 형식으로 반환하기 때문에, 이와 같은 경우에는 coerce
를 사용하는 것을 추천드립니다.
return match(result) | ||
.with(P.instanceOf(UnauthorizedError), () => unauthorized) | ||
.otherwise(() => ({ | ||
status: 200, | ||
body: result, | ||
} as const)); |
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.
반환값이 UnauthorizedError | { items: [...], meta: { ... } }
타입이기 때문에, UnauthorizedError
를 예상하지 못한 ts-rest에서 오류를 내고 있습니다. 다음을 참고하시면 타입을 좁힐 때 도움이 될 것 같습니다.
https://github.com/gvergnaud/ts-pattern#withpattern-handler
https://github.com/gvergnaud/ts-pattern#exhaustive-otherwise-and-run
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.
LGTM! 시간을 끌어 죄송합니다...
마지막에 #663 을 위한 타입 수정도 조금 추가했습니다
개요
히스토리 API에 ts-rest 적용하여 리팩토링
작업 사항
비고
스크린샷 (optional)