[개발일지] 개발일지 (20240906)

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가 빠져나가는 등의 작업이 이루어질 수 있도록 할 생각이다.
현재 백과 프론트가 독립되어 있으나, 다음주 월요일부터 프론트에서 요청을 보내면 백에서 응답을 보내는게 가능하도록 만들 예정이다.