diff --git a/lib/tasks/epp.rake b/lib/tasks/epp.rake index e03835dad..380fa3248 100644 --- a/lib/tasks/epp.rake +++ b/lib/tasks/epp.rake @@ -8,12 +8,36 @@ namespace :epp do desc 'Trim logs' task trim_documents: :environment do puts '-----> Running query' - sql = <<-SQL - UPDATE epp_logs SET request = regexp_replace(request, '', '[FILTERED]<\eis:legalDocument>'); - SQL - ApiLog::EppLog.connection.execute(sql) - puts "-----> Query done" + start = Time.zone.now.to_f + + i = 0 + ids = [] + count = 0 + + ApiLog::EppLog + .where("request ~* ?", '') + .where("request NOT LIKE ?", "%[FILTERED]%") + .where("request NOT LIKE ?", '%%').find_each(batch_size: 1000)do |x| + + trimmed = x.request.gsub(/]+)>([^<])+<\/eis:legalDocument>/, "[FILTERED]") + + x.request = trimmed + + x.save and count += 1 and i += 1 and ids.push x.id + + if i == 500 + puts "-----> Total rows updated #{count}" + puts "Last #{i} rows ids #{ids.join(', ')}" + i = 0 + ids = [] + end + + end + + puts "-----> Total rows updated #{count}" + puts "Last #{count} rows ids #{ids.join(', ')}" + puts "-----> Query done total #{(Time.zone.now.to_f - start).round(2)} seconds" end end