Jesse Johnson
New commit for backend deployment: 2025-09-25_13-24-03
c59d808
# Database and vector store configuration
import os
from dotenv import load_dotenv
# Load environment variables from .env file
load_dotenv()
class DatabaseSettings:
"""Simple database settings class that reads environment variables directly"""
def __init__(self):
# ===========================================
# Vector Store Configuration
# ===========================================
self.VECTOR_STORE_PROVIDER = os.getenv("VECTOR_STORE_PROVIDER", "chromadb")
# ChromaDB Configuration
self.DB_PATH = os.getenv("DB_PATH", "./data/chromadb")
self.DB_COLLECTION_NAME = os.getenv("DB_COLLECTION_NAME", "recipes")
self.DB_PERSIST_DIRECTORY = os.getenv("DB_PERSIST_DIRECTORY", "./data/chromadb_persist")
self.DB_REFRESH_ON_START = os.getenv("DB_REFRESH_ON_START", "false").lower() == "true"
# MongoDB Atlas Configuration
self.MONGODB_URI = os.getenv("MONGODB_URI")
self.MONGODB_DATABASE = os.getenv("MONGODB_DATABASE", "recipe_bot")
self.MONGODB_COLLECTION = os.getenv("MONGODB_COLLECTION", "recipes")
self.MONGODB_INDEX_NAME = os.getenv("MONGODB_INDEX_NAME", "vector_index")
self.MONGODB_VECTOR_FIELD = os.getenv("MONGODB_VECTOR_FIELD", "embedding")
self.MONGODB_TEXT_FIELD = os.getenv("MONGODB_TEXT_FIELD", "text")
self.MONGODB_SIMILARITY_METRIC = os.getenv("MONGODB_SIMILARITY_METRIC", "cosine")
self.MONGODB_NUM_CANDIDATES = int(os.getenv("MONGODB_NUM_CANDIDATES", "50"))
def get_vector_store_config(self):
"""Get vector store configuration based on selected provider"""
if self.VECTOR_STORE_PROVIDER == "chromadb":
return {
"provider": "chromadb",
"path": self.DB_PATH,
"collection_name": self.DB_COLLECTION_NAME,
"persist_directory": self.DB_PERSIST_DIRECTORY,
"refresh_on_start": self.DB_REFRESH_ON_START
}
elif self.VECTOR_STORE_PROVIDER == "mongodb":
if not self.MONGODB_URI:
raise ValueError("MongoDB URI is required when using MongoDB Atlas as vector store")
return {
"provider": "mongodb",
"uri": self.MONGODB_URI,
"database": self.MONGODB_DATABASE,
"collection_name": self.MONGODB_COLLECTION,
"index_name": self.MONGODB_INDEX_NAME,
"vector_field": self.MONGODB_VECTOR_FIELD,
"text_field": self.MONGODB_TEXT_FIELD,
"similarity_metric": self.MONGODB_SIMILARITY_METRIC,
"num_candidates": self.MONGODB_NUM_CANDIDATES
}
else:
raise ValueError(f"Unsupported vector store provider: {self.VECTOR_STORE_PROVIDER}")
# Create global database settings instance
db_settings = DatabaseSettings()