from __future__ import annotations

from datetime import datetime

from pydantic import BaseModel, Field

from app.models.enums import LucosSourceType


class WorkspaceRepoDocument(BaseModel):
    org_id: str
    repo_id: str
    source: str = "lucos_workspace"
    workspace_id: str | None = None
    commit_sha: str | None = None
    state: str = "indexing"
    chunks_total: int = 0
    files_indexed: int = 0
    stale_count: int = 0
    created_at: datetime = Field(default_factory=datetime.utcnow)
    updated_at: datetime = Field(default_factory=datetime.utcnow)
    last_indexed_at: datetime | None = None


class StoredChunkDocument(BaseModel):
    org_id: str
    repo_id: str
    chunk_id: str
    chunk_hash: str
    file_path: str
    language: str | None = None
    start_line: int
    end_line: int
    content: str
    source_type: LucosSourceType
    symbol_name: str | None = None
    commit_sha: str | None = None
    workspace_id: str | None = None
    embedding_record_id: str
    created_at: datetime = Field(default_factory=datetime.utcnow)
    updated_at: datetime = Field(default_factory=datetime.utcnow)
