develop #2
@@ -26,7 +26,7 @@ from datetime import datetime, timezone
|
|||||||
|
|
||||||
from fastapi import APIRouter, Depends, HTTPException, status
|
from fastapi import APIRouter, Depends, HTTPException, status
|
||||||
from fastapi.responses import RedirectResponse
|
from fastapi.responses import RedirectResponse
|
||||||
from sqlalchemy import func, select
|
from sqlalchemy import delete as sa_delete, func, select
|
||||||
from sqlalchemy.ext.asyncio import AsyncSession
|
from sqlalchemy.ext.asyncio import AsyncSession
|
||||||
|
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
@@ -371,7 +371,12 @@ async def delete_cloud_scout(
|
|||||||
scout = await db.get(CloudScoutConfig, scout_id)
|
scout = await db.get(CloudScoutConfig, scout_id)
|
||||||
if scout is None or scout.user_id != current_user.id:
|
if scout is None or scout.user_id != current_user.id:
|
||||||
raise HTTPException(status.HTTP_404_NOT_FOUND, "Scout not found")
|
raise HTTPException(status.HTTP_404_NOT_FOUND, "Scout not found")
|
||||||
await db.delete(scout)
|
# Core deletes bypass the polymorphic ScoutRunLog relationship whose
|
||||||
|
# varchar scout_id vs uuid id join is not directly comparable in Postgres.
|
||||||
|
# scout_run_logs.scout_id is a plain string (matches the str scout_id);
|
||||||
|
# scout_triage_queue rows cascade automatically via their FK ondelete.
|
||||||
|
await db.execute(sa_delete(ScoutRunLog).where(ScoutRunLog.scout_id == scout_id))
|
||||||
|
await db.execute(sa_delete(CloudScoutConfig).where(CloudScoutConfig.id == scout_id))
|
||||||
await db.commit()
|
await db.commit()
|
||||||
return {"ok": True}
|
return {"ok": True}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user