This commit is contained in:
xds
2026-02-04 15:10:55 +03:00
parent 11c1f4f7dc
commit 35de8efc56
20 changed files with 566 additions and 135 deletions

View File

@@ -1,35 +1,44 @@
from typing import List
from typing import List, Any, Coroutine
from fastapi import APIRouter
from fastapi import APIRouter, Depends
from pydantic import BaseModel
from starlette.exceptions import HTTPException
from starlette.requests import Request
from api.models.AssetDTO import AssetsResponse
from api.models.GenerationRequest import GenerationRequest, GenerationResponse
from models.Asset import Asset
from models.Character import Character
from repos.dao import DAO
from api.dependency import get_dao
router = APIRouter(prefix="/api/characters", tags=["Characters"])
@router.get("/", response_model=List[Character])
async def get_characters(request: Request) -> List[Character]:
dao: DAO = request.app.state.dao
async def get_characters(request: Request, dao: DAO = Depends(get_dao), ) -> List[Character]:
characters = await dao.chars.get_all_characters()
return characters
@router.get("/{character_id}/assets", response_model=List[Asset])
async def get_character_assets(character_id: str, request: Request) -> List[Asset]:
dao: DAO = request.app.state.dao
@router.get("/{character_id}/assets", response_model=AssetsResponse)
async def get_character_assets(character_id: str, dao: DAO = Depends(get_dao), limit: int = 10,
offset: int = 0, ) -> AssetsResponse:
character = await dao.chars.get_character(character_id)
if character is None:
raise HTTPException(status_code=404, detail="Character not found")
return await dao.assets.get_assets_by_char_id(character_id)
assets = await dao.assets.get_assets_by_char_id(character_id, limit, offset)
total_count = await dao.assets.get_asset_count(character_id)
return AssetsResponse(assets=assets, total_count=total_count)
@router.get("/{character_id}", response_model=Character)
async def get_character_by_id(character_id: str, request: Request) -> Character:
dao: DAO = request.app.state.dao
async def get_character_by_id(character_id: str, request: Request, dao: DAO = Depends(get_dao)) -> Character:
character = await dao.chars.get_character(character_id)
return character
@router.post("/{character_id}/_run", response_model=Asset)
async def post_character_generation(character_id: str, generation: GenerationRequest,
request: Request) -> GenerationResponse:
generation_service = request.app.state.generation_service