feat(db): Add performance indexes for DeletionRequest model

- Add composite index (user, status, created_at) for listing queries
- Add index for reviewed_at field for filtering reviewed requests
- Add index for completed_at field for filtering completed requests
- Create migration 1076_add_deletionrequest_performance_indexes
- Expected improvement: list queries <100ms, filter queries <50ms

Addresses: [AI Scanner] Índices de Performance para DeletionRequest
Epic: Migraciones de Base de Datos

Co-authored-by: dawnsystem <42047891+dawnsystem@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot] 2025-11-12 15:42:00 +00:00
parent fe679ed6d4
commit b16394fdbb
2 changed files with 62 additions and 0 deletions

View file

@ -0,0 +1,55 @@
# Generated manually for DeletionRequest performance optimization
from django.db import migrations, models
class Migration(migrations.Migration):
"""
Add performance indexes for DeletionRequest model.
These indexes optimize common query patterns:
- Filtering by user + status + created_at (most common listing query)
- Filtering by reviewed_at (for finding reviewed requests)
- Filtering by completed_at (for finding completed requests)
Expected performance improvement:
- List queries: <100ms
- Filter queries: <50ms
Addresses Issue: [AI Scanner] Índices de Performance para DeletionRequest
Epic: Migraciones de Base de Datos
"""
dependencies = [
("documents", "1075_add_performance_indexes"),
]
operations = [
# Composite index for user + status + created_at (most common query pattern)
# This supports queries like: DeletionRequest.objects.filter(user=user, status='pending').order_by('-created_at')
migrations.AddIndex(
model_name="deletionrequest",
index=models.Index(
fields=["user", "status", "created_at"],
name="delreq_user_status_created_idx",
),
),
# Index for reviewed_at (for filtering reviewed requests)
# Supports queries like: DeletionRequest.objects.filter(reviewed_at__isnull=False)
migrations.AddIndex(
model_name="deletionrequest",
index=models.Index(
fields=["reviewed_at"],
name="delreq_reviewed_at_idx",
),
),
# Index for completed_at (for filtering completed requests)
# Supports queries like: DeletionRequest.objects.filter(completed_at__isnull=False)
migrations.AddIndex(
model_name="deletionrequest",
index=models.Index(
fields=["completed_at"],
name="delreq_completed_at_idx",
),
),
]

View file

@ -1670,6 +1670,13 @@ class DeletionRequest(models.Model):
verbose_name = _("deletion request")
verbose_name_plural = _("deletion requests")
indexes = [
# Composite index for common listing queries (by user, filtered by status, sorted by date)
models.Index(fields=['user', 'status', 'created_at'], name='delreq_user_status_created_idx'),
# Index for queries filtering by review date
models.Index(fields=['reviewed_at'], name='delreq_reviewed_at_idx'),
# Index for queries filtering by completion date
models.Index(fields=['completed_at'], name='delreq_completed_at_idx'),
# Legacy indexes kept for backward compatibility
models.Index(fields=['status', 'user']),
models.Index(fields=['created_at']),
]