Spaces:
Running
Running
File size: 1,595 Bytes
c3674d7 | 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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | """
Abstract Session Store Interface
Defines the contract for all database implementations
"""
from abc import ABC, abstractmethod
from typing import Dict, Any, Optional
class SessionStore(ABC):
"""Abstract base class for session storage backends"""
@abstractmethod
async def create_session(self, session_id: str, session_data: Dict[str, Any]) -> Dict[str, Any]:
"""
Create a new session
Args:
session_id: Unique session identifier
session_data: Initial session data
Returns:
Created session data with timestamps
"""
pass
@abstractmethod
async def get_session(self, session_id: str) -> Optional[Dict[str, Any]]:
"""
Retrieve a session by ID
Args:
session_id: Session identifier
Returns:
Session data or None if not found
"""
pass
@abstractmethod
async def update_session(self, session_id: str, updates: Dict[str, Any]) -> bool:
"""
Update session data
Args:
session_id: Session identifier
updates: Partial update data
Returns:
True if successful, False otherwise
"""
pass
@abstractmethod
async def delete_session(self, session_id: str) -> bool:
"""
Delete a session
Args:
session_id: Session identifier
Returns:
True if deleted, False if not found
"""
pass
|