| import sqlite3 |
| import hashlib |
| import uuid |
| |
| def hash_password(password): |
| return hashlib.sha256(password.encode()).hexdigest() |
| |
| def authenticate_user(username, password): |
| conn = init_db() |
| hashed_password = hash_password(password) |
| |
| |
| user = conn.execute('SELECT * FROM users WHERE username = ? AND password = ?', (username, hashed_password)).fetchone() |
| |
| if user: |
| |
| session_id = str(uuid.uuid4()) |
| conn.execute('UPDATE users SET session_id = ? WHERE id = ?', (session_id, user[0])) |
| conn.commit() |
| conn.close() |
| return session_id |
| conn.close() |
| return None |
| |
| def register_user(username, password): |
| conn = init_db() |
| hashed_password = hash_password(password) |
| try: |
| conn.execute('INSERT INTO users (username, password) VALUES (?, ?)', (username, hashed_password)) |
| conn.commit() |
| conn.close() |
| return "User registered successfully!" |
| except sqlite3.IntegrityError: |
| return "Username already exists." |
| |
| def get_user_by_session(session_id): |
| conn = init_db() |
| result = conn.execute('SELECT id FROM users WHERE session_id = ?', (session_id,)).fetchone() |
| conn.close() |
| if result is not None: |
| user_id = result[0] |
| return user_id |
| else: |
| return None |
| |
| def log_chat(user_id, session_id, message, response): |
| conn = init_db() |
| conn.execute( |
| 'INSERT INTO chat_logs (user_id, session_id, message, response) VALUES (?, ?, ?, ?)', |
| (user_id, session_id, message, response) |
| ) |
| conn.commit() |
| conn.close() |
| |
| def get_chat_history(session_id): |
| conn = init_db() |
| logs = conn.execute('SELECT message, response, timestamp FROM chat_logs WHERE session_id = ?', (session_id,)).fetchall() |
| conn.close() |
| return logs |
| def init_db(): |
| conn = sqlite3.connect('chat_logs.db') |
| return conn |
| |
| def create_tables(): |
| conn = init_db() |
| |
| conn.execute(''' |
| CREATE TABLE IF NOT EXISTS users ( |
| id INTEGER PRIMARY KEY AUTOINCREMENT, |
| username TEXT UNIQUE NOT NULL, |
| password TEXT NOT NULL, |
| session_id TEXT |
| ) |
| ''') |
| |
| |
| conn.execute(''' |
| CREATE TABLE IF NOT EXISTS chat_logs ( |
| id INTEGER PRIMARY KEY AUTOINCREMENT, |
| user_id INTEGER, |
| session_id TEXT, |
| message TEXT, |
| response TEXT, |
| timestamp TEXT, |
| FOREIGN KEY (user_id) REFERENCES users(id) |
| ) |
| ''') |
| conn.commit() |
| conn.close() |
| if __name__ == "__main__": |
| create_tables() |
| print("Tables created successfully!") |