fix: 完善个人中心卡片管理
This commit is contained in:
@@ -136,6 +136,16 @@ def mark_help_card_copied(
|
||||
return api_success(help_card_dict(HelpCardService.mark_copied(db, user=current_user, card_id=card_id)))
|
||||
|
||||
|
||||
@router.delete("/help-card/{card_id}")
|
||||
def delete_help_card(
|
||||
card_id: int,
|
||||
db: Session = Depends(get_db),
|
||||
current_user: User = Depends(get_current_user),
|
||||
) -> dict:
|
||||
HelpCardService.delete(db, user=current_user, card_id=card_id)
|
||||
return api_success()
|
||||
|
||||
|
||||
@router.post("/session/{session_id}/share-draft")
|
||||
def generate_share_draft(
|
||||
session_id: int,
|
||||
@@ -165,6 +175,16 @@ def mark_share_draft_copied(
|
||||
return api_success(share_draft_dict(ShareDraftService.mark_copied(db, user=current_user, draft_id=draft_id)))
|
||||
|
||||
|
||||
@router.delete("/share-draft/{draft_id}")
|
||||
def delete_share_draft(
|
||||
draft_id: int,
|
||||
db: Session = Depends(get_db),
|
||||
current_user: User = Depends(get_current_user),
|
||||
) -> dict:
|
||||
ShareDraftService.delete(db, user=current_user, draft_id=draft_id)
|
||||
return api_success()
|
||||
|
||||
|
||||
@router.post("/completions")
|
||||
def completions(
|
||||
payload: ChatCompletionRequest,
|
||||
|
||||
@@ -62,6 +62,14 @@ class HelpCardService:
|
||||
db.refresh(card)
|
||||
return card
|
||||
|
||||
@staticmethod
|
||||
def delete(db: Session, *, user: User, card_id: int) -> None:
|
||||
card = db.scalar(select(TeacherHelpCard).where(TeacherHelpCard.id == card_id, TeacherHelpCard.user_id == user.id))
|
||||
if card is None:
|
||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="求助卡不存在")
|
||||
db.delete(card)
|
||||
db.commit()
|
||||
|
||||
|
||||
def help_card_dict(card: TeacherHelpCard) -> dict:
|
||||
return {
|
||||
|
||||
@@ -61,6 +61,14 @@ class ShareDraftService:
|
||||
db.refresh(draft)
|
||||
return draft
|
||||
|
||||
@staticmethod
|
||||
def delete(db: Session, *, user: User, draft_id: int) -> None:
|
||||
draft = db.scalar(select(ShareDraft).where(ShareDraft.id == draft_id, ShareDraft.user_id == user.id))
|
||||
if draft is None:
|
||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="分享稿不存在")
|
||||
db.delete(draft)
|
||||
db.commit()
|
||||
|
||||
|
||||
def share_draft_dict(draft: ShareDraft) -> dict:
|
||||
return {
|
||||
|
||||
@@ -2,6 +2,8 @@ from __future__ import annotations
|
||||
|
||||
from datetime import UTC, datetime
|
||||
|
||||
import pytest
|
||||
from fastapi import HTTPException
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.orm import Session
|
||||
from sqlalchemy.pool import StaticPool
|
||||
@@ -63,3 +65,14 @@ def test_generate_help_card_from_topic_summary_and_mark_copied():
|
||||
|
||||
assert copied.copied == 1
|
||||
assert copied.copied_at is not None
|
||||
|
||||
other_user = User(id=2, phone="13800000002", name="其他学员", daily_chat_limit=100, daily_chat_used=0)
|
||||
db.add(other_user)
|
||||
db.commit()
|
||||
with pytest.raises(HTTPException) as error:
|
||||
HelpCardService.delete(db, user=other_user, card_id=card.id)
|
||||
assert error.value.status_code == 404
|
||||
assert db.get(TeacherHelpCard, card.id) is not None
|
||||
|
||||
HelpCardService.delete(db, user=user, card_id=card.id)
|
||||
assert db.get(TeacherHelpCard, card.id) is None
|
||||
|
||||
@@ -2,6 +2,8 @@ from __future__ import annotations
|
||||
|
||||
from datetime import UTC, datetime
|
||||
|
||||
import pytest
|
||||
from fastapi import HTTPException
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.orm import Session
|
||||
from sqlalchemy.pool import StaticPool
|
||||
@@ -65,3 +67,14 @@ def test_generate_share_draft_from_topic_summary_and_mark_copied():
|
||||
|
||||
assert copied.copied == 1
|
||||
assert copied.copied_at is not None
|
||||
|
||||
other_user = User(id=2, phone="13800000002", name="其他学员", daily_chat_limit=100, daily_chat_used=0)
|
||||
db.add(other_user)
|
||||
db.commit()
|
||||
with pytest.raises(HTTPException) as error:
|
||||
ShareDraftService.delete(db, user=other_user, draft_id=draft.id)
|
||||
assert error.value.status_code == 404
|
||||
assert db.get(ShareDraft, draft.id) is not None
|
||||
|
||||
ShareDraftService.delete(db, user=user, draft_id=draft.id)
|
||||
assert db.get(ShareDraft, draft.id) is None
|
||||
|
||||
Reference in New Issue
Block a user