from functools import lru_cache
from pydantic_settings import BaseSettings, SettingsConfigDict


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

    DISCORD_TOKEN: str

    REDIS_HOST: str = "localhost"
    REDIS_PORT: int = 6379

    POSTGRES_HOST: str = "localhost"
    POSTGRES_PORT: int = 5432
    POSTGRES_DB: str = "echoweather"
    POSTGRES_USER: str = "echoweather"
    POSTGRES_PASSWORD: str = "change_me"

    NWS_SOURCE: str


@lru_cache
def get_settings():
    return Settings()
