-
Notifications
You must be signed in to change notification settings - Fork 2
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
1186 feat storage request: schema #1208
base: dev
Are you sure you want to change the base?
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.
👍 👍 👍 백엔드만 쭉 살펴봤고, 고민하면 좋은 점들 위주로 쭉 메모해 두었어요.
오랜기간 클럽스에서 코딩했다고 해도 믿을 정도로 코딩하는 패턴들이 비슷하게 잘 적혀있어서 읽기 편했습니다!
*/ | ||
|
||
const url = (applicationId: string) => | ||
`/student/storage/applications/application/${applicationId}`; |
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 url = (applicationId: string) => | ||
`/executive/storage/applications/application/${applicationId}`; | ||
const method = "PUT"; |
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.
구현하신 내용들은 put 보다는 patch가 적절한 메소드 표현일 것 같습니다. 아래 참고될 만할 글 남겨 두어요!
https://papababo.tistory.com/entry/HTTP-METHOD-PUT-vs-PATCH-%EC%B0%A8%EC%9D%B4%EC%A0%90
*/ | ||
|
||
const url = (contractId: string) => | ||
`/student/storage/contracts/contract/${contractId}`; |
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.
❓ 이 API를 활용하려면 contractId를 알고 있는 상태여야 하는데, 이를 확인할 수 있는 방법이 있을까요?
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.
❓ 이 index.ts 파일이 존재하는 이유는 무엇일까요? 처음엔 이 인덱스 파일을 구성하다가 요즘은 구성을 안해도 된다는 입장인데, 어디에 활용할 수 있는지 알아보면 좋을거 같아요! 바쁘면 스킵해도 좋습니다
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.
💬 스키마는 일전에 확인했으니 넘어갈게요!
|
||
@Student() | ||
@Post("/student/storage/applications/application") | ||
@UsePipes(new ZodPipe(apiSto001)) |
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.
❓ 여기서 zodpipe의 역할이 무엇이며, 어떻게 동작할까요? nest의 pipe를 이해하는데 도움이 됩니다! 추가로 모노레포를 택하며 인터페이스 패키지를 만든것이 백엔드에서 어떻게 활용되는지 알 수 있을 거에요
}; | ||
} | ||
|
||
async createApplication(body: ApiSto001RequestBody) { |
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.
💬 레포지토리, 서비스 등 프로바이더의 메소드들은 재사용성을 높이기 위해 주석을 잘 달아두면 좋아요. 만약 특정 엔드포인트를 위한 전용 메소드를 구성하게 된다면 해당 컨트롤러/서비스의 메소드 이름을 그대로 레포지토리에서도 적용하여 다른 사람이 이 코드를 보더라도 전용 메소드임을 확실히 알고 관심을 쏟지 않게 만들자! 라는 컨벤션이 있어요
return nonStandardItems; | ||
} | ||
|
||
async updateApplication( |
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.
❓ updateApplication은 여러 유저(집행부원과 신청자)가 접근 가능한 메소드로 보입니다. 이때 동시성에 문제가 발생한지는 않을까죠? 만약 두 유저가 거의 동시에 patch를 요청해서 updateApplication에 동시에 진입한다면 문제가 발생하지는 않을까요? 이를 어떻게 해결할까요? 굉장히 중요한 주제이므로 고민해보면 좋겠어요 :)
* @description 학생이 해당 동아리의 대표자 또는 대의원이 아닌 경우 403 exception을 throw 합니다. | ||
* activity.service.ts의 동명의 함수를 참조하였습니다. | ||
*/ | ||
private async checkIsStudentDelegate(param: { |
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.
👍 조언대로 잘 구성한거 같아서 좋습니다!
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.
공용 메소드에는 주석까지 잘 잘아준데 너무 좋아요
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.
💬 이를 테스트해보고 싶다면 app.module에 넣어야 합니다!
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.
프론트는 초기 구조 세팅 정도만 해둔 것 같아서 실행해보지는 않았고, 코드 위주로만 슥 봤습니닥
어차피 이것저것 추가되면서 나중에 QA 쫙 함 돌아야 해서..! 요 PR은 minor한 코멘트 위주로 남겻어요
(나중에 훅폼까지 붙여주겠지? ㅎㅎㅎ)
setErrorStatus={setUserNameError} | ||
/> | ||
<PhoneInput | ||
placeholder="신청자 전화번호" |
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.
minor하지만 전화번호 같은 건 입력 형식을 알 수 있게끔 placeholder를 XXX-XXXX-XXXX 같은 걸로 하면 좋아요!
{ | ||
name: "창고 사용", | ||
path: "/storage", | ||
authority: ["all"], |
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.
이건 나중에 고쳐야 할지도? 만약 대표자/대의원만 사용 가능한 서비스라면!
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.
요것두 minor하지만..
딱 정해져 있는 구분 기준은 없지만, 초기 의도는
page = 여러 개의 frame/component의 조합
frame = 여러 개의 component의 조합
이런 느낌이었어서,
이런 식으로 page = 하나의 frame인 경우는 없애려고 하고 있어요! (사실상 무의미한 느낌이라)
옛날에 되어 있던 코드들은 이런 형태가 쫌 남아있어서 따라한 것일 것 같긴 한데, 좀 최근에 작성된 페이지들 보면 뭔 느낌인지 알 수 있을듯?? (ex. 동아리 / 회원 등록 쪽)
요약 *
Storage feature api, db 스키마, api Sto001~012 작성했어요
스크린샷
이후 Task *
작동 검증을 해야할듯?