diff --git a/backend/alembic/versions/b024_add_critical_test_audit_indexes.py b/backend/alembic/versions/b024_add_critical_test_audit_indexes.py new file mode 100644 index 0000000..dbf068e --- /dev/null +++ b/backend/alembic/versions/b024_add_critical_test_audit_indexes.py @@ -0,0 +1,37 @@ +"""add_critical_test_audit_indexes + +Add missing critical indexes for tests and audit_logs tables to match +model __table_args__ declarations. Existing indexes (from b005, b018, +b019) are left untouched; only the two genuinely new indexes are created. + +Revision ID: b024critidx +Revises: b023mustchgpwd +Create Date: 2026-02-18 12:00:00.000000 + +""" +from typing import Sequence, Union + +from alembic import op + +revision: str = "b024critidx" +down_revision: Union[str, None] = "b023mustchgpwd" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + op.create_index( + "ix_tests_created_at", + "tests", + ["created_at"], + ) + op.create_index( + "ix_tests_state_created_at", + "tests", + ["state", "created_at"], + ) + + +def downgrade() -> None: + op.drop_index("ix_tests_state_created_at", table_name="tests") + op.drop_index("ix_tests_created_at", table_name="tests") diff --git a/backend/app/models/audit.py b/backend/app/models/audit.py index 253ebb9..90aed66 100644 --- a/backend/app/models/audit.py +++ b/backend/app/models/audit.py @@ -1,5 +1,5 @@ import uuid -from sqlalchemy import Column, String, DateTime, ForeignKey, func +from sqlalchemy import Column, String, DateTime, ForeignKey, Index, func from sqlalchemy.dialects.postgresql import UUID, JSONB from sqlalchemy.orm import relationship @@ -25,3 +25,9 @@ class AuditLog(Base): # Relationships user = relationship("User") + + __table_args__ = ( + Index("ix_audit_logs_entity", "entity_type", "entity_id"), + Index("ix_audit_logs_timestamp", "timestamp"), + Index("ix_audit_logs_entity_type_entity_id_action", "entity_type", "entity_id", "action"), + ) diff --git a/backend/app/models/test.py b/backend/app/models/test.py index 0585cb8..166d137 100644 --- a/backend/app/models/test.py +++ b/backend/app/models/test.py @@ -1,5 +1,5 @@ import uuid -from sqlalchemy import Column, String, Text, Boolean, Integer, DateTime, ForeignKey, Enum, func +from sqlalchemy import Column, String, Text, Boolean, Integer, DateTime, ForeignKey, Enum, Index, func from sqlalchemy.dialects.postgresql import UUID from sqlalchemy.orm import relationship @@ -72,3 +72,11 @@ class Test(Base): remediation_user = relationship("User", foreign_keys=[remediation_assignee]) original_test = relationship("Test", remote_side="Test.id", foreign_keys=[retest_of]) retests = relationship("Test", foreign_keys=[retest_of], back_populates="original_test") + + __table_args__ = ( + Index("ix_tests_technique_id", "technique_id"), + Index("ix_tests_state", "state"), + Index("ix_tests_created_at", "created_at"), + Index("ix_tests_technique_state", "technique_id", "state"), + Index("ix_tests_state_created_at", "state", "created_at"), + )