from sqlalchemy.orm import Session from app.presentation.schemas.order_schema import ResultRequest, TestResponse, TaskRequest, CreateOrderResponse from app.shared.logger import setup_logger from app.repositories.order_repository import OrderRepository from app.repositories.user_repository import UserRepository from app.shared.exception.custom_exception import UserNotFoundError logger = setup_logger(__name__) class OrderService: '''주문 서비스''' def __init__(self, db: Session): self.db = db self.user_repository = UserRepository(db) self.order_repository = OrderRepository(db) def get_all_by_user_id(self, request: ResultRequest) -> TestResponse: '''주문(Orders) 가져오기''' # 1. id 검증id user = self.user_repository.get_by_id(request.user_id) if not user: raise UserNotFoundError() # 2. 업체 가져오기 orders = self.order_repository.get_all_by_user_id(request.user_id) return TestResponse( total_count=len(orders), orders=orders ) def create_order(self, request: TaskRequest) -> CreateOrderResponse: '''새로운 주문 생성''' # 1. 사용자 검증 user = self.user_repository.get_by_user_uuid(request.user_id) if not user: raise UserNotFoundError() # 2. 주문 생성 (item_id는 None 또는 Null로 처리) new_order = self.order_repository.create_order( user_id=request.user_id, # ✅ User 객체에서 UUID 추출 item_id=None, # nullable status="PENDING" ) return CreateOrderResponse( id=new_order.id, user_id=new_order.user_id, item_id=new_order.item_id, status=new_order.status )