init
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
"""proxy leasing columns
|
||||
|
||||
Revision ID: abe00f7f8f72
|
||||
Revises: 175f03f1c9f7
|
||||
Create Date: 2025‑05‑05 18:12:44
|
||||
"""
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
from sqlalchemy import inspect
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = "abe00f7f8f72"
|
||||
down_revision = "175f03f1c9f7"
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def _has_column(bind, table: str, column: str) -> bool:
|
||||
insp = inspect(bind)
|
||||
return column in {c["name"] for c in insp.get_columns(table)}
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
bind = op.get_bind()
|
||||
|
||||
# add only the columns that are missing
|
||||
add_in_use = not _has_column(bind, "proxies", "in_use")
|
||||
add_last_fail = not _has_column(bind, "proxies", "last_fail")
|
||||
|
||||
if add_in_use or add_last_fail:
|
||||
with op.batch_alter_table("proxies") as batch:
|
||||
if add_in_use:
|
||||
batch.add_column(sa.Column("in_use", sa.Integer(), server_default="0"))
|
||||
if add_last_fail:
|
||||
batch.add_column(sa.Column("last_fail", sa.DateTime()))
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
# downgrade assumes the columns exist, so drop them only if present
|
||||
bind = op.get_bind()
|
||||
|
||||
drop_in_use = _has_column(bind, "proxies", "in_use")
|
||||
drop_last_fail = _has_column(bind, "proxies", "last_fail")
|
||||
|
||||
if drop_in_use or drop_last_fail:
|
||||
with op.batch_alter_table("proxies") as batch:
|
||||
if drop_last_fail:
|
||||
batch.drop_column("last_fail")
|
||||
if drop_in_use:
|
||||
batch.drop_column("in_use")
|
||||
Reference in New Issue
Block a user