migrations fix
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing

This commit is contained in:
2025-09-05 14:27:07 +09:00
parent a91283b681
commit 3aabe99a4e

View File

@@ -21,26 +21,19 @@ depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None: def upgrade() -> None:
"""Upgrade schema.""" """Upgrade schema."""
# Для SQLite: создаём новую таблицу, копируем данные, удаляем старую, переименовываем новую # Для SQLite: добавляем столбцы через ALTER TABLE
conn = op.get_bind() conn = op.get_bind()
# 1. Создать новую таблицу # Добавить столбец link, если его нет
op.create_table( result = conn.execute(sa.text("PRAGMA table_info(channels)")).fetchall()
'channels_new', columns = [row[1] for row in result]
sa.Column('id', sa.Integer(), nullable=False), if 'link' not in columns:
sa.Column('name', sa.String(length=255), nullable=True), conn.execute(sa.text("ALTER TABLE channels ADD COLUMN link VARCHAR(255)"))
sa.Column('link', sa.String(length=255), nullable=True), # Добавить столбец admin_id, если его нет
sa.Column('admin_id', sa.Integer(), nullable=True), if 'admin_id' not in columns:
sa.PrimaryKeyConstraint('id') conn.execute(sa.text("ALTER TABLE channels ADD COLUMN admin_id INTEGER"))
)
# 2. Если старая таблица есть, скопировать данные
result = conn.execute(sa.text("SELECT name FROM sqlite_master WHERE type='table' AND name='channels'")).fetchone()
if result:
conn.execute(sa.text("INSERT INTO channels_new (id, name, link, admin_id) SELECT id, name, link, admin_id FROM channels"))
op.drop_table('channels')
# 3. Переименовать новую таблицу
conn.execute(sa.text("ALTER TABLE channels_new RENAME TO channels"))
def downgrade() -> None: def downgrade() -> None:
"""Downgrade schema.""" """Downgrade schema."""
# SQLite не поддерживает удаление столбцов, поэтому просто удаляем таблицу
op.drop_table('channels') op.drop_table('channels')