Spaces:
Sleeping
Sleeping
| from sqlalchemy import create_engine, Column, Integer, String, DateTime | |
| from sqlalchemy.orm import sessionmaker, declarative_base | |
| from datetime import datetime | |
| Base = declarative_base() | |
| class ChatMessage(Base): | |
| __tablename__ = "chat_messages" | |
| id = Column(Integer, primary_key=True, index=True) | |
| user_id = Column(String, index=True) | |
| role = Column(String) # "user" or "bot" | |
| message = Column(String) | |
| timestamp = Column(DateTime, default=datetime.utcnow) | |
| class Task(Base): | |
| __tablename__ = "tasks" | |
| id = Column(Integer, primary_key=True, index=True) | |
| user_id = Column(String, index=True) | |
| name = Column(String) | |
| timestamp = Column(DateTime, default=datetime.utcnow) | |
| engine = create_engine("sqlite:///tasks.db", echo=False) | |
| SessionLocal = sessionmaker(bind=engine) | |
| def init_db(): | |
| Base.metadata.create_all(bind=engine) | |
| def save_message(user_id, role, message): | |
| session = SessionLocal() | |
| msg = ChatMessage(user_id=user_id, role=role, message=message) | |
| session.add(msg) | |
| session.commit() | |
| session.close() | |
| def load_chat_history(user_id, limit=5): | |
| session = SessionLocal() | |
| messages = session.query(ChatMessage).filter_by(user_id=user_id).order_by(ChatMessage.timestamp.desc()).limit(limit).all() | |
| session.close() | |
| return reversed(messages) | |
| # --- Task DB functions --- | |
| def add_task_db(user_id, task_name): | |
| session = SessionLocal() | |
| task = Task(user_id=user_id, name=task_name) | |
| session.add(task) | |
| session.commit() | |
| session.close() | |
| return f'Task "{task_name}" added successfully β ' | |
| def list_tasks_db(user_id): | |
| session = SessionLocal() | |
| tasks = session.query(Task).filter_by(user_id=user_id).order_by(Task.timestamp.asc()).all() | |
| session.close() | |
| if not tasks: | |
| return "No tasks found." | |
| return "Your Tasks:\n" + "\n".join([f"{i+1}. {t.name}" for i, t in enumerate(tasks)]) | |
| def edit_task_db(user_id, old_name, new_name): | |
| session = SessionLocal() | |
| task = session.query(Task).filter_by(user_id=user_id, name=old_name).first() | |
| if task: | |
| task.name = new_name | |
| session.commit() | |
| session.close() | |
| return f'Task "{old_name}" updated to "{new_name}" β ' | |
| session.close() | |
| return f'Task "{old_name}" not found β' | |
| def delete_task_db(user_id, task_name): | |
| session = SessionLocal() | |
| task = session.query(Task).filter_by(user_id=user_id, name=task_name).first() | |
| if task: | |
| session.delete(task) | |
| session.commit() | |
| session.close() | |
| return f'Task "{task_name}" deleted successfully ποΈ' | |
| session.close() | |
| return f'Task "{task_name}" not found β' | |