from functools import lru_cache

from pydantic_settings import BaseSettings, SettingsConfigDict


class Settings(BaseSettings):
    model_config = SettingsConfigDict(
        env_file=".env",
        env_file_encoding="utf-8",
        extra="ignore",
    )

    database_url: str = "postgresql://partnerlogic:partnerlogic@localhost:5432/partnerlogic"

    gcp_project_id: str = ""
    gcp_location: str = "us-central1"
    vertex_embedding_model: str = "text-embedding-004"
    vertex_embedding_dimensions: int = 768
    vertex_generation_model: str = "gemini-1.5-pro"

    pdf_path: str = "data/shareholder_agreement.pdf"
    chunk_tokens: int = 500
    chunk_overlap: int = 50
    retrieval_k: int = 3


@lru_cache
def get_settings() -> Settings:
    return Settings()
