46 lines
1.1 KiB
Python
46 lines
1.1 KiB
Python
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, "剧本不存在")
|