from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session from app.db.session import get_db from app.core.deps import get_current_user from app.models.user import User from app.schemas.user import WalletLinkRequest, WalletResponse from app.services.wallet import wallet_service router = APIRouter() @router.post("/link", response_model=WalletResponse) def link_wallet( wallet_request: WalletLinkRequest, current_user: User = Depends(get_current_user), db: Session = Depends(get_db) ): result = wallet_service.link_wallet( db=db, user_id=current_user.id, wallet_address=wallet_request.wallet_address ) if not result["success"]: raise HTTPException(status_code=400, detail=result["message"]) return WalletResponse(**result) @router.delete("/unlink", response_model=WalletResponse) def unlink_wallet( current_user: User = Depends(get_current_user), db: Session = Depends(get_db) ): result = wallet_service.unlink_wallet(db=db, user_id=current_user.id) if not result["success"]: raise HTTPException(status_code=400, detail=result["message"]) return WalletResponse(**result) @router.get("/info", response_model=WalletResponse) def get_wallet_info( current_user: User = Depends(get_current_user), db: Session = Depends(get_db) ): result = wallet_service.get_wallet_info(db=db, user_id=current_user.id) if not result["success"]: raise HTTPException(status_code=400, detail=result["message"]) return WalletResponse(**result) @router.post("/generate-test-wallet") def generate_test_wallet(): """Generate a test wallet for development purposes""" result = wallet_service.generate_test_wallet() return result