Stock_Agent_optimized / storage /fallback_storage.py
cryogenic22's picture
Create storage/fallback_storage.py
0bd6c51 verified
# 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')