from datetime import datetime
from typing import Any

from pydantic import BaseModel


class LocalModelBase(BaseModel):
    name: str
    identifier: str
    model_type: str | None = "lora"
    base_model: str | None = None
    model_path: str
    status: str | None = "active"
    config: dict[str, Any] | None = None
    asset_kind: str | None = None
    runtime_kind: str | None = None
    source_kind: str | None = None
    published_model_id: int | None = None


class LocalModelCreate(LocalModelBase):
    pass


class LocalModelUpdate(BaseModel):
    name: str | None = None
    model_path: str | None = None
    status: str | None = None
    config: dict[str, Any] | None = None
    asset_kind: str | None = None
    runtime_kind: str | None = None
    source_kind: str | None = None
    published_model_id: int | None = None


class LocalModelResponse(LocalModelBase):
    id: int
    tenant_id: int | None = None
    created_at: datetime
    updated_at: datetime

    class Config:
        from_attributes = True
