murshid / murshid_backend /app /models /rule_technique_mapping.py
devorbit's picture
Initial deployment - secrets removed
26e1c2e
"""
RuleTechniqueMapping associative entity — ER Diagram §3.2.6
Attributes: Mapping_ID, Rule_ID (FK), Technique_ID (FK), confidence_score
Index on rule_id for fast lookup — mentioned explicitly in Use Case 6 (§3.2.7).
"""
from sqlalchemy import Float, ForeignKey, Index, Integer, String
from sqlalchemy.orm import Mapped, mapped_column, relationship
from app.db.base import Base
class RuleTechniqueMapping(Base):
__tablename__ = "rule_technique_mappings"
mapping_id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)
rule_id: Mapped[str] = mapped_column(
String(50), ForeignKey("rules.rule_id"), nullable=False
)
technique_id: Mapped[str] = mapped_column(
String(20), ForeignKey("techniques.technique_id"), nullable=False
)
confidence_score: Mapped[float] = mapped_column(Float, nullable=False)
rule: Mapped["Rule"] = relationship(back_populates="technique_mappings")
technique: Mapped["Technique"] = relationship(back_populates="rule_mappings")
__table_args__ = (
# "creates an index on rule_id for efficient lookup" — Use Case 6
Index("ix_rule_technique_rule_id", "rule_id"),
)