Files
new_lottery_bot/MIGRATION_006_REPORT.md
Andrey K. Choi 0623de5046
Some checks reported errors
continuous-integration/drone/push Build encountered an error
feat: Добавлена миграция 006 для исправления схемы БД
- Создана миграция 006_fix_missing_columns.py
- Автоматически добавляет отсутствующие столбцы:
  * participations.account_id с FK на accounts
  * winners.is_notified, is_claimed, claimed_at
- Миграция идемпотентна (безопасна для повторного выполнения)
- Добавлен откат (downgrade) функционал
- Обновлена документация в README.md
- Создан отчет MIGRATION_006_REPORT.md

Теперь изменения БД применяются через alembic upgrade head
2025-11-17 05:36:55 +09:00

2.6 KiB
Raw Blame History

Отчёт о Миграции База Данных 006

Дата: 17 ноября 2025 г.

Проблема

При рефакторинге и применении новой архитектуры выяснилось, что в базе данных отсутствуют некоторые столбцы, которые присутствуют в моделях SQLAlchemy.

Отсутствующие столбцы:

1. Таблица participations:

  • account_id (INTEGER) - внешний ключ на таблицу accounts

2. Таблица winners:

  • is_notified (BOOLEAN) - флаг уведомления победителя
  • is_claimed (BOOLEAN) - флаг получения приза
  • claimed_at (TIMESTAMP WITH TIME ZONE) - время получения приза

Решение

Создана миграция 006_fix_missing_columns.py которая:

Добавляет:

  1. participations.account_id с внешним ключом на accounts(id)
  2. winners.is_notified с значением по умолчанию FALSE
  3. winners.is_claimed с значением по умолчанию FALSE
  4. winners.claimed_at без значения по умолчанию (NULL)

Особенности реализации:

  • Использует DO $$ ... END $$; блоки для безопасного добавления столбцов
  • Проверяет существование столбцов перед добавлением (idempotent)
  • Включает откат (downgrade) функцию для отмены изменений
  • Поддерживает повторное выполнение без ошибок

Применение миграции:

alembic upgrade head

Результат:

Все столбцы добавлены успешно
Схема БД соответствует моделям SQLAlchemy
Бот может создавать записи в таблице winners без ошибок
Миграция готова для production развертывания

Версия после применения:

  • До: 005 (add_chat_system)
  • После: 006 (fix_missing_columns) ← HEAD

Для разработчиков:

При развертывании на новых серверах достаточно выполнить:

alembic upgrade head

Миграция автоматически проверит и добавит отсутствующие столбцы.