Исправление двойного ответа и улучшение системы

- Исправлен баг с двойным ответом в /getgamers (добавлена обработка ошибок)
- Добавлена автоматическая миграция токенов при инициализации БД
- Исправлен веб-интерфейс - теперь берет токены из user_gamers
- Улучшен start.sh - создает бэкап базы перед перезапуском
- Добавлен export_db.sh для экспорта базы данных
- start.sh безопасно обновляет проект и сохраняет все данные
This commit is contained in:
vrubelroman 2025-10-28 21:34:35 +03:00
parent cbc5244240
commit 6cb5a9b99f
13 changed files with 186 additions and 11 deletions

View file

@ -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"""