File size: 1,978 Bytes
06cb2a3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
"""
This module initializes the Neo4j graph connection without Streamlit dependencies.
"""

import os
from dotenv import load_dotenv
from langchain_neo4j import Neo4jGraph

# Load environment variables
load_dotenv()

# Get Neo4j credentials from environment
def get_credential(key_name):
    """Get credential from environment variables"""
    # Try different possible environment variable names
    possible_names = [key_name]
    
    # Add alternative names
    if key_name.startswith("AURA_"):
        possible_names.append(f"NEO4J_{key_name[5:]}")
    elif key_name.startswith("NEO4J_"):
        possible_names.append(f"AURA_{key_name[6:]}")
    
    # Try each possible name
    for name in possible_names:
        value = os.environ.get(name)
        if value:
            return value
    
    return None

# Get Neo4j credentials
AURA_CONNECTION_URI = get_credential("AURA_CONNECTION_URI") or get_credential("NEO4J_URI")
AURA_USERNAME = get_credential("AURA_USERNAME") or get_credential("NEO4J_USERNAME")
AURA_PASSWORD = get_credential("AURA_PASSWORD") or get_credential("NEO4J_PASSWORD")

# Check if credentials are available
if not all([AURA_CONNECTION_URI, AURA_USERNAME, AURA_PASSWORD]):
    missing = []
    if not AURA_CONNECTION_URI:
        missing.append("AURA_CONNECTION_URI/NEO4J_URI")
    if not AURA_USERNAME:
        missing.append("AURA_USERNAME/NEO4J_USERNAME")
    if not AURA_PASSWORD:
        missing.append("AURA_PASSWORD/NEO4J_PASSWORD")
    
    error_message = f"Missing Neo4j credentials: {', '.join(missing)}"
    print(f"ERROR: {error_message}")
    raise ValueError(error_message)

# Connect to Neo4j
try:
    graph = Neo4jGraph(
        url=AURA_CONNECTION_URI,
        username=AURA_USERNAME,
        password=AURA_PASSWORD,
    )
    print("Successfully connected to Neo4j database")
except Exception as e:
    error_message = f"Failed to connect to Neo4j: {str(e)}"
    print(f"ERROR: {error_message}")
    raise Exception(error_message)