Spaces:
Runtime error
Runtime error
File size: 2,310 Bytes
0bd6c51 |
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 66 67 68 69 70 71 72 73 74 |
# storage/fallback_storage.py
import streamlit as st
from datetime import datetime
class FallbackStorageManager:
"""Fallback storage using Streamlit session state when persistent storage isn't available"""
@staticmethod
def init_session_storage():
"""Initialize session storage"""
if 'fallback_storage' not in st.session_state:
st.session_state.fallback_storage = {
'chats': [],
'images': {},
'context': {}
}
@staticmethod
def save_chat(chat_data, images=None):
"""Save chat to session state"""
FallbackStorageManager.init_session_storage()
chat_id = f"chat_{datetime.now().strftime('%Y%m%d_%H%M%S')}"
# Store chat data
chat_data['id'] = chat_id
st.session_state.fallback_storage['chats'].append(chat_data)
# Store images
if images:
st.session_state.fallback_storage['images'][chat_id] = images
return chat_id
@staticmethod
def get_all_chats():
"""Get all chats from session state"""
FallbackStorageManager.init_session_storage()
return sorted(
st.session_state.fallback_storage['chats'],
key=lambda x: x.get('timestamp', ''),
reverse=True
)
@staticmethod
def get_chat(chat_id):
"""Get specific chat with images"""
FallbackStorageManager.init_session_storage()
# Find chat
chat = next(
(chat for chat in st.session_state.fallback_storage['chats']
if chat.get('id') == chat_id),
None
)
if chat:
# Add images if they exist
chat['images'] = st.session_state.fallback_storage['images'].get(chat_id, [])
return chat
@staticmethod
def save_context(context_data):
"""Save context to session state"""
FallbackStorageManager.init_session_storage()
st.session_state.fallback_storage['context'] = context_data
@staticmethod
def get_context():
"""Get context from session state"""
FallbackStorageManager.init_session_storage()
return st.session_state.fallback_storage.get('context') |