import uuid
from datetime import datetime
from typing import Optional

from pydantic import BaseModel, Field


class ParseRunStatus:
    PENDING = "pending"
    PROCESSING = "processing"
    COMPLETED = "completed"
    FAILED = "failed"


class DocParseRun(BaseModel):
    id: Optional[str] = None
    run_id: str = Field(default_factory=lambda: str(uuid.uuid4()))
    repo_id: str
    doc_path: str
    status: str = ParseRunStatus.PENDING
    started_at: Optional[datetime] = None
    completed_at: Optional[datetime] = None
    error: Optional[str] = None
    chunks_created: int = 0
    created_at: datetime = Field(default_factory=datetime.utcnow)
