diff --git a/h/migrations/versions/1975edef158d_add_user_group_roles_column.py b/h/migrations/versions/1975edef158d_add_user_group_roles_column.py new file mode 100644 index 00000000000..a752c59ff25 --- /dev/null +++ b/h/migrations/versions/1975edef158d_add_user_group_roles_column.py @@ -0,0 +1,31 @@ +"""Add the user_group.roles column.""" + +from alembic import op +from sqlalchemy import CheckConstraint, Column, text +from sqlalchemy.dialects.postgresql import JSONB + +revision = "1975edef158d" +down_revision = "146179fa8d5e" + + +def upgrade(): + op.add_column( + "user_group", + Column( + "roles", + JSONB, + CheckConstraint( + " OR ".join( + f"""(roles = '["{role}"]'::jsonb)""" + for role in ["member", "moderator", "admin", "owner"] + ), + name="validate_role_strings", + ), + server_default=text("""'["member"]'::jsonb"""), + nullable=False, + ), + ) + + +def downgrade(): + op.drop_column("user_group", "roles")