from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy import select from pydantic import BaseModel from app.database import get_db from app.models.script import Script from app.scripts.sample import SCRIPTS router = APIRouter(prefix="/api/scripts", tags=["scripts"]) class ScriptListItem(BaseModel): id: str title: str type: str difficulty: int min_players: int max_players: int duration: str background: str @router.get("") async def list_scripts(): items = [] for s in SCRIPTS: items.append(ScriptListItem( id=s["id"], title=s["title"], type=s["type"], difficulty=s["difficulty"], min_players=s["playerCount"]["min"], max_players=s["playerCount"]["max"], duration=s["duration"], background=s["background"], )) return items @router.get("/{script_id}") async def get_script(script_id: str): for s in SCRIPTS: if s["id"] == script_id: return s raise HTTPException(404, "剧本不存在")