Example-example / db_utils.py
AkshayHuggingFace's picture
Telegram bot
f2c1750 verified
raw
history blame
2.72 kB
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 ❌'