Spaces:
Runtime error
Runtime error
| # 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""" | |
| def init_session_storage(): | |
| """Initialize session storage""" | |
| if 'fallback_storage' not in st.session_state: | |
| st.session_state.fallback_storage = { | |
| 'chats': [], | |
| 'images': {}, | |
| 'context': {} | |
| } | |
| 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 | |
| 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 | |
| ) | |
| 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 | |
| def save_context(context_data): | |
| """Save context to session state""" | |
| FallbackStorageManager.init_session_storage() | |
| st.session_state.fallback_storage['context'] = context_data | |
| def get_context(): | |
| """Get context from session state""" | |
| FallbackStorageManager.init_session_storage() | |
| return st.session_state.fallback_storage.get('context') |