90 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
# Federated Computer, Inc.
 | 
						|
# David Sainty <saint@federated.computer>  2024 A.D.
 | 
						|
# Gossamer Threads to Discourse -- CleanUp Script
 | 
						|
# v0.14 Fix for Prod-Bitnami. Prep for 20240816 run.
 | 
						|
 | 
						|
require File.expand_path("../../../../config/environment", __FILE__)
 | 
						|
 | 
						|
class GossamerForumsCleaner
 | 
						|
  def cleanup_users
 | 
						|
    puts "Cleaning up imported users..."
 | 
						|
    # Find all users imported from Gossamer Forums and delete them
 | 
						|
    UserCustomField.where(name: 'original_gossamer_id').each do |field|
 | 
						|
      user = User.find_by(id: field.user_id)
 | 
						|
      if user
 | 
						|
        puts "Deleting user #{user.username} (ID: #{user.id})"
 | 
						|
        user.destroy
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  def cleanup_categories
 | 
						|
    puts "Cleaning up imported categories..."
 | 
						|
    # Find all categories that were imported and delete them
 | 
						|
    CategoryCustomField.where(name: 'original_gossamer_id').each do |field|
 | 
						|
      category = Category.find_by(id: field.category_id)
 | 
						|
      if category
 | 
						|
        puts "Deleting category #{category.name} (ID: #{category.id})"
 | 
						|
        category.destroy
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  def cleanup_topics
 | 
						|
    puts "Cleaning up imported topics..."
 | 
						|
    # Find all topics that were imported and delete them
 | 
						|
    TopicCustomField.where(name: 'original_gossamer_id').each do |field|
 | 
						|
      topic = Topic.find_by(id: field.topic_id)
 | 
						|
      if topic
 | 
						|
        puts "Deleting topic #{topic.title} (ID: #{topic.id})"
 | 
						|
        topic.posts.each do |post|
 | 
						|
          puts "Deleting post #{post.id} in topic #{topic.id}"
 | 
						|
          post.destroy
 | 
						|
        end
 | 
						|
        topic.destroy
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  def cleanup_posts
 | 
						|
    puts "Cleaning up imported posts..."
 | 
						|
    # Find all posts that were imported and delete them
 | 
						|
    PostCustomField.where(name: 'original_gossamer_id').each do |field|
 | 
						|
      post = Post.find_by(id: field.post_id)
 | 
						|
      if post
 | 
						|
        puts "Deleting post #{post.id} (ID: #{post.id})"
 | 
						|
        post.destroy
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  def cleanup_messages
 | 
						|
    puts "Cleaning up imported personal messages..."
 | 
						|
    # Find all personal messages (inbox) that were imported and delete them
 | 
						|
    TopicCustomField.where(name: 'original_gossamer_msg_id').each do |field|
 | 
						|
      topic = Topic.find_by(id: field.topic_id)
 | 
						|
      if topic
 | 
						|
        puts "Deleting personal message topic #{topic.title} (ID: #{topic.id})"
 | 
						|
        topic.posts.each do |post|
 | 
						|
          puts "Deleting post #{post.id} in personal message topic #{topic.id}"
 | 
						|
          post.destroy
 | 
						|
        end
 | 
						|
        topic.destroy
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  def perform_cleanup
 | 
						|
    puts "Cleanup beginning!"
 | 
						|
#    cleanup_messages
 | 
						|
#    cleanup_posts
 | 
						|
#    cleanup_topics
 | 
						|
#    cleanup_categories
 | 
						|
    cleanup_users
 | 
						|
    puts "Cleanup complete!"
 | 
						|
  end
 | 
						|
end
 | 
						|
 | 
						|
GossamerForumsCleaner.new.perform_cleanup
 | 
						|
 |