feat: Add voice management functionality with delete capability and UI integration

This commit is contained in:
2026-03-06 14:35:59 +08:00
parent ad90e5f96c
commit 964ebb824c
17 changed files with 224 additions and 21 deletions

View File

@@ -170,6 +170,17 @@ async def prepare_and_create_voice_design(
raise HTTPException(status_code=500, detail="Failed to prepare voice design")
@router.delete("/{design_id}", status_code=status.HTTP_204_NO_CONTENT)
async def delete_voice_design(
design_id: int,
current_user: User = Depends(get_current_user),
db: Session = Depends(get_db)
):
deleted = crud.delete_voice_design(db, design_id, current_user.id)
if not deleted:
raise HTTPException(status_code=404, detail="Voice design not found")
@router.post("/{design_id}/prepare-clone")
@limiter.limit("10/minute")
async def prepare_voice_clone_prompt(

View File

@@ -339,6 +339,14 @@ def count_voice_designs(
query = query.filter(VoiceDesign.backend_type == backend_type)
return query.count()
def delete_voice_design(db: Session, design_id: int, user_id: int) -> bool:
design = get_voice_design(db, design_id, user_id)
if not design:
return False
db.delete(design)
db.commit()
return True
def update_voice_design_usage(db: Session, design_id: int, user_id: int) -> Optional[VoiceDesign]:
design = get_voice_design(db, design_id, user_id)
if design: