# 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()