import secrets
from pydantic_settings import BaseSettings, SettingsConfigDict
from pydantic import Field


class Settings(BaseSettings):
    """Application settings loaded from environment variables or .env file."""

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

    # Database
    DATABASE_URL: str = "postgresql+asyncpg://domainuser:domainpass@db:5432/domainplatform"

    # Security
    SECRET_KEY: str = Field(default_factory=lambda: secrets.token_hex(32))
    CRON_SECRET: str = Field(default_factory=lambda: secrets.token_hex(16))

    # Deployment environment: 'docker' or 'vercel'
    DEPLOY_ENV: str = "docker"

    # SMTP / Email
    SMTP_HOST: str | None = None
    SMTP_PORT: int = 587
    SMTP_USER: str | None = None
    SMTP_PASSWORD: str | None = None
    SMTP_FROM: str | None = None

    # Alert recipients (comma-separated)
    ALERT_EMAILS: str = ""

    # Frontend origin for CORS / links in emails
    APP_URL: str = "http://localhost:3000"


settings = Settings()
