init
This commit is contained in:
67
backend/alembic/versions/05d6342e2105_tier_text_not_int.py
Normal file
67
backend/alembic/versions/05d6342e2105_tier_text_not_int.py
Normal file
@@ -0,0 +1,67 @@
|
||||
"""tier text not int
|
||||
|
||||
Revision ID: 05d6342e2105
|
||||
Revises: 20250506abcd
|
||||
Create Date: 2025-05-06 16:42:38.378374
|
||||
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
from sqlalchemy import text
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision: str = '05d6342e2105'
|
||||
down_revision: Union[str, None] = '20250506abcd'
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
def upgrade() -> None:
|
||||
# 1) make sure every numeric tier is inside the allowed range
|
||||
# (optional safety; no type change yet)
|
||||
op.execute("""
|
||||
UPDATE users
|
||||
SET tier = 0
|
||||
WHERE pg_typeof(tier)::text = 'integer'
|
||||
AND tier NOT IN (0,1,2,3);
|
||||
""")
|
||||
|
||||
# 2) ALTER COLUMN to TEXT first – numeric values become '0','1',...
|
||||
op.alter_column(
|
||||
"users", "tier",
|
||||
existing_type=sa.Integer(),
|
||||
type_=sa.Text(),
|
||||
postgresql_using="tier::text",
|
||||
nullable=False,
|
||||
server_default=sa.text("'Online'")
|
||||
)
|
||||
|
||||
# 3) now map the stringified numbers to names
|
||||
op.execute("""
|
||||
UPDATE users SET tier =
|
||||
CASE tier
|
||||
WHEN '0' THEN 'Online'
|
||||
WHEN '1' THEN 'Rank 1'
|
||||
WHEN '2' THEN 'Rank 2'
|
||||
WHEN '3' THEN 'Rank 3'
|
||||
ELSE tier
|
||||
END;
|
||||
""")
|
||||
|
||||
def downgrade() -> None:
|
||||
# revert to integer, mapping back Online→0 etc. if you really need it
|
||||
op.alter_column(
|
||||
"users", "tier",
|
||||
existing_type=sa.Text(),
|
||||
type_=sa.Integer(),
|
||||
postgresql_using="""
|
||||
CASE tier
|
||||
WHEN 'Rank 1' THEN 1
|
||||
WHEN 'Rank 2' THEN 2
|
||||
WHEN 'Rank 3' THEN 3
|
||||
ELSE 0
|
||||
END::integer
|
||||
""",
|
||||
server_default=sa.text("0"),
|
||||
nullable=False,
|
||||
)
|
||||
Reference in New Issue
Block a user