3-Layered Architecture
컨트롤러 (Controller)
- 클라이언트의 요청(Request)을 받는다.
- 요청에 대한 처리는 서비스에게 위임한다.
- 클라이언트에게 응답(Response)을 반환한다.
서비스 (Service)
- 사용자의 요구사항을 처리하는 실세 중에 실세!!!
- DB 정보가 필요할 때는 Repository에게 요청한다.
저장소 (Repository)
- 데이터베이스 관리 (연결, 해제, 자원 관리) 역할을 담당한다.
- 데이터베이스의 CURD 작업을 처리한다.
Client/Router ↔️ Controller ↔️ Service ↔️ Repository ↔️ Database
- user에서 사용한 함수를 controller에서 정의해준다.
- controller에서 사용한 함수를 service에서 정의해준다.
- service에서 사용한 함수를 repository에서 정의해준다.
- user에서 필요한 경우 controller의 함수를 사용할 수 있다.
- controller에서 필요한 경우 service의 함수를 사용할 수 있다.
- repository에서 필요한 경우 repository의 함수를 사용할 수 있다.
[user]
- users.router.js에서는 users.router.js에서 호출한 함수와,
users.controller.js에서 정의한 함수 중 users.router.js에서 호출한 함수를 사용할 수 있다. - users.controller.js에서는 users.controller.js에서 호출한 함수와,
users.service.js에서 정의한 함수 중 users.controller.js에서 호출한 함수를 사용할 수 있다. - users.service.js에서는 users.service.js에서 호출한 함수와,
users.repository.js에서 정의한 함수 중 users.service.js에서 호출한 함수를 사용할 수 있다. - users.repository.js에서는 users.repository.js에서 호출한 함수와,
prisma에서 정의한 모델이 갖는 함수 중 users.repository.js에서 호출한 함수를 사용할 수 있다.
users.router.js | users.controller.js | user.service.js | user.repository.js | prisma |
usersController.signUp | signUp usersService.createUser |
createUser usersRepository.createUser |
findByEmail prisma.users.findFirst |
prisma.users.findFirst |
usersController.signIn | signIn usersService.signInUser |
signInUser usersRepository.findByEmail |
createUser prisma.$transaction tx.users.create |
$transaction tx.users.create tx.points.create |
usersController.signOut | signOut usersService.signOutUser |
signOutUser usersRepository.updateToken |
updateToken prisma.users.update |
users.update |
usersController.myInfo | myInfo usersService.getUserById |
getUserByID usersRepository.findByIdWithPoint |
findToken prisma.users.findFirst |
users.findFirst |
findById prisma.users.findFirst |
users.findFirst | |||
findByIdWithPoint prisma.users.findFirst |
users.findFirst |
[restaurant/review]
restaurant.router.js | restaurant.controller.js | restaurant.service.js | restaurant.repository.js | prisma |
restaurantController.setDeliveryStatusDone | updateDeliveryStatus restaurant.service.updateOrderStatus |
updateDeliveryStatus restaurant.service.updateStatus |
updateStatus ~~~ |
|
restaurantController.orderMenu | orderMenu |
orderMenu 보류 |
보류 | |
restaurantController.createReview | createReview restaurant.service.createReview |
createReview restaurant.service.newReview |
newReview ~~~ |
|
restaurantController.getReviewList | getReviewList |
보류 | 보류 | |
restaurantController.getReviewDetail | getReviewDetail restaurant.service.getReviewDetail |
getReviewDetail restaurant.service.findOneReview |
findOneReview restaurant.repository.함수명 |
|
restaurantController.updateReview | updateReview restaurant.service.updateReview |
updateReview restaurant.service.updateReview |
updateReview restaurant.repository.함수명 |
|
restaurantController.deleteReview | deleteReview restaurant.service.deleteReview |
deleteReview restaurant.service.deleteReview |
deleteReview restaurant.repository.함수명 |
——
ORM에 있는 테이블을 사용하는 것 ~
DB 테이블이라고 보는 것 ~
DB 테이블 ~ orderMenu를 꺼내오기 위한 메서드가 있어야 한다
Prisma 내장 함수 .. findFirst .. $transaction .. create ..
Low Query
// 생성자 작성 필요
// 테스트 하기 위해 이런 식으로 작성 ~
// 의존성 주입을 위함 ~
constructor(restaurantRepository) {
this.restaurantRepository = restaurantsRepository;
}
——
req.params, req.body, req.user
- req.params | URL 경로에 포함된 파라미터
- req.body | HTTP 요청 본문에 포함된 데이터
- req.user | 로그인된 사용자 정보
'Coding > 내일배움캠프' 카테고리의 다른 글
[내일배움캠프] Node.js 4기 TIL | Day 56 | 24.02.29.(목) (1) | 2024.02.29 |
---|---|
[내일배움캠프] 배달 음식 주문하기 | Node.js 4기 TIL | Day 55 | 24.02.28.(수) (0) | 2024.02.28 |
[내일배움캠프] RDB N:M 관계에 대한 이해, 3-Layered Architecture에 대한 이해 | Node.js 4기 TIL | Day 53 | 24.02.26.(월) (1) | 2024.02.27 |
[내일배움캠프] Node.js 4기 TIL | Day 52 | 24.02.23.(금) (0) | 2024.02.24 |
[내일배움캠프] Node.js 4기 TIL | Day 51 | 24.02.22.(목) (0) | 2024.02.22 |