PascalZhan's picture
Synchronisation Frontend DracolIA QA
d72e3a5
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
"""
### SELECT 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()
### DELETE REQUESTS
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()
### UPDATE REQUESTS
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()
### INSERT REQUESTS
def insert_user(self, username, password):
self.cursor.execute("INSERT INTO users (username, password) VALUES (?, ?)", (username, password))
self.conn.commit()
### CUSTOM REQUESTS
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
"""
### SELECT 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()
### DELETE REQUESTS
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()
### UPDATE REQUESTS
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()
### INSERT REQUESTS
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
### CUSTOM REQUESTS
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
"""
### SELECT 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()
### DELETE REQUESTS
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()
### UPDATE REQUESTS
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()
### INSERT REQUESTS
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()