bug fix/install scripts
This commit is contained in:
32
database.py
32
database.py
@@ -44,24 +44,24 @@ class Database:
|
||||
|
||||
# Characters table
|
||||
self.cursor.execute('''
|
||||
CREATE TABLE IF NOT EXISTS characters (
|
||||
CREATE TABLE IF NOT EXISTS `characters` (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
user_id BIGINT NOT NULL,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
trigger VARCHAR(100) NOT NULL,
|
||||
`trigger` VARCHAR(100) NOT NULL,
|
||||
avatar_url TEXT,
|
||||
description TEXT,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
last_used TIMESTAMP NULL,
|
||||
FOREIGN KEY (user_id) REFERENCES users(user_id),
|
||||
UNIQUE KEY unique_user_trigger (user_id, trigger)
|
||||
UNIQUE KEY unique_user_trigger (user_id, `trigger`)
|
||||
)
|
||||
''')
|
||||
|
||||
# Index for fast trigger lookups
|
||||
self.cursor.execute('''
|
||||
CREATE INDEX IF NOT EXISTS idx_user_trigger
|
||||
ON characters(user_id, trigger)
|
||||
ON `characters`(user_id, `trigger`)
|
||||
''')
|
||||
|
||||
self.connection.commit()
|
||||
@@ -80,7 +80,7 @@ class Database:
|
||||
|
||||
try:
|
||||
self.cursor.execute(
|
||||
'SELECT * FROM characters WHERE user_id = %s AND trigger = %s',
|
||||
'SELECT * FROM `characters` WHERE user_id = %s AND `trigger` = %s',
|
||||
(user_id, trigger)
|
||||
)
|
||||
result = self.cursor.fetchone()
|
||||
@@ -97,7 +97,7 @@ class Database:
|
||||
async def get_character_by_id(self, char_id):
|
||||
"""Get character by ID"""
|
||||
try:
|
||||
self.cursor.execute('SELECT * FROM characters WHERE id = %s', (char_id,))
|
||||
self.cursor.execute('SELECT * FROM `characters` WHERE id = %s', (char_id,))
|
||||
return self.cursor.fetchone()
|
||||
except Error as e:
|
||||
logger.error(f'Get character by ID error: {e}')
|
||||
@@ -114,8 +114,8 @@ class Database:
|
||||
|
||||
# Insert character
|
||||
self.cursor.execute(
|
||||
'''INSERT INTO characters
|
||||
(user_id, name, trigger, avatar_url, description)
|
||||
'''INSERT INTO `characters`
|
||||
(user_id, name, `trigger`, avatar_url, description)
|
||||
VALUES (%s, %s, %s, %s, %s)''',
|
||||
(user_id, name, trigger, avatar_url, description)
|
||||
)
|
||||
@@ -135,7 +135,7 @@ class Database:
|
||||
"""Get all characters for a user"""
|
||||
try:
|
||||
self.cursor.execute(
|
||||
'SELECT * FROM characters WHERE user_id = %s ORDER BY created_at DESC',
|
||||
'SELECT * FROM `characters` WHERE user_id = %s ORDER BY created_at DESC',
|
||||
(user_id,)
|
||||
)
|
||||
return self.cursor.fetchall()
|
||||
@@ -153,14 +153,14 @@ class Database:
|
||||
return False
|
||||
|
||||
# Get old trigger for cache clearing
|
||||
self.cursor.execute('SELECT user_id, trigger FROM characters WHERE id = %s', (char_id,))
|
||||
self.cursor.execute('SELECT user_id, `trigger` FROM `characters` WHERE id = %s', (char_id,))
|
||||
old_char = self.cursor.fetchone()
|
||||
|
||||
set_clause = ', '.join([f'{k} = %s' for k in updates.keys()])
|
||||
set_clause = ', '.join([f'`{k}` = %s' if k == 'trigger' else f'{k} = %s' for k in updates.keys()])
|
||||
values = list(updates.values()) + [char_id]
|
||||
|
||||
self.cursor.execute(
|
||||
f'UPDATE characters SET {set_clause} WHERE id = %s',
|
||||
f'UPDATE `characters` SET {set_clause} WHERE id = %s',
|
||||
values
|
||||
)
|
||||
self.connection.commit()
|
||||
@@ -186,10 +186,10 @@ class Database:
|
||||
"""Delete a character"""
|
||||
try:
|
||||
# Get character info for cache clearing
|
||||
self.cursor.execute('SELECT user_id, trigger FROM characters WHERE id = %s', (char_id,))
|
||||
self.cursor.execute('SELECT user_id, `trigger` FROM `characters` WHERE id = %s', (char_id,))
|
||||
char = self.cursor.fetchone()
|
||||
|
||||
self.cursor.execute('DELETE FROM characters WHERE id = %s', (char_id,))
|
||||
self.cursor.execute('DELETE FROM `characters` WHERE id = %s', (char_id,))
|
||||
self.connection.commit()
|
||||
|
||||
# Clear cache
|
||||
@@ -207,7 +207,7 @@ class Database:
|
||||
"""Update last_used timestamp for a character"""
|
||||
try:
|
||||
self.cursor.execute(
|
||||
'UPDATE characters SET last_used = NOW() WHERE id = %s',
|
||||
'UPDATE `characters` SET last_used = NOW() WHERE id = %s',
|
||||
(char_id,)
|
||||
)
|
||||
self.connection.commit()
|
||||
@@ -220,7 +220,7 @@ class Database:
|
||||
"""Check if trigger is available for a user"""
|
||||
try:
|
||||
self.cursor.execute(
|
||||
'SELECT id FROM characters WHERE user_id = %s AND trigger = %s',
|
||||
'SELECT id FROM `characters` WHERE user_id = %s AND `trigger` = %s',
|
||||
(user_id, trigger)
|
||||
)
|
||||
return self.cursor.fetchone() is None
|
||||
|
||||
Reference in New Issue
Block a user