fix(topics): 外键约束导致 delete 400

选题有关联 content_tasks/article/publish_record/metrics 表,
外键约束阻止删除。改为先级联删除关联数据再删选题。

前端同时显示服务端返回的具体错误信息,而不是笼统的 删除失败。
This commit is contained in:
Yuzhiran Dev
2026-06-01 12:08:51 +08:00
parent 468c9066cb
commit 1084388fec
2 changed files with 13 additions and 3 deletions
+7 -1
View File
@@ -189,13 +189,19 @@ def delete_topic(
if not topic:
raise HTTPException(status_code=404, detail="Topic not found")
_check_org(topic, current_user, db)
from ..models import ContentTask, Article, PublishRecord, ContentMetrics, ContentCalendar
try:
db.query(ContentCalendar).filter(ContentCalendar.topic_id == topic_id).delete()
db.query(ContentTask).filter(ContentTask.topic_id == topic_id).delete()
db.query(Article).filter(Article.topic_id == topic_id).delete()
db.query(PublishRecord).filter(PublishRecord.topic_id == topic_id).delete()
db.query(ContentMetrics).filter(ContentMetrics.topic_id == topic_id).delete()
db.delete(topic)
db.commit()
return {"ok": True}
except Exception as e:
db.rollback()
raise HTTPException(status_code=400, detail=f"删除失败:该选题有关联数据(文章/发布记录等),请先删除关联数据。{str(e)}")
raise HTTPException(status_code=400, detail=f"删除失败:{str(e)}")
@router.post("/{topic_id}/score")