fix: unify delete logic and fix cascade deletion for flows (#5466)
* Fix incomplete cascade deletion for flows. * [autofix.ci] apply automated fixes * Remove modification. * [autofix.ci] apply automated fixes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
This commit is contained in:
parent
5640f84f54
commit
9ee63109d4
2 changed files with 6 additions and 11 deletions
|
|
@ -283,6 +283,11 @@ async def cascade_delete_flow(session: AsyncSession, flow_id: uuid.UUID) -> None
|
|||
try:
|
||||
await session.exec(delete(TransactionTable).where(TransactionTable.flow_id == flow_id))
|
||||
await session.exec(delete(VertexBuildTable).where(VertexBuildTable.flow_id == flow_id))
|
||||
# TODO: Verify if deleting messages is safe in terms of session id relevance
|
||||
# If we delete messages directly, rather than setting flow_id to null,
|
||||
# it might cause unexpected behaviors because the session id could still be
|
||||
# used elsewhere to search for these messages.
|
||||
# await session.exec(delete(MessageTable).where(MessageTable.flow_id == flow_id))
|
||||
await session.exec(delete(Flow).where(Flow.id == flow_id))
|
||||
except Exception as e:
|
||||
msg = f"Unable to cascade delete flow: ${flow_id}"
|
||||
|
|
|
|||
|
|
@ -25,8 +25,6 @@ from langflow.services.database.models.flow.model import FlowHeader
|
|||
from langflow.services.database.models.flow.utils import get_webhook_component_in_flow
|
||||
from langflow.services.database.models.folder.constants import DEFAULT_FOLDER_NAME
|
||||
from langflow.services.database.models.folder.model import Folder
|
||||
from langflow.services.database.models.transactions.crud import get_transactions_by_flow_id
|
||||
from langflow.services.database.models.vertex_builds.crud import get_vertex_builds_by_flow_id
|
||||
from langflow.services.deps import get_settings_service
|
||||
from langflow.services.settings.service import SettingsService
|
||||
|
||||
|
|
@ -423,15 +421,7 @@ async def delete_multiple_flows(
|
|||
await db.exec(select(Flow).where(col(Flow.id).in_(flow_ids)).where(Flow.user_id == user.id))
|
||||
).all()
|
||||
for flow in flows_to_delete:
|
||||
transactions_to_delete = await get_transactions_by_flow_id(db, flow.id)
|
||||
for transaction in transactions_to_delete:
|
||||
await db.delete(transaction)
|
||||
|
||||
builds_to_delete = await get_vertex_builds_by_flow_id(db, flow.id)
|
||||
for build in builds_to_delete:
|
||||
await db.delete(build)
|
||||
|
||||
await db.delete(flow)
|
||||
await cascade_delete_flow(db, flow.id)
|
||||
|
||||
await db.commit()
|
||||
return {"deleted": len(flows_to_delete)}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue