- entities
- errors
- interface
- use case
- controller
- presenter
- repository
- payment processor (支払い処理)
- unit of work (データベースの一貫性のため)
- handler
- 外部で handler server action を呼び出す
- handler がリクエストオブジェクトにベーシックバリデーションを行う
- 対応の repository オブジェクトを作成
- 対応の infrastructure を作成
- 対応の use case を作成し、repository や infrastructure を渡す
- 対応の controller を作成し、use case を渡す
- その controller を呼び出す
- controller がリクエストオブジェクトをエンティティオブジェクトに変換し、対応する use case を呼び出す
- use case でビジネスロジックを実施し、対応の repository interface メソッドを呼び出す
-
createOrderHandler (Driver & Infrastructure層)
- リクエストバリデーション
- Infrastructure instance 作成
product repositoryorder repositoryunit of workpayment processor
- Use case instance 作成
GetProductDetailUseCaseproduct repositoryを渡す
CreateOrderUseCaseorder repositoryを渡すunit of workを渡すpayment processorを渡す
- CreateOrderController instance 作成
GetProductUseCaseとCreateOrderUseCaseを渡す
- CreateOrderController を呼び出す
-
CreateOrderController(Interface Adaptor層)
- Request Order Object の各 product 毎に
GetProductDetailUseCaseを呼び出し- price の認証 を行う
- 認証済み Product をもって Order Entity Object を作成する
- total price の認証 を行う
CreateOrderUseCaseを呼び出す- 作成した Order Entity Object を渡す
- Request Order Object の各 product 毎に
-
Use Case (Application層)
- オペレーションを Unit of Work に wrap する
- Payment Processor を呼び出す
OrderRepository.CreateOrderを呼び出す- Order Entity Object を渡す
-
Order Repository Interface (Domain層)
- CreateOrder メソッドを呼び出す
- Order Repository Interface (Domain層)
- 作成した Order を返す
- Use Case (Application層)
OrderRepository.CreateOrderが返した Order を返す
- CreateOrderController (Interface Adaptor層)
CreateOrderUseCaseが返した値を OrderPresenter でディスプレイフォーマットに変換して返す
- createOrderHandler (Driver & Infrastructure層)
- Controller が返した値を返す
DATABASE_URL="postgresql://neondb_owner:npg_L0DzM5gbmXPJ@ep-hidden-river-a19ld4i4-pooler.ap-southeast-1.aws.neon.tech/neondb?sslmode=require"