File size: 9,634 Bytes
d72e3a5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
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()