alabuga/backend/alembic/versions/20241010_0008_offline_missions.py
2025-09-30 20:38:39 -06:00

56 lines
2.5 KiB
Python

"""offline missions fields
Revision ID: 20241010_0008
Revises: 3c5430b2cbd3
Create Date: 2024-10-10 00:08:00.000000
"""
from __future__ import annotations
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = "20241010_0008"
down_revision = "3c5430b2cbd3"
branch_labels = None
depends_on = None
mission_format_enum = sa.Enum("online", "offline", name="missionformat")
def upgrade() -> None:
mission_format_enum.create(op.get_bind(), checkfirst=True)
with op.batch_alter_table("missions", schema=None) as batch_op:
batch_op.add_column(sa.Column("format", mission_format_enum, nullable=False, server_default="online"))
batch_op.add_column(sa.Column("event_location", sa.String(length=160), nullable=True))
batch_op.add_column(sa.Column("event_address", sa.String(length=255), nullable=True))
batch_op.add_column(sa.Column("event_starts_at", sa.DateTime(timezone=True), nullable=True))
batch_op.add_column(sa.Column("event_ends_at", sa.DateTime(timezone=True), nullable=True))
batch_op.add_column(sa.Column("registration_deadline", sa.DateTime(timezone=True), nullable=True))
batch_op.add_column(sa.Column("registration_url", sa.String(length=512), nullable=True))
batch_op.add_column(sa.Column("registration_notes", sa.Text(), nullable=True))
batch_op.add_column(sa.Column("capacity", sa.Integer(), nullable=True))
batch_op.add_column(sa.Column("contact_person", sa.String(length=120), nullable=True))
batch_op.add_column(sa.Column("contact_phone", sa.String(length=64), nullable=True))
op.execute("UPDATE missions SET format = 'online' WHERE format IS NULL")
with op.batch_alter_table("missions", schema=None) as batch_op:
batch_op.alter_column("format", server_default=None)
def downgrade() -> None:
with op.batch_alter_table("missions", schema=None) as batch_op:
batch_op.drop_column("contact_phone")
batch_op.drop_column("contact_person")
batch_op.drop_column("capacity")
batch_op.drop_column("registration_notes")
batch_op.drop_column("registration_url")
batch_op.drop_column("registration_deadline")
batch_op.drop_column("event_ends_at")
batch_op.drop_column("event_starts_at")
batch_op.drop_column("event_address")
batch_op.drop_column("event_location")
batch_op.drop_column("format")
mission_format_enum.drop(op.get_bind(), checkfirst=True)