from fastapi import APIRouter, Depends, HTTPException, status from sqlalchemy.orm import Session from typing import List from app.database.database import get_db from app.schemas.order import OrderCreate, OrderResponse from app.services.order import ( create_order, get_order_by_id, get_user_orders, update_order_status, ) from app.services.auth import get_current_user from app.models import User router = APIRouter(prefix="/api/orders", tags=["orders"]) @router.post("", response_model=OrderResponse) def create_new_order( order_data: OrderCreate, current_user: User = Depends(get_current_user), db: Session = Depends(get_db), ): order = create_order(db, current_user.id, order_data) if not order: raise HTTPException( status_code=status.HTTP_400_BAD_REQUEST, detail="Cannot create order with empty cart", ) return order @router.get("", response_model=List[OrderResponse]) def get_user_order_history( current_user: User = Depends(get_current_user), db: Session = Depends(get_db), ): return get_user_orders(db, current_user.id) @router.get("/{order_id}", response_model=OrderResponse) def get_order( order_id: int, current_user: User = Depends(get_current_user), db: Session = Depends(get_db), ): order = get_order_by_id(db, order_id) if not order or order.user_id != current_user.id: raise HTTPException(status_code=404, detail="Order not found") return order