import uuid
from datetime import datetime

from pydantic import BaseModel

from app.models.stubs import ModelStatus


class OllamaModelOut(BaseModel):
    name: str
    size: int | None = None
    modified_at: str | None = None
    digest: str | None = None


class PullModelRequest(BaseModel):
    tag: str


class CreateModelRequest(BaseModel):
    project_id: uuid.UUID
    name: str
    base_model: str
    tag: str
    prompt_id: uuid.UUID | None = None
    system_prompt: str | None = None
    parameters: dict[str, str] | None = None


class ModelVersionOut(BaseModel):
    id: uuid.UUID
    version: str
    merged_path: str | None
    notes: str | None
    metrics: dict
    created_at: datetime

    class Config:
        from_attributes = True


class AIModelOut(BaseModel):
    id: uuid.UUID
    project_id: uuid.UUID
    name: str
    base_model: str
    status: ModelStatus
    versions: list[ModelVersionOut] = []

    class Config:
        from_attributes = True
