from pydantic_settings import BaseSettings, SettingsConfigDict


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

    environment: str = "production"
    debug: bool = False

    db_host: str = "127.0.0.1"
    db_port: int = 3306
    db_name: str = "db_larcare"
    db_user: str
    db_password: str
    db_pool_size: int = 10
    db_max_overflow: int = 5
    db_pool_recycle: int = 1800

    ip_hash_salt: str
    allowed_origins: list[str] = ["https://larcareservices.com"]

    notify_email_to: str | None = None
    smtp_host: str | None = None
    smtp_port: int = 587
    smtp_user: str | None = None
    smtp_password: str | None = None

    upload_dir: str = "./uploads"
    max_upload_bytes: int = 10 * 1024 * 1024


settings = Settings()  # type: ignore[call-arg]
