from fastapi import APIRouter, Depends, HTTPException from app.services.db_manager import DatabaseManager from instance.configdb import get_database_manager from pydantic import BaseModel router = APIRouter() # Модели запросов и ответов class CreateUserRequest(BaseModel): telegram_id: int class UserResponse(BaseModel): id: str telegram_id: int username: str balance: float created_at: str updated_at: str @router.post("/user/create", response_model=UserResponse, summary="Создать пользователя") async def create_user( request: CreateUserRequest, db_manager: DatabaseManager = Depends(get_database_manager) ): """ Создание пользователя через Telegram ID. """ try: user = await db_manager.create_user(request.telegram_id) if user == "ERROR": raise HTTPException(status_code=500, detail="Failed to create user") return UserResponse( id=user.id, telegram_id=user.telegram_id, username=user.username, balance=user.balance, created_at=user.created_at.isoformat(), updated_at=user.updated_at.isoformat() ) except Exception as e: raise HTTPException(status_code=500, detail=str(e)) @router.get("/user/{telegram_id}", response_model=UserResponse, summary="Получить информацию о пользователе") async def get_user( telegram_id: int, db_manager: DatabaseManager = Depends(get_database_manager) ): """ Получение информации о пользователе. """ try: user = await db_manager.get_user_by_telegram_id(telegram_id) if not user: raise HTTPException(status_code=404, detail="User not found") return UserResponse( id=user.id, telegram_id=user.telegram_id, username=user.username, balance=user.balance, created_at=user.created_at.isoformat(), updated_at=user.updated_at.isoformat() ) except Exception as e: raise HTTPException(status_code=500, detail=str(e))