pipeline/pipelineUtils/db.py (38 lines of code) (raw):

# backendUtils/db.py import os import logging import json from azure.cosmos import CosmosClient, PartitionKey, exceptions from azure.identity import DefaultAzureCredential # Set up logging logging.basicConfig(level=logging.INFO) from configuration import Configuration config = Configuration() # Retrieve Cosmos DB settings from environment variables COSMOS_DB_URI = config.get_value("COSMOS_DB_URI") COSMOS_DB_DATABASE = config.get_value("COSMOS_DB_PROMPTS_DB") COSMOS_DB_PROMPTS_CONTAINER = config.get_value("COSMOS_DB_PROMPTS_CONTAINER") COSMOS_DB_CONFIG_CONTAINER = config.get_value("COSMOS_DB_CONFIG_CONTAINER") # Initialize Cosmos DB client using Managed Identity credentials # DefaultAzureCredential will use the managed identity assigned to your Function App. def get_prompt_by_id(prompt_id: str): """ Retrieve a prompt document by its ID from the prompts container. """ client = CosmosClient(COSMOS_DB_URI, credential=config.credential) database = client.get_database_client(COSMOS_DB_DATABASE) prompts_container = database.get_container_client(COSMOS_DB_PROMPTS_CONTAINER) try: item = prompts_container.read_item( item=prompt_id, partition_key=prompt_id ) return item except exceptions.CosmosHttpResponseError as e: logging.error(f"Error retrieving prompt {prompt_id}: {str(e)}") return None def get_live_prompt_id(): """ Retrieve the live prompt ID from the configuration container. Assumes a document with id 'live_prompt_config' exists. """ client = CosmosClient(COSMOS_DB_URI, credential=config.credential) database = client.get_database_client(COSMOS_DB_DATABASE) config_container = database.get_container_client(COSMOS_DB_CONFIG_CONTAINER) try: config_item = config_container.read_item( item="live_prompt_config", partition_key="live_prompt_config" ) return config_item.get("prompt_id") except Exception as e: logging.error(f"Error retrieving live prompt config: {str(e)}") return None