|
import sqlite3 |
|
|
|
class Database: |
|
|
|
db_name = "./database.db" |
|
|
|
def __init__(self): |
|
self.conn = sqlite3.connect(self.db_name) |
|
self.cursor = self.conn.cursor() |
|
|
|
self.cursor.execute(''' |
|
CREATE TABLE IF NOT EXISTS users ( |
|
user_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, |
|
username TEXT NOT NULL, |
|
password TEXT NOT NULL |
|
) |
|
''' |
|
) |
|
|
|
self.cursor.execute(''' |
|
CREATE TABLE IF NOT EXISTS chat ( |
|
chat_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, |
|
user_id INTEGER NOT NULL, |
|
chat_title TEXT NOT NULL, |
|
chat_file_content TEXT, |
|
chat_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, |
|
chat_model TEXT NOT NULL, |
|
FOREIGN KEY (user_id) REFERENCES users(user_id) |
|
) |
|
''' |
|
) |
|
|
|
self.cursor.execute(''' |
|
CREATE TABLE IF NOT EXISTS chat_message( |
|
chat_id INTEGER NOT NULL, |
|
chat_message_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, |
|
chat_message TEXT NOT NULL, |
|
chat_message_is_ia BOOLEAN NOT NULL, |
|
chat_message_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, |
|
FOREIGN KEY (chat_id) REFERENCES chat(chat_id) |
|
) |
|
''' |
|
) |
|
|
|
|
|
|
|
""" |
|
|
|
USER TABLE REQUESTS |
|
|
|
""" |
|
|
|
def select_user_by_name(self, username): |
|
self.cursor.execute('SELECT user_id, username, password FROM users WHERE username = ?', (username,)) |
|
return self.cursor.fetchone() |
|
|
|
def select_user_by_id(self, user_id): |
|
self.cursor.execute('SELECT user_id, username, password FROM users WHERE user_id = ?', (user_id,)) |
|
return self.cursor.fetchone() |
|
|
|
|
|
def delete_user_by_name(self, username): |
|
self.cursor.execute('DELETE FROM users WHERE username = ?', (username,)) |
|
self.conn.commit() |
|
|
|
def delete_user_by_id(self, user_id): |
|
self.cursor.execute('DELETE FROM users WHERE user_id = ?', (user_id,)) |
|
self.conn.commit() |
|
|
|
|
|
def update_user_username_by_id(self, user_id, username): |
|
self.cursor.execute('UPDATE users SET username = ? WHERE user_id = ?', (username, user_id)) |
|
self.conn.commit() |
|
|
|
def update_user_password_by_id(self, user_id, password): |
|
self.cursor.execute('UPDATE users SET password = ? WHERE user_id = ?', (password, user_id)) |
|
self.conn.commit() |
|
|
|
def update_user_password_by_name(self, username, password): |
|
self.cursor.execute('UPDATE users SET password = ? WHERE username = ?', (password, username)) |
|
self.conn.commit() |
|
|
|
def update_user_username_by_id(self, user_id, username): |
|
self.cursor.execute('UPDATE users SET username = ? WHERE user_id = ?', (username, user_id)) |
|
self.conn.commit() |
|
|
|
|
|
def insert_user(self, username, password): |
|
self.cursor.execute("INSERT INTO users (username, password) VALUES (?, ?)", (username, password)) |
|
self.conn.commit() |
|
|
|
|
|
def user_exists(self, username): |
|
self.cursor.execute('SELECT user_id FROM users WHERE username = ?', (username,)) |
|
exists = self.cursor.fetchone() is not None |
|
return exists |
|
|
|
|
|
|
|
|
|
""" |
|
|
|
Chat TABLE REQUESTS |
|
|
|
""" |
|
|
|
def select_chat_by_id(self, chat_id): |
|
self.cursor.execute('SELECT chat_id, user_id, chat_title, chat_file_content, chat_date, chat_model FROM chat WHERE chat_id = ?', (chat_id,)) |
|
return self.cursor.fetchone() |
|
|
|
def select_chat_by_user_id(self, user_id): |
|
self.cursor.execute('SELECT chat_id, user_id, chat_title, chat_file_content, chat_date, chat_model FROM chat WHERE user_id = ?', (user_id,)) |
|
return self.cursor.fetchall() |
|
|
|
def select_chat_by_title(self, chat_title): |
|
self.cursor.execute('SELECT chat_id, user_id, chat_title, chat_file_content, chat_date, chat_model FROM chat WHERE chat_title = ?', (chat_title,)) |
|
return self.cursor.fetchone() |
|
|
|
|
|
def delete_chat_by_id(self, chat_id): |
|
self.cursor.execute('DELETE FROM chat WHERE chat_id = ?', (chat_id,)) |
|
self.conn.commit() |
|
|
|
def delete_chat_by_user_id(self, user_id): |
|
self.cursor.execute('DELETE FROM chat WHERE user_id = ?', (user_id,)) |
|
self.conn.commit() |
|
|
|
def delete_chat_by_title(self, chat_title): |
|
self.cursor.execute('DELETE FROM chat WHERE chat_title = ?', (chat_title,)) |
|
self.conn.commit() |
|
|
|
|
|
def update_chat_title_by_id(self, chat_id, chat_title): |
|
self.cursor.execute('UPDATE chat SET chat_title = ? WHERE chat_id = ?', (chat_title, chat_id)) |
|
self.conn.commit() |
|
|
|
def update_chat_title_by_user_id(self, user_id, chat_title): |
|
self.cursor.execute('UPDATE chat SET chat_title = ? WHERE user_id = ?', (chat_title, user_id)) |
|
self.conn.commit() |
|
|
|
def update_chat_title_by_title(self, chat_title, new_chat_title): |
|
self.cursor.execute('UPDATE chat SET chat_title = ? WHERE chat_title = ?', (new_chat_title, chat_title)) |
|
self.conn.commit() |
|
|
|
|
|
def insert_chat(self, user_id, chat_title, chat_file_content, chat_model): |
|
self.cursor.execute("INSERT INTO chat (user_id, chat_title, chat_file_content, chat_date, chat_model) VALUES (?, ?, ?, datetime('now'), ?) RETURNING chat_id", (user_id, chat_title, chat_file_content, chat_model)) |
|
chat_id = self.cursor.fetchone()[0] |
|
self.conn.commit() |
|
return chat_id |
|
|
|
|
|
def select_chat_by_id_and_user_id(self, chat_id, user_id): |
|
self.cursor.execute('SELECT chat_id, user_id, chat_title, chat_file_content, chat_date, chat_model FROM chat WHERE chat_id = ? AND user_id = ?', (chat_id, user_id)) |
|
return self.cursor.fetchone() |
|
|
|
def select_all_user_chats(self, user_id): |
|
self.cursor.execute('SELECT chat_id, chat_title, chat_file_content, chat_date, chat_model FROM chat WHERE user_id = ?', (user_id,)) |
|
return self.cursor.fetchall() |
|
|
|
def delete_chat_by_id_and_by_user_id(self, chat_id, user_id): |
|
self.cursor.execute('DELETE FROM chat WHERE chat_id = ? AND user_id = ?', (chat_id, user_id)) |
|
self.conn.commit() |
|
|
|
def update_chat_file_content_by_id(self, chat_id, chat_file_content): |
|
self.cursor.execute('UPDATE chat SET chat_file_content = ? WHERE chat_id = ?', (chat_file_content, chat_id)) |
|
self.conn.commit() |
|
|
|
|
|
|
|
""" |
|
|
|
chat_message TABLE REQUESTS |
|
|
|
""" |
|
|
|
def select_chat_message_by_chat_id(self, chat_id): |
|
self.cursor.execute('SELECT chat_id, chat_message_id, chat_message, chat_message_is_ia, chat_message_date FROM chat_message WHERE chat_id = ?', (chat_id,)) |
|
return self.cursor.fetchall() |
|
|
|
def select_chat_message_by_chat_message_id(self, chat_message_id): |
|
self.cursor.execute('SELECT chat_id, chat_message_id, chat_message, chat_message_is_ia, chat_message_date FROM chat_message WHERE chat_message_id = ?', (chat_message_id,)) |
|
return self.cursor.fetchone() |
|
|
|
def select_chat_message_by_chat_message(self, chat_message): |
|
self.cursor.execute('SELECT chat_id, chat_message_id, chat_message, chat_message_is_ia, chat_message_date FROM chat_message WHERE chat_message = ?', (chat_message,)) |
|
return self.cursor.fetchone() |
|
|
|
|
|
def delete_chat_message_by_chat_id(self, chat_id): |
|
self.cursor.execute('DELETE FROM chat_message WHERE chat_id = ?', (chat_id,)) |
|
self.conn.commit() |
|
|
|
def delete_chat_message_by_chat_message_id(self, chat_message_id): |
|
self.cursor.execute('DELETE FROM chat_message WHERE chat_message_id = ?', (chat_message_id,)) |
|
self.conn.commit() |
|
|
|
def delete_chat_message_by_chat_message(self, chat_message): |
|
self.cursor.execute('DELETE FROM chat_message WHERE chat_message = ?', (chat_message,)) |
|
self.conn.commit() |
|
|
|
|
|
def update_chat_message_by_chat_message_id(self, chat_message_id, chat_message): |
|
self.cursor.execute('UPDATE chat_message SET chat_message = ? WHERE chat_message_id = ?', (chat_message, chat_message_id)) |
|
self.conn.commit() |
|
|
|
def update_chat_message_by_chat_message(self, chat_message, new_chat_message): |
|
self.cursor.execute('UPDATE chat_message SET chat_message = ? WHERE chat_message = ?', (new_chat_message, chat_message)) |
|
self.conn.commit() |
|
|
|
|
|
def insert_chat_message(self, chat_id, chat_message, chat_message_is_ia): |
|
self.cursor.execute('INSERT INTO chat_message (chat_id, chat_message, chat_message_is_ia) VALUES (?, ?, ?)', (chat_id, chat_message, chat_message_is_ia)) |
|
self.conn.commit() |
|
|
|
def select_chat_message_by_chat_id_and_user_id(self, chat_id, user_id): |
|
self.cursor.execute('SELECT chat_message_id, chat_message, chat_message_is_ia, chat_message_date FROM chat_message JOIN chat ON chat_message.chat_id = chat.chat_id WHERE chat_message.chat_id = ? AND chat.user_id = ?', (chat_id, user_id)) |
|
return self.cursor.fetchall() |
|
|
|
|
|
|
|
def begin_transaction(self): |
|
self.conn.execute('BEGIN') |
|
|
|
def commit_transaction(self): |
|
self.conn.commit() |
|
|
|
def rollback_transaction(self): |
|
self.conn.rollback() |
|
|
|
def close(self): |
|
self.conn.close() |