| import asyncio |
| from src.database import engine |
| from sqlalchemy import text |
| from src.config import get_settings |
| from qdrant_client import QdrantClient |
| from qdrant_client.models import Distance, VectorParams, PayloadSchemaType |
|
|
| async def main(): |
| async with engine.begin() as conn: |
| print('Wiping Postgres data natively...') |
| await conn.execute(text('DROP SCHEMA public CASCADE')) |
| await conn.execute(text('CREATE SCHEMA public')) |
| print('Postgres schema wiped.') |
|
|
| import qdrant_client |
| settings = get_settings() |
| try: |
| q = QdrantClient(url=settings.qdrant_url, api_key=settings.qdrant_api_key) |
| q.delete_collection(settings.collection_name) |
| q.create_collection( |
| collection_name=settings.collection_name, |
| vectors_config=VectorParams(size=settings.vector_size, distance=Distance.COSINE) |
| ) |
| |
| |
| q.create_payload_index( |
| collection_name=settings.collection_name, |
| field_name="session_id", |
| field_schema=PayloadSchemaType.KEYWORD |
| ) |
| q.create_payload_index( |
| collection_name=settings.collection_name, |
| field_name="years_of_experience", |
| field_schema=PayloadSchemaType.FLOAT |
| ) |
| print('Qdrant collection wiped and re-indexed.') |
| except Exception as e: |
| print('Qdrant error:', e) |
|
|
| print("\n------------------------------") |
| print("Database is completely purged but empty.") |
| print("WARNING: You MUST now run the following command to rebuild the tables:") |
| print(" alembic upgrade head") |
| print("------------------------------") |
|
|
| if __name__ == '__main__': |
| asyncio.run(main()) |
|
|