"""Prediction model"""
from sqlalchemy import Column, Integer, ForeignKey, Float, DateTime, String
from sqlalchemy.orm import relationship
from datetime import datetime
from app.core.db.database import Base


class Prediction(Base):
    """Match prediction"""
    __tablename__ = "predictions"
    
    id = Column(Integer, primary_key=True, index=True)
    match_id = Column(Integer, ForeignKey("matches.id"), nullable=False, index=True)
    model_id = Column(Integer, ForeignKey("models.id"), nullable=False)
    
    # Probabilities
    prob_home_win = Column(Float, nullable=False)
    prob_draw = Column(Float, nullable=False)
    prob_away_win = Column(Float, nullable=False)
    
    # Optional predictions
    prob_over_2_5 = Column(Float)
    prob_under_2_5 = Column(Float)
    prob_both_score = Column(Float)
    
    # LLM analysis (optional)
    analysis_text = Column(String)
    analysis_generated_at = Column(DateTime)

    # Metadata
    calculated_at = Column(DateTime, default=datetime.utcnow, index=True)
    confidence = Column(Float)  # Max probability
    
    match = relationship("Match", back_populates="predictions")
    model = relationship("Model")

