import os from pathlib import Path from dotenv import load_dotenv from urllib.parse import quote_plus from pydantic_settings import BaseSettings # Make sure this import is correct load_dotenv() class Settings(BaseSettings): # Use environment variables to configure the database URL components DATABASE_USER: str = os.getenv("PG_USER") DATABASE_PASSWORD: str = os.getenv("PG_PASSWORD") DATABASE_HOST: str = os.getenv("PG_HOST") DATABASE_PORT: str = os.getenv("PG_PORT") DATABASE_NAME: str = os.getenv("PG_NAME") # Combine components into the full URL using a property @property def DATABASE_URL(self) -> str: user = quote_plus(self.DATABASE_USER) password = quote_plus(self.DATABASE_PASSWORD) return f"postgresql://{user}:{password}@{self.DATABASE_HOST}:{self.DATABASE_PORT}/{self.DATABASE_NAME}?sslmode=require" JWT_SECRET_KEY: str = os.getenv("JWT_SECRET") JWT_ALGORITHM: str = os.getenv("JWT_ALGORITHM") ACCESS_TOKEN_EXPIRE_MINUTES: int = int(os.getenv("ACCESS_TOKEN_EXPIRE_MINUTES", default="30")) # Default value as fallback def get_settings(): return Settings() # Usage example settings = get_settings()