File size: 2,721 Bytes
f2c1750
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
75
76
77
78
79
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 ❌'