import uuid from datetime import datetime from sqlalchemy import Column, String, DateTime, ForeignKey from sqlalchemy.dialects.postgresql import UUID from sqlalchemy.orm import relationship from app.database import Base class Evidence(Base): """ Evidence model for storing file metadata associated with tests. Files are stored in MinIO, and this model tracks the file location, integrity hash, and upload metadata. """ __tablename__ = "evidences" id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) test_id = Column(UUID(as_uuid=True), ForeignKey("tests.id"), nullable=False) file_name = Column(String, nullable=False) file_path = Column(String, nullable=False) # Path in MinIO sha256_hash = Column(String, nullable=False) uploaded_by = Column(UUID(as_uuid=True), ForeignKey("users.id"), nullable=True) uploaded_at = Column(DateTime, default=datetime.utcnow) # Relationships test = relationship("Test", back_populates="evidences") uploader = relationship("User", foreign_keys=[uploaded_by])