Files
ai-char-bot/api/endpoints/character_router.py
2026-02-03 16:11:36 +03:00

36 lines
1.2 KiB
Python

from typing import List
from fastapi import APIRouter
from starlette.exceptions import HTTPException
from starlette.requests import Request
from models.Asset import Asset
from models.Character import Character
from repos.dao import 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
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
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)
@router.get("/{character_id}", response_model=Character)
async def get_character_by_id(character_id: int, request: Request) -> Character:
dao: DAO = request.app.state.dao
character = await dao.chars.get_character_by_id(character_id)
return character