from sqlalchemy import Column, Integer, String, JSON, DateTime, func, ForeignKey
from src.models.base import Base 


class Prediction(Base):
    
    __tablename__ = 'predictions'

    id = Column(Integer, primary_key=True, autoincrement=True)
    user_id = Column(Integer, ForeignKey("users.user_id", ondelete="CASCADE"), nullable=True)
    before_image_url = Column(String, nullable=False)
    after_image_url = Column(String, nullable=False)
    text_results = Column(JSON)
    output_image_url = Column(String)
    status = Column(String, default="pending")  # Optional: "pending", "processing", "completed"
    created_at = Column(DateTime, server_default=func.now())
    updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now())

class User(Base):
    __tablename__ = "users"

    user_id = Column(Integer, primary_key=True, index=True)
    name = Column(String, nullable=False)
    username = Column(String, unique=True, nullable=False)
    email = Column(String, unique=True, index=True, nullable=False)
    password = Column(String, nullable=False)  # Hashed password
    organization = Column(String, nullable=True)
    created_at = Column(DateTime(timezone=True), server_default=func.now())
    updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
