53 lines
1.8 KiB
Python
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
|
|
) |