2024. 9. 6. 18:03ㆍ공부/DGTP TIL
9월 2일자로 dgtp 파이널 프로젝트가 시작되었다.
카풀 웹 서비스를 생각하고 있다.
<3 layer architecture 적용>
[repository]
prismaORM을 사용하여 db에 쿼리를 보내 데이터를 CRUD가 이루어진다.
findAllUsers는 유저 전체를, findUserById는 Id를 기준으로 findUnique, findUserByEmail은 Email을 기준으로 데이터를 찾아 반환한다.
[service]
controller에서 보낸 req를 repository로 보내고, 반환된 데이터에 비즈니스 로직을 실행한다.
현재 매우 간단한 로직들만 존재하기 때문에, req값에서 올바른 값이 입력되었는지 확인하고 repository에서 반환된 값들을 controller로 반환한다.
[controller]
controller에서는 사용자의 입력을 받아 service로 값을 보내고, repository와 service 레이어를 거친 값들을 최종적으로 반환받는 계층이다.
<authmiddleware를 통한 인증/인가>
로그인 로직을 실행한 후, user는 header의 authorization에 jwt토큰을 받게 된다.
authmiddleware는 이를 검증하는 미들웨어로 반환된 토큰에 저장된 정보와 req.user의 email을 비교하여 접근 권한을 준다. 이후 req.user에 유저 정보를 저장하게 해뒀다.
<users router>
user db와 관련된 로직들이 작동하고 있다.
크게 어려운 로직이나 특이한 db 구조는 없다.
<posts router>
repository에서 다른 테이블과 connet(아마 join인듯 하다)하여 값을 저장하거나 하는 등의 프로세스가 존재한다. 또한, 보이고 싶은 정보를 직접 정하여 요청하고 있다.
<reserve router>
마찬가지로 원하는 정보에 대한 접근, join 등이 이루어지고 있다.
<예정>
reservation 테이블에 state flag를 넣어 해당 flag가 true가 되면 user의 point가 빠져나가는 등의 작업이 이루어질 수 있도록 할 생각이다.
현재 백과 프론트가 독립되어 있으나, 다음주 월요일부터 프론트에서 요청을 보내면 백에서 응답을 보내는게 가능하도록 만들 예정이다.
'공부 > DGTP TIL' 카테고리의 다른 글
[4주차 개발일지 1] Socket.io를 사용한 실시간 채팅 구현 (240924) (0) | 2024.09.24 |
---|---|
[2주차 개발일지 1] React와 express 연결 (240910) (0) | 2024.09.10 |
[Java] 1. Java, Js와의 비교 [240827] (0) | 2024.08.27 |
[Day 30, 31, 32] 감정 일기 (20240805~0807) (0) | 2024.08.07 |
[Day25] 칸반보드 - Drag & Drop 방식과 기존 코드 비교 (240726) (0) | 2024.07.26 |