diff --git a/db/migrate/20221106062419_add_is_deleted_to_users.rb b/db/migrate/20221106062419_add_is_deleted_to_users.rb new file mode 100644 index 000000000..a0e3feb92 --- /dev/null +++ b/db/migrate/20221106062419_add_is_deleted_to_users.rb @@ -0,0 +1,8 @@ +class AddIsDeletedToUsers < ActiveRecord::Migration[7.0] + disable_ddl_transaction! + + def change + add_column :users, :is_deleted, :boolean, null: false, default: false + add_index :users, :is_deleted, where: "is_deleted = TRUE", algorithm: :concurrently + end +end diff --git a/script/fixes/125_set_users_is_deleted.rb b/script/fixes/125_set_users_is_deleted.rb new file mode 100755 index 000000000..4e2f1d84b --- /dev/null +++ b/script/fixes/125_set_users_is_deleted.rb @@ -0,0 +1,13 @@ +#!/usr/bin/env ruby + +require_relative "base" + +with_confirmation do + deleted_users = User.where_regex(:name, "^user_[0-9]+~*$").where(is_deleted: false) + + deleted_users.find_each do |user| + puts user.attributes.slice("id", "name", "level", "created_at", "last_logged_in_at").to_json + end + + deleted_users.update_all(is_deleted: true) if ENV.fetch("FIX", "false").truthy? +end