""" @router CheckoutRouter (Backend/app/api/v1/routers/CheckoutRouter.py) @purpose Database-driven customer checkout pipeline delegating to unified OrderService. """ from fastapi import APIRouter, Depends from pydantic import BaseModel from typing import Optional from sqlalchemy.orm import Session from app.core.database.db_session import get_db from app.api.v1.routers.CustomerProfileRouter import get_current_customer from app.models.EcomCustomerModel import EcomCustomer from app.services.OrderService import OrderService router = APIRouter(prefix="/api/v1/checkout", tags=["Checkout Engine"]) class CheckoutCreateRequest(BaseModel): address_id: str payment_method: str = "COD" coupon_code: Optional[str] = None @router.post("/create") def create_checkout_order( payload: CheckoutCreateRequest, customer: EcomCustomer = Depends(get_current_customer), db: Session = Depends(get_db) ): """ Validate cart item stock, register checkout order reservation, and empty the customer's cart. """ return OrderService.create_ecommerce_order( db=db, customer=customer, address_id=payload.address_id, payment_method=payload.payment_method or "COD" )