O2Sound_ver2_final/backend/app/services/order_service.py

53 lines
1.8 KiB
Python

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
)