Skip to content
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

Merged
merged 35 commits into from
Aug 13, 2023

Conversation

nyj001012
Copy link
Contributor

@nyj001012 nyj001012 commented Jul 29, 2023

개요

히스토리 API에 ts-rest 적용하여 리팩토링

작업 사항

  • router
  • controller
  • service
  • error

비고

  1. Impl.ts 파일 분리 #600
  2. book Id 안 쓰는거 같은데 없애면 안되나
  3. api 나누기 (유저 권한에 따라 등) - who로 구별하기 번거로움

스크린샷 (optional)

@nyj001012 nyj001012 linked an issue Jul 29, 2023 that may be closed by this pull request
@nyj001012 nyj001012 temporarily deployed to development July 29, 2023 08:29 — with GitHub Actions Inactive
@scarf005 scarf005 self-requested a review July 29, 2023 08:48
@scarf005
Copy link
Member

@scarf005 scarf005 self-assigned this Jul 31, 2023
@nyj001012 nyj001012 linked an issue Aug 1, 2023 that may be closed by this pull request
@nyj001012
Copy link
Contributor Author

@scarf005

{
  "issues": [
    {
      "code": "invalid_type",
      "expected": "number",
      "received": "string",
      "path": [
        "page"
      ],
      "message": "Expected number, received string"
    },
    {
      "code": "invalid_type",
      "expected": "number",
      "received": "string",
      "path": [
        "limit"
      ],
      "message": "Expected number, received string"
    }
  ],
  "name": "ZodError"
}

page와 limit가 string으로 들어가요! help...

histories 라우터에 추가
histories controller 추가
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 반환값 데이터베이스 조회 결과로 변경
서비스 함수들 반환 타입 변경
서비스 파일과 서비스 구현 파일, 컨트롤러 파일과 컨트롤러 구현 파일 분리
Comment on lines 23 to 25
createdAt: z.string(),
returnedAt: z.string(),
updatedAt: z.date(),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

VHistoriescreatedAt 필드의 타입은 Date이나, createdAt의 타입이 string이어서 타입 오류가 나고 있습니다. 하지만 typeorm 쿼리에서 날짜를 문자열 형식으로 반환하기 때문에, 이와 같은 경우에는 coerce를 사용하는 것을 추천드립니다.

colinhacks/zod#879

Comment on lines 44 to 49
return match(result)
.with(P.instanceOf(UnauthorizedError), () => unauthorized)
.otherwise(() => ({
status: 200,
body: result,
} as const));
Copy link
Member

@scarf005 scarf005 Aug 7, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image

반환값이 UnauthorizedError | { items: [...], meta: { ... } } 타입이기 때문에, UnauthorizedError를 예상하지 못한 ts-rest에서 오류를 내고 있습니다. 다음을 참고하시면 타입을 좁힐 때 도움이 될 것 같습니다.

https://github.com/gvergnaud/ts-pattern#withpattern-handler
https://github.com/gvergnaud/ts-pattern#exhaustive-otherwise-and-run

@scarf005 scarf005 self-requested a review August 13, 2023 03:20
@scarf005 scarf005 marked this pull request as ready for review August 13, 2023 03:49
@scarf005 scarf005 temporarily deployed to development August 13, 2023 04:03 — with GitHub Actions Inactive
Copy link
Member

@scarf005 scarf005 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

image
image

LGTM! 시간을 끌어 죄송합니다...
마지막에 #663 을 위한 타입 수정도 조금 추가했습니다

@scarf005 scarf005 merged commit 27b3d11 into develop Aug 13, 2023
@scarf005 scarf005 deleted the 598-히스토리-api-ts-rest-적용 branch August 13, 2023 04:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

관리자 및 사용자용 API 경로 정리 ☂️ v2 리팩토링 - histories API
3 participants