Tech Stack Advisor - Code Viewer

← Back to File Tree

add_qdrant_indexes.py

Language: python | Path: scripts/add_qdrant_indexes.py | Lines: 123
#!/usr/bin/env python3
"""Add field indexes to existing Qdrant collections."""
import sys
from pathlib import Path

# Add backend to path
backend_path = Path(__file__).parent.parent / "backend"
sys.path.insert(0, str(backend_path))

from src.core.user_memory import get_user_memory_store
from src.core.logging import setup_logging, get_logger

setup_logging()
logger = get_logger(__name__)


def add_indexes():
    """Add field indexes to existing collections."""
    print("\n" + "="*60)
    print("  Adding Field Indexes to Qdrant Collections")
    print("="*60)

    try:
        memory_store = get_user_memory_store()
        client = memory_store.client

        # Add indexes to users collection
        print("\nšŸ“Š Adding indexes to 'users' collection...")
        try:
            client.create_payload_index(
                collection_name="users",
                field_name="email",
                field_schema="keyword",
            )
            print("   āœ… Created index on 'email' field")
        except Exception as e:
            if "already exists" in str(e).lower():
                print("   āš ļø  Index on 'email' already exists")
            else:
                raise

        try:
            client.create_payload_index(
                collection_name="users",
                field_name="user_id",
                field_schema="keyword",
            )
            print("   āœ… Created index on 'user_id' field")
        except Exception as e:
            if "already exists" in str(e).lower():
                print("   āš ļø  Index on 'user_id' already exists")
            else:
                raise

        # Add indexes to user_queries collection
        print("\nšŸ“Š Adding indexes to 'user_queries' collection...")
        try:
            client.create_payload_index(
                collection_name="user_queries",
                field_name="user_id",
                field_schema="keyword",
            )
            print("   āœ… Created index on 'user_id' field")
        except Exception as e:
            if "already exists" in str(e).lower():
                print("   āš ļø  Index on 'user_id' already exists")
            else:
                raise

        try:
            client.create_payload_index(
                collection_name="user_queries",
                field_name="query_id",
                field_schema="keyword",
            )
            print("   āœ… Created index on 'query_id' field")
        except Exception as e:
            if "already exists" in str(e).lower():
                print("   āš ļø  Index on 'query_id' already exists")
            else:
                raise

        # Add indexes to user_feedback collection
        print("\nšŸ“Š Adding indexes to 'user_feedback' collection...")
        try:
            client.create_payload_index(
                collection_name="user_feedback",
                field_name="user_id",
                field_schema="keyword",
            )
            print("   āœ… Created index on 'user_id' field")
        except Exception as e:
            if "already exists" in str(e).lower():
                print("   āš ļø  Index on 'user_id' already exists")
            else:
                raise

        try:
            client.create_payload_index(
                collection_name="user_feedback",
                field_name="feedback_id",
                field_schema="keyword",
            )
            print("   āœ… Created index on 'feedback_id' field")
        except Exception as e:
            if "already exists" in str(e).lower():
                print("   āš ļø  Index on 'feedback_id' already exists")
            else:
                raise

        print("\nāœ… All indexes added successfully!")
        print("\n" + "="*60 + "\n")

    except Exception as e:
        print(f"\nāŒ Error: {e}")
        logger.error("index_creation_error", error=str(e))
        import traceback
        traceback.print_exc()
        sys.exit(1)


if __name__ == "__main__":
    add_indexes()