import os

from dotenv import load_dotenv
from morphik import Morphik

# Load environment variables
load_dotenv()

# Connect to Morphik
db = Morphik(os.getenv("MORPHIK_URI"), timeout=10000, is_local=True)

print("========== Customer Support Example ==========")
# Create a folder for application data
app_folder = db.create_folder("customer-support")
print(f"Created folder: {app_folder.name}")

# Ingest documents into the folder
folder_doc = app_folder.ingest_text(
    "Customer reported an issue with login functionality. Steps to reproduce: "
    "1. Go to login page, 2. Enter credentials, 3. Click login button.",
    filename="ticket-001.txt",
    metadata={"category": "bug", "priority": "high", "status": "open"},
)
print(f"Ingested document into folder: {folder_doc.external_id}")

# Perform a query in the folder context
folder_response = app_folder.query("What issues have been reported?", k=2)
print("\nFolder Query Results:")
print(folder_response.completion)

# Get statistics for the folder
folder_docs = app_folder.list_documents()
print(f"\nFolder Statistics: {len(folder_docs)} documents in '{app_folder.name}'")

print("\n========== User Scoping Example ==========")
# Create a user scope
user_email = "support@example.com"
user = db.signin(user_email)
print(f"Created user scope for: {user.end_user_id}")

# Ingest a document as this user
user_doc = user.ingest_text(
    "User requested information about premium features. They are interested in the collaboration tools.",
    filename="inquiry-001.txt",
    metadata={"category": "inquiry", "priority": "medium", "status": "open"},
)
print(f"Ingested document as user: {user_doc.external_id}")

# Query as this user
user_response = user.query("What customer inquiries do we have?", k=2)
print("\nUser Query Results:")
print(user_response.completion)

# Get documents for this user
user_docs = user.list_documents()
print(f"\nUser Statistics: {len(user_docs)} documents for user '{user.end_user_id}'")

print("\n========== Combined Folder and User Scoping ==========")
# Create a user scoped to a specific folder
folder_user = app_folder.signin(user_email)
print(f"Created user scope for {folder_user.end_user_id} in folder {folder_user.folder_name}")

# Ingest a document as this user in the folder context
folder_user_doc = folder_user.ingest_text(
    "Customer called to follow up on ticket-001. They are still experiencing the login issue on Chrome.",
    filename="ticket-002.txt",
    metadata={"category": "follow-up", "priority": "high", "status": "open"},
)
print(f"Ingested document as user in folder: {folder_user_doc.external_id}")

# Query as this user in the folder context
folder_user_response = folder_user.query("What high priority issues require attention?", k=2)
print("\nFolder User Query Results:")
print(folder_user_response.completion)
