Fix foreign key constraint: delete mail_objects before mails
Added deletion of mail_objects before deleting mail_messages to avoid foreign key constraint violation. The mail_objects table has a foreign key to mail_messages. Complete deletion order: 1. Clean up auxiliary tables 2. Unlink mails from jobs 3. Delete mail_objects 4. Delete jobs (cascades to runs) 5. Delete mails Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
ff4942272f
commit
710aba97e4
@ -252,6 +252,17 @@ def settings_jobs_delete_orphaned():
|
|||||||
{"job_ids": job_ids},
|
{"job_ids": job_ids},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Delete mail_objects before deleting mails
|
||||||
|
# mail_objects.mail_message_id references mail_messages.id
|
||||||
|
if mail_message_ids:
|
||||||
|
from sqlalchemy import text, bindparam
|
||||||
|
_safe_execute(
|
||||||
|
text("DELETE FROM mail_objects WHERE mail_message_id IN :mail_ids").bindparams(
|
||||||
|
bindparam("mail_ids", expanding=True)
|
||||||
|
),
|
||||||
|
{"mail_ids": mail_message_ids},
|
||||||
|
)
|
||||||
|
|
||||||
# Delete all orphaned jobs (runs/objects are cascaded via ORM relationships)
|
# Delete all orphaned jobs (runs/objects are cascaded via ORM relationships)
|
||||||
for job in orphaned_jobs:
|
for job in orphaned_jobs:
|
||||||
db.session.delete(job)
|
db.session.delete(job)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user