47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
"""补充任务状态清理索引
|
|
|
|
Revision ID: 20260805_0015
|
|
Revises: 20260728_0014
|
|
Create Date: 2026-08-05
|
|
"""
|
|
|
|
from collections.abc import Sequence
|
|
|
|
import sqlalchemy as sa
|
|
from alembic import op
|
|
|
|
revision: str = "20260805_0015"
|
|
down_revision: str | None = "20260728_0014"
|
|
branch_labels: str | Sequence[str] | None = None
|
|
depends_on: str | Sequence[str] | None = None
|
|
|
|
|
|
INDEXES = [
|
|
("ix_douyu_tasks_status_id", "douyu_tasks", ["status", "id"]),
|
|
("ix_huya_tasks_status_id", "huya_tasks", ["status", "id"]),
|
|
]
|
|
|
|
|
|
def _has_table(bind, table_name: str) -> bool:
|
|
return sa.inspect(bind).has_table(table_name)
|
|
|
|
|
|
def _indexes(bind, table_name: str) -> set[str]:
|
|
if not _has_table(bind, table_name):
|
|
return set()
|
|
return {index["name"] for index in sa.inspect(bind).get_indexes(table_name)}
|
|
|
|
|
|
def upgrade() -> None:
|
|
bind = op.get_bind()
|
|
for name, table_name, columns in INDEXES:
|
|
if name not in _indexes(bind, table_name):
|
|
op.create_index(name, table_name, columns)
|
|
|
|
|
|
def downgrade() -> None:
|
|
bind = op.get_bind()
|
|
for name, table_name, _ in reversed(INDEXES):
|
|
if name in _indexes(bind, table_name):
|
|
op.drop_index(name, table_name=table_name)
|