Handle organization deletion cascade for cameras, sequences, detections, and storage cleanup
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 29
- Forks
- 14
- Avg merge
- 9d 1h
- Merged PRs (30d)
- 5
Description
Description
Deleting an organization currently only removes alerts in order to satisfy foreign key constraints. Cameras, poses, sequences, detections, and associated media stored in S3 are not deleted. This leaves orphaned data and makes the data lifecycle unclear.
Before alerts were handled, deletion was already incomplete for cameras and related objects, so this issue existed even earlier and is not specific to alerts only.
I started addressing this partially in PR #538 by explicitly deleting alerts and their association tables, but coverage test became quite comple so I stopped for this PR and opened this issue to address it properly later
# Remove alerts and their associations for this organization to satisfy FK constraints
org_session = organizations.session
alert_ids_res = await org_session.exec(
select(Alert.id).where(Alert.organization_id == organization_id)
)
alert_ids = list(alert_ids_res.all())
if alert_ids:
delete_links = delete(AlertSequence).where(
cast(Any, AlertSequence.alert_id).in_(alert_ids)
)
delete_alerts = delete(Alert).where(
cast(Any, Alert.id).in_(alert_ids)
)
await org_session.exec(delete_links)
await org_session.exec(delete_alerts)
await org_session.commit()
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Review PR #538 and the organization deletion flow around organizations.session, including the alert-association deletion shown in the issue. Trace how cameras, poses, sequences, detections, and associated S3 media relate to the organization and its foreign-key constraints. Done means organization deletion removes all listed records and media without orphaned data, with the coverage test completed.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- fastapi, postgresql, python
- Domain
- backend, cloud, database
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100