SnapFeast / core /config.py
Testys's picture
Update core/config.py
fd26033 verified
raw
history blame
1.2 kB
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()