This commit is contained in:
cash
2026-03-29 23:50:49 -05:00
commit eb5e194331
56 changed files with 4010 additions and 0 deletions

View 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,
)