from sqlalchemy import JSON, Column, DateTime, Float, Integer, String, Text

from app.models.base import BaseModel


class SFTTask(BaseModel):
    __tablename__ = 'sft_tasks'
    __table_args__ = {'schema': 'hub_global'}
    name = Column(String(255), nullable=False)
    description = Column(Text, nullable=True)
    status = Column(String(50), default='pending')
    dataset_id = Column(Integer, nullable=False)
    model_name = Column(String(255), nullable=False)
    hyperparameters = Column(JSON, nullable=True)
    result = Column(JSON, nullable=True)
    tenant_id = Column(Integer, nullable=False, index=True)
    created_by = Column(Integer, nullable=True)
    platform = Column(String(50), default='mock')
    platform_job_id = Column(String(255), nullable=True)
    training_config = Column(JSON, nullable=True)
    progress = Column(Float, default=0.0)
    logs = Column(Text, nullable=True)
    error_message = Column(Text, nullable=True)
    started_at = Column(DateTime, nullable=True)
    completed_at = Column(DateTime, nullable=True)
