diff --git a/goss-cleanup.rb b/goss-cleanup.rb new file mode 100644 index 0000000..09f03a6 --- /dev/null +++ b/goss-cleanup.rb @@ -0,0 +1,80 @@ +require File.expand_path("../../../config/environment", __FILE__) + +class GossamerForumsCleaner + def perform_cleanup + 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 + + 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 + + puts "Cleaning up imported topics and posts..." + # 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 + + # 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 + + 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 + + # Find all sent personal messages that were imported and delete them + TopicCustomField.where(name: 'original_gossamer_sent_msg_id').each do |field| + topic = Topic.find_by(id: field.topic_id) + if topic + puts "Deleting sent personal message topic #{topic.title} (ID: #{topic.id})" + topic.posts.each do |post| + puts "Deleting post #{post.id} in sent personal message topic #{topic.id}" + post.destroy + end + topic.destroy + end + end + + puts "Cleanup complete!" + end +end + +GossamerForumsCleaner.new.perform_cleanup