Spaces:
Running
Running
Download database/memory_store.py from ashmib/trace-crs-chatbot: direct link, hf CLI and curl.
- Browser
- Download file 2.1 kB
-
https://huggingface.co/spaces/ashmib/trace-crs-chatbot/resolve/main/database/memory_store.py
- Command line
-
hf download hf://spaces/ashmib/trace-crs-chatbot/database/memory_store.py
-
curl -L -o memory_store.py https://huggingface.co/spaces/ashmib/trace-crs-chatbot/resolve/main/database/memory_store.py
2.1 kB
| """ | |
| In-memory fallback stores used when Firestore credentials are not configured. | |
| Data lives only for the lifetime of the process — suitable for demo/conference use. | |
| """ | |
| from typing import Any, Dict, Optional | |
| from datetime import datetime | |
| from .session_store import SessionStore | |
| # Module-level dicts shared across all store instances (process-scoped) | |
| _sessions: Dict[str, Dict[str, Any]] = {} | |
| _conversations: Dict[str, Dict[str, Any]] = {} | |
| class MemorySessionStore(SessionStore): | |
| async def create_session(self, session_id: str, session_data: Dict[str, Any]) -> Dict[str, Any]: | |
| now = datetime.now().isoformat() | |
| record = {**session_data, "id": session_id, "created_at": now, "last_activity": now} | |
| _sessions[session_id] = record | |
| return record | |
| async def get_session(self, session_id: str) -> Optional[Dict[str, Any]]: | |
| return _sessions.get(session_id) | |
| async def update_session(self, session_id: str, updates: Dict[str, Any]) -> bool: | |
| existing = _sessions.get(session_id, {}) | |
| existing.update(updates) | |
| existing["last_activity"] = datetime.now().isoformat() | |
| _sessions[session_id] = existing | |
| return True | |
| async def delete_session(self, session_id: str) -> bool: | |
| _sessions.pop(session_id, None) | |
| return True | |
| class MemoryConversationStore: | |
| async def create_conversation(self, session_id: str, data: Dict[str, Any]) -> Dict[str, Any]: | |
| now = datetime.now().isoformat() | |
| record = {**data, "session_id": session_id, "created_at": now, "updated_at": now} | |
| _conversations[session_id] = record | |
| return record | |
| async def get_conversation(self, session_id: str) -> Optional[Dict[str, Any]]: | |
| return _conversations.get(session_id) | |
| async def update_conversation(self, session_id: str, updates: Dict[str, Any]) -> bool: | |
| existing = _conversations.get(session_id, {"session_id": session_id}) | |
| existing.update(updates) | |
| existing["updated_at"] = datetime.now().isoformat() | |
| _conversations[session_id] = existing | |
| return True | |