2024-08-15 16:49:02 +00:00
|
|
|
# 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__)
|
2024-06-17 09:42:33 +00:00
|
|
|
|
|
|
|
class GossamerForumsCleaner
|
2024-06-17 09:43:33 +00:00
|
|
|
def cleanup_users
|
2024-06-17 09:42:33 +00:00
|
|
|
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
|
2024-06-17 09:43:33 +00:00
|
|
|
end
|
2024-06-17 09:42:33 +00:00
|
|
|
|
2024-06-17 09:43:33 +00:00
|
|
|
def cleanup_categories
|
2024-06-17 09:42:33 +00:00
|
|
|
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
|
2024-06-17 09:43:33 +00:00
|
|
|
end
|
2024-06-17 09:42:33 +00:00
|
|
|
|
2024-06-17 09:43:33 +00:00
|
|
|
def cleanup_topics
|
|
|
|
puts "Cleaning up imported topics..."
|
2024-06-17 09:42:33 +00:00
|
|
|
# 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
|
2024-06-17 09:43:33 +00:00
|
|
|
end
|
2024-06-17 09:42:33 +00:00
|
|
|
|
2024-06-17 09:43:33 +00:00
|
|
|
def cleanup_posts
|
|
|
|
puts "Cleaning up imported posts..."
|
2024-06-17 09:42:33 +00:00
|
|
|
# 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
|
2024-06-17 09:43:33 +00:00
|
|
|
end
|
2024-06-17 09:42:33 +00:00
|
|
|
|
2024-06-17 09:43:33 +00:00
|
|
|
def cleanup_messages
|
2024-06-17 09:42:33 +00:00
|
|
|
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
|
2024-06-17 09:43:33 +00:00
|
|
|
end
|
2024-06-17 09:42:33 +00:00
|
|
|
|
2024-06-17 09:43:33 +00:00
|
|
|
def perform_cleanup
|
|
|
|
puts "Cleanup beginning!"
|
2024-08-17 08:56:30 +00:00
|
|
|
# cleanup_messages
|
2024-08-15 16:53:45 +00:00
|
|
|
cleanup_posts
|
|
|
|
cleanup_topics
|
2024-08-17 08:56:30 +00:00
|
|
|
# cleanup_categories
|
|
|
|
# cleanup_users
|
2024-06-17 09:42:33 +00:00
|
|
|
puts "Cleanup complete!"
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
GossamerForumsCleaner.new.perform_cleanup
|
2024-06-17 09:43:09 +00:00
|
|
|
|