"""Cardholders management router.""" import json from fastapi import APIRouter, Depends, HTTPException, Query, Request from sqlalchemy.orm import Session from app.auth import get_current_user, AdminUser from app.database import get_db from app.services import airwallex_service from app.services.audit_log import create_audit_log router = APIRouter(prefix="/api/cardholders", tags=["cardholders"]) @router.get("") def list_cardholders( page_num: int = Query(0, ge=0), page_size: int = Query(20, ge=1, le=100), db: Session = Depends(get_db), user: AdminUser = Depends(get_current_user), ): """List cardholders.""" return airwallex_service.list_cardholders(db, page_num, page_size) @router.post("") def create_cardholder( cardholder_data: dict, request: Request, db: Session = Depends(get_db), user: AdminUser = Depends(get_current_user), ): """Create a new cardholder.""" try: result = airwallex_service.create_cardholder(db, cardholder_data) create_audit_log( db, action="create_cardholder", resource_type="cardholder", resource_id=result.get("cardholder_id", result.get("id", "")), operator=user.username, ip_address=request.client.host if request.client else "", details=f"Created cardholder {cardholder_data.get('email', '')}", ) return result except Exception as e: raise HTTPException(status_code=400, detail=str(e))