51 lines
1.9 KiB
Python
51 lines
1.9 KiB
Python
"""
|
||
Миграция: Добавление таблиц для умных рассылок и дайджестов
|
||
Версия: V3.1
|
||
Дата: 2026-04-06
|
||
|
||
Новые таблицы:
|
||
- broadcasts: умные рассылки с отслеживанием прочтения
|
||
- broadcast_reads: кто прочитал рассылку
|
||
- digests: еженедельные дайджесты
|
||
"""
|
||
import sys
|
||
import os
|
||
|
||
# Добавляем корень проекта в path
|
||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||
|
||
from database.db import SyncSessionLocal, sync_engine
|
||
from database.models import Base
|
||
from sqlalchemy import inspect
|
||
|
||
|
||
def migrate():
|
||
"""Выполнить миграцию"""
|
||
print("🔧 Начинаем миграцию V3.1...")
|
||
|
||
inspector = inspect(sync_engine)
|
||
existing_tables = inspector.get_table_names()
|
||
|
||
print(f"📋 Текущие таблицы: {len(existing_tables)}")
|
||
|
||
# Создаём новые таблицы
|
||
new_tables = ['broadcasts', 'broadcast_reads', 'digests']
|
||
|
||
for table_name in new_tables:
|
||
if table_name in existing_tables:
|
||
print(f"⏭️ Таблица '{table_name}' уже существует, пропускаем")
|
||
else:
|
||
print(f"✅ Создаём таблицу '{table_name}'...")
|
||
# Создаём только конкретные таблицы
|
||
Base.metadata.tables[table_name].create(bind=sync_engine)
|
||
print(f" ✓ Таблица '{table_name}' создана")
|
||
|
||
print("\n✅ Миграция V3.1 завершена успешно!")
|
||
print("📊 Новые таблицы:")
|
||
print(" • broadcasts - умные рассылки")
|
||
print(" • broadcast_reads - отслеживание прочтения")
|
||
print(" • digests - еженедельные дайджесты")
|
||
|
||
|
||
if __name__ == '__main__':
|
||
migrate()
|