fix(topics): 外键约束导致 delete 400
选题有关联 content_tasks/article/publish_record/metrics 表, 外键约束阻止删除。改为先级联删除关联数据再删选题。 前端同时显示服务端返回的具体错误信息,而不是笼统的 删除失败。
This commit is contained in:
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user