🐛🗃 — Fix enum migration on PostgreSQL

This commit is contained in:
Luc Didry 2025-01-06 13:10:27 +01:00
parent 1e7672abca
commit fe89d62e88
No known key found for this signature in database
GPG key ID: EA868E12D0257E3C
2 changed files with 6 additions and 4 deletions

View file

@ -8,6 +8,7 @@ Create Date: 2024-12-02 14:12:40.558033
from typing import Sequence, Union from typing import Sequence, Union
from alembic import op from alembic import op
from sqlalchemy.dialects.postgresql import ENUM
import sqlalchemy as sa import sqlalchemy as sa
@ -19,14 +20,15 @@ depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None: def upgrade() -> None:
enum = ENUM("4", "6", name="ip_version_enum", create_type=False)
enum.create(op.get_bind(), checkfirst=False)
with op.batch_alter_table("tasks", schema=None) as batch_op: with op.batch_alter_table("tasks", schema=None) as batch_op:
batch_op.add_column( batch_op.add_column(
sa.Column( sa.Column("ip_version", enum, server_default="4", nullable=False)
"ip_version", sa.Enum("4", "6"), server_default="4", nullable=False
)
) )
def downgrade() -> None: def downgrade() -> None:
with op.batch_alter_table("tasks", schema=None) as batch_op: with op.batch_alter_table("tasks", schema=None) as batch_op:
batch_op.drop_column("ip_version") batch_op.drop_column("ip_version")
ENUM(name="ip_version_enum").drop(op.get_bind(), checkfirst=False)

View file

@ -48,7 +48,7 @@ class Task(Base):
url: Mapped[str] = mapped_column() url: Mapped[str] = mapped_column()
domain: Mapped[str] = mapped_column() domain: Mapped[str] = mapped_column()
ip_version: Mapped[IPVersion] = mapped_column( ip_version: Mapped[IPVersion] = mapped_column(
Enum("4", "6"), Enum("4", "6", name="ip_version_enum"),
) )
check: Mapped[str] = mapped_column() check: Mapped[str] = mapped_column()
expected: Mapped[str] = mapped_column() expected: Mapped[str] = mapped_column()