mirror of
https://github.com/Growstuff/growstuff.git
synced 2026-05-11 01:05:01 -04:00
34 lines
1.2 KiB
Ruby
34 lines
1.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
namespace :members do
|
|
desc "Remove inactive members with no activity and last login > 24 months ago"
|
|
# usage: rake members:cleanup_inactive
|
|
# usage: DRY_RUN=true rake members:cleanup_inactive
|
|
task cleanup_inactive: :environment do
|
|
limit_date = 3.years.ago
|
|
dry_run = ENV.fetch('DRY_RUN', 'false') == 'true'
|
|
|
|
inactive_members = Member.where("last_sign_in_at < ? OR (last_sign_in_at IS NULL AND created_at < ?)", limit_date, limit_date)
|
|
|
|
count = 0
|
|
inactive_members.find_each do |member|
|
|
# Check for activity using the model method
|
|
unless member.has_activity?
|
|
if dry_run
|
|
puts "[DRY RUN] Would delete inactive member: #{member.login_name} (ID: #{member.id}, Last login: #{member.last_sign_in_at || 'Never'}, Created: #{member.created_at})"
|
|
else
|
|
puts "Deleting inactive member: #{member.login_name} (ID: #{member.id}, Last login: #{member.last_sign_in_at || 'Never'}, Created: #{member.created_at})"
|
|
member.destroy
|
|
end
|
|
count += 1
|
|
end
|
|
end
|
|
|
|
if dry_run
|
|
puts "Total inactive members that would be deleted: #{count}"
|
|
else
|
|
puts "Total inactive members deleted: #{count}"
|
|
end
|
|
end
|
|
end
|