# src/models/ml_output.py from __future__ import annotations import uuid from datetime import datetime from typing import Optional from sqlalchemy import String, Float, DateTime, ForeignKey from sqlalchemy.orm import Mapped, mapped_column from sqlalchemy.sql import func from sqlalchemy.dialects.postgresql import UUID from .base import Base class MLOutput(Base): __tablename__ = "ml_outputs" id: Mapped[uuid.UUID] = mapped_column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) created_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), server_default=func.now() ) input_id: Mapped[uuid.UUID] = mapped_column( UUID(as_uuid=True), ForeignKey("ml_inputs.id", ondelete="CASCADE"), nullable=False ) prediction: Mapped[str] = mapped_column(String(255), nullable=False) prob: Mapped[Optional[float]] = mapped_column(Float, nullable=True) error: Mapped[Optional[str]] = mapped_column(String(500), nullable=True)