from sqlalchemy import Column, String, Text, TIMESTAMP, Boolean, ARRAY, Integer, JSON from sqlalchemy.dialects.postgresql import UUID import uuid from datetime import datetime from .base import Base class SigmaRule(Base): __tablename__ = "sigma_rules" id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) cve_id = Column(String(20)) rule_name = Column(String(255), nullable=False) rule_content = Column(Text, nullable=False) detection_type = Column(String(50)) log_source = Column(String(100)) confidence_level = Column(String(20)) auto_generated = Column(Boolean, default=True) exploit_based = Column(Boolean, default=False) github_repos = Column(ARRAY(String)) exploit_indicators = Column(Text) # JSON string of extracted indicators # Enhanced fields for new data sources poc_source = Column(String(20), default='github_search') # 'github_search', 'nomi_sec', 'manual' poc_quality_score = Column(Integer, default=0) # Based on star count, activity, etc. nomi_sec_data = Column(JSON) # Store nomi-sec PoC metadata created_at = Column(TIMESTAMP, default=datetime.utcnow) updated_at = Column(TIMESTAMP, default=datetime.utcnow)