| from fastapi import APIRouter, HTTPException, Query
|
| from typing import List
|
| from ..schemas.story import Story, StoryCreate, StoryUpdate
|
| from ..services.story import story_service
|
|
|
| router = APIRouter()
|
|
|
|
|
| @router.get("/", response_model=List[Story])
|
| async def list_stories(
|
| skip: int = Query(0, ge=0),
|
| limit: int = Query(10, ge=1, le=100)
|
| ):
|
| """
|
| 获取故事列表
|
| """
|
| return story_service.get_stories(skip=skip, limit=limit)
|
|
|
|
|
| @router.post("/", response_model=Story)
|
| async def create_story(story: StoryCreate):
|
| """
|
| 创建新故事
|
| """
|
| return story_service.create_story(story)
|
|
|
|
|
| @router.get("/{story_id}", response_model=Story)
|
| async def get_story(story_id: str):
|
| """
|
| 获取特定故事的详细信息
|
| """
|
| story = story_service.get_story(story_id)
|
| if story is None:
|
| raise HTTPException(status_code=404, detail="Story not found")
|
| return story
|
|
|
|
|
| @router.put("/{story_id}", response_model=Story)
|
| async def update_story(story_id: str, story: StoryUpdate):
|
| """
|
| 更新故事信息
|
| """
|
| updated_story = story_service.update_story(story_id, story)
|
| if updated_story is None:
|
| raise HTTPException(status_code=404, detail="Story not found")
|
| return updated_story
|
|
|
|
|
| @router.delete("/{story_id}")
|
| async def delete_story(story_id: str):
|
| """
|
| 删除故事
|
| """
|
| if not story_service.delete_story(story_id):
|
| raise HTTPException(status_code=404, detail="Story not found")
|
| return {"message": "Story deleted successfully"}
|
|
|