from datetime import datetime
from typing import Any

from pydantic import BaseModel


class SFTTaskBase(BaseModel):
    name: str
    description: str | None = None
    dataset_id: int
    model_name: str
    platform: str | None = 'mock'
    hyperparameters: dict[str, Any] | None = None

class SFTTaskCreate(SFTTaskBase):
    pass

class SFTTaskUpdate(BaseModel):
    name: str | None = None
    description: str | None = None
    status: str | None = None
    hyperparameters: dict[str, Any] | None = None
    result: dict[str, Any] | None = None

class SFTTaskResponse(SFTTaskBase):
    id: int
    status: str
    result: dict[str, Any] | None = None
    created_at: datetime
    updated_at: datetime

    class Config:
        from_attributes = True
