26 lines
779 B
Ruby
26 lines
779 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
# rubocop:disable Style/Documentation
|
||
|
module Gitlab
|
||
|
module BackgroundMigration
|
||
|
class DigestColumn
|
||
|
class PersonalAccessToken < ActiveRecord::Base
|
||
|
self.table_name = 'personal_access_tokens'
|
||
|
end
|
||
|
|
||
|
def perform(model, attribute_from, attribute_to, start_id, stop_id)
|
||
|
model = model.constantize if model.is_a?(String)
|
||
|
|
||
|
model.transaction do
|
||
|
relation = model.where(id: start_id..stop_id).where.not(attribute_from => nil).lock
|
||
|
|
||
|
relation.each do |instance|
|
||
|
instance.update_columns(attribute_to => Gitlab::CryptoHelper.sha256(instance.read_attribute(attribute_from)),
|
||
|
attribute_from => nil)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|