Исправление двойного ответа и улучшение системы
- Исправлен баг с двойным ответом в /getgamers (добавлена обработка ошибок) - Добавлена автоматическая миграция токенов при инициализации БД - Исправлен веб-интерфейс - теперь берет токены из user_gamers - Улучшен start.sh - создает бэкап базы перед перезапуском - Добавлен export_db.sh для экспорта базы данных - start.sh безопасно обновляет проект и сохраняет все данные
This commit is contained in:
parent
cbc5244240
commit
6cb5a9b99f
13 changed files with 186 additions and 11 deletions
|
|
@ -60,8 +60,49 @@ class Database:
|
|||
pass
|
||||
|
||||
conn.commit()
|
||||
|
||||
# Migrate tokens from gamers to user_gamers if needed
|
||||
self._migrate_tokens_from_gamers()
|
||||
|
||||
logger.info("Database initialized successfully")
|
||||
|
||||
def _migrate_tokens_from_gamers(self):
|
||||
"""Migrate tokens from old gamers table to user_gamers table if needed"""
|
||||
with sqlite3.connect(self.db_path) as conn:
|
||||
cursor = conn.cursor()
|
||||
|
||||
# Check if there are tokens in gamers table that need migration
|
||||
cursor.execute("SELECT COUNT(*) FROM gamers WHERE token IS NOT NULL")
|
||||
gamers_with_tokens = cursor.fetchone()[0]
|
||||
|
||||
if gamers_with_tokens == 0:
|
||||
return # No tokens to migrate
|
||||
|
||||
# Check if user_gamers already has tokens
|
||||
cursor.execute("SELECT COUNT(*) FROM user_gamers WHERE token IS NOT NULL")
|
||||
user_gamers_with_tokens = cursor.fetchone()[0]
|
||||
|
||||
if user_gamers_with_tokens > 0:
|
||||
return # Migration already done
|
||||
|
||||
# Migrate tokens from gamers to user_gamers
|
||||
cursor.execute("SELECT id, token FROM gamers WHERE token IS NOT NULL")
|
||||
gamers_tokens = cursor.fetchall()
|
||||
|
||||
migrated = 0
|
||||
for gamer_id, token in gamers_tokens:
|
||||
# Update all user-gamer relationships for this gamer
|
||||
cursor.execute(
|
||||
"UPDATE user_gamers SET token = ? WHERE gamer_id = ? AND token IS NULL",
|
||||
(token, gamer_id)
|
||||
)
|
||||
migrated += cursor.rowcount
|
||||
|
||||
conn.commit()
|
||||
|
||||
if migrated > 0:
|
||||
logger.info(f"Migrated {migrated} tokens from gamers to user_gamers")
|
||||
|
||||
def add_or_get_telegram_user(self, user_id: int, username: Optional[str] = None,
|
||||
first_name: Optional[str] = None, last_name: Optional[str] = None) -> bool:
|
||||
"""Add or update Telegram user"""
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue