code: def upgrade() -> None:
      op.create_table(
          "users",
          sa.Column(
              "id", sa.Integer(), nullable=False, primary_key=True
          ),
          sa.Column("username", sa.String(length=255), nullable=True),
          sa.Column(
              "password_hash", sa.String(length=255), nullable=True
          ),
          sa.Column("is_admin", sa.Boolean(), nullable=True),
          sa.UniqueConstraint("username"),
      )
      op.create_table(
          "experiment_permissions",
          sa.Column(
              "id", sa.Integer(), nullable=False, primary_key=True
          ),
          sa.Column(
              "experiment_id", sa.String(length=255), nullable=False
          ),
          sa.Column("user_id", sa.Integer(), nullable=False),
          sa.Column("permission", sa.String(length=255), nullable=True),
          sa.ForeignKeyConstraint(
              ["user_id"], ["users.id"], name="fk_user_id"
          ),
          sa.UniqueConstraint(
              "experiment_id", "user_id", name="unique_experiment_user"
          ),
      )
      op.create_table(
          "registered_model_permissions",
          sa.Column(
              "id", sa.Integer(), nullable=False, primary_key=True
          ),
          sa.Column("name", sa.String(length=255), nullable=False),
          sa.Column("user_id", sa.Integer(), nullable=False),
          sa.Column("permission", sa.String(length=255), nullable=True),
          sa.ForeignKeyConstraint(
              ["user_id"], ["users.id"], name="fk_user_id"
          ),
          sa.UniqueConstraint(
              "name", "user_id", name="unique_name_user"
          ),
      )
  
imports: import sqlalchemy
  from alembic import op
label_desc: Use image node_id 1 for calling a global function with example usage: upgrade() without return types