""" Add columns to manage user auth. Revision ID: e070d9f5f64a Revises: d74a6956b012 Create Date: 2024-08-27 19:43:58.289807+00:00 """ import sqlalchemy as sa from alembic import op # revision identifiers, used by Alembic. revision = "e070d9f5f64a" down_revision = "d74a6956b012" branch_labels = None depends_on = None def upgrade() -> None: """Apply this migration.""" # ### commands auto generated by Alembic - please adjust! ### op.add_column("users", sa.Column("username", sa.String(), nullable=False)) op.add_column("users", sa.Column("password_hash", sa.String(), nullable=False)) op.add_column("users", sa.Column("require_password_change", sa.Boolean(), nullable=False)) op.add_column("users", sa.Column("password_reset_code", sa.String(), nullable=True, unique=True)) op.add_column("users", sa.Column("active", sa.Boolean(), nullable=False)) op.add_column("users", sa.Column("password_set_at", sa.TIMESTAMP(timezone=True), nullable=False)) op.create_unique_constraint(op.f("users_username_uq"), "users", ["username"]) op.create_check_constraint( constraint_name=op.f("users_pass_req_change_has_code_ck"), table_name="users", condition="require_password_change = (password_reset_code is not null)", ) # ### end Alembic commands ### def downgrade() -> None: """Revert this migration.""" # ### commands auto generated by Alembic - please adjust! ### op.drop_constraint(op.f("users_username_uq"), "users", type_="unique") op.drop_column("users", "active") op.drop_column("users", "password_reset_code") op.drop_column("users", "require_password_change") op.drop_column("users", "password_hash") op.drop_column("users", "username") op.drop_column("users", "password_set_time_at") # ### end Alembic commands ###