Files
ipam_control/alembic/versions/0008_users_lower_username.py
T

23 lines
834 B
Python
Raw Normal View History

"""users: логин уникален без учёта регистра
Revision ID: 0008
Revises: 0007
"""
from alembic import op
import sqlalchemy as sa
revision = "0008"
down_revision = "0007"
branch_labels = None
depends_on = None
def upgrade() -> None:
dup = op.get_bind().execute(sa.text("SELECT lower(username), array_agg(username) FROM users GROUP BY 1 HAVING count(*) > 1")).all()
if dup:
raise RuntimeError(f"Логины, совпадающие без учёта регистра: {[(r[0], r[1]) for r in dup]}. Переименуйте или удалите дубли и повторите миграцию")
op.create_index("uq_users_lower_username", "users", [sa.text("lower(username)")], unique=True)
def downgrade() -> None:
op.drop_index("uq_users_lower_username", table_name="users")