File size: 846 Bytes
0eec92d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
from motor.motor_asyncio import AsyncIOMotorClient
from ..core import config

client: AsyncIOMotorClient | None = None

def get_client() -> AsyncIOMotorClient:
    global client
    if client is None:
        client = AsyncIOMotorClient(config.MONGODB_URI)
    return client

async def get_db():
    return get_client().get_default_database()

async def ensure_indexes():
    db = await get_db()
    # Users: unique email
    await db.users.create_index("email", unique=True)
    # Documents: owner_id for quick lookups
    await db.documents.create_index("owner_id")
    # Sessions: owner_id + name
    await db.sessions.create_index([("owner_id", 1), ("name", 1)], unique=True)
    # Messages: owner_id + session_id ordered by time
    await db.messages.create_index([("owner_id", 1), ("session_id", 1), ("ts", 1)])