From 145e956011ee06cf4d5130a2218af1299171cd41 Mon Sep 17 00:00:00 2001 From: saint Date: Mon, 9 Sep 2024 14:19:42 +1000 Subject: [PATCH] v0.1 goss-destroydeletedposts.rb added --- goss-destroydeletedposts.rb | 121 ++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 goss-destroydeletedposts.rb diff --git a/goss-destroydeletedposts.rb b/goss-destroydeletedposts.rb new file mode 100644 index 0000000..b4c6d34 --- /dev/null +++ b/goss-destroydeletedposts.rb @@ -0,0 +1,121 @@ +# Federated Computer, Inc. +# David Sainty 2024 A.D. +# Gossamer Threads to Discourse -- CleanUp Script +# v0.1 New script + +require 'mysql2' +require 'active_record' + +# require 'concurrent-ruby' +require File.expand_path("../../../../config/environment", __FILE__) + +class GossamerForumsDestroyDeletedPosts +# def initialize +# super +# begin +# # Initialize MySQL client to connect to Gossamer Forums database +# @mysql_client = Mysql2::Client.new( +# host: "slowtwitch.northend.network", +# username: "admin", +# password: "yxnh93Ybbz2Nm8#mp28zCVv", +# database: "slowtwitch" +# ) +# rescue Mysql2::Error => e +# puts "Error connecting to MySQL: #{e.message}" +# exit 1 +# end +# end + + # Define a method to find a post by custom field + def find_post_by_custom_field(post_id) + Rails.logger.info("DestroyDeletedPosts: Searching for post with original_gossamer_id: #{post_id}") + + post_custom_field = PostCustomField.find_by(name: 'original_gossamer_id', value: post_id.to_s) + + if post_custom_field + post = post_custom_field.post + Rails.logger.info("DestroyDeletedPosts: Found post with id: #{post.id}") + post + else + Rails.logger.warn("DestroyDeletedPosts: No post found with original_gossamer_id: #{post_id}") + nil + end + end + + # Define the method to delete posts based on the Gossamer Forums flag + def destroy_deleted_posts_from_gossamer + # Connect to the legacy MySQL database + ActiveRecord::Base.establish_connection( + adapter: 'mysql2', + host: 'slowtwitch.northend.network', + database: 'slowtwitch', + username: 'admin', + password: 'yxnh93Ybbz2Nm8#mp28zCVv' + ) + + # Load the gforums_Post model for legacy database + class LegacyPost < ActiveRecord::Base + self.table_name = 'gforums_Post' + end + + # Find all posts marked as deleted in the legacy database + LegacyPost.where(post_deleted: 1).find_each do |legacy_post| + # Look for the post in Discourse by custom field + post = find_post_by_custom_field(legacy_post.post_id) + + if post + Rails.logger.info("DestroyDeletedPosts: Deleting post with id: #{post.id}") + # post.destroy + end + end + end + + # Define the method to delete posts based on the Gossamer Forums flag + def destroy_deleted_posts_from_gossamer_with_user(username) + # Connect to the legacy MySQL database + ActiveRecord::Base.establish_connection( + adapter: 'mysql2', + host: 'slowtwitch.northend.network', + database: 'slowtwitch', + username: 'admin', + password: 'yxnh93Ybbz2Nm8#mp28zCVv' + ) + + # Load the gforums_Post model for legacy database + class LegacyPost < ActiveRecord::Base + self.table_name = 'gforums_Post' + end + + class LegacyUser < ActiveRecord::Base + self.table_name = 'gforums_User' + end + + # Find the user ID for the given username + user = LegacyUser.find_by(username: username) + if user.nil? + Rails.logger.warn("DestroyDeletedPosts: No user found with username: #{username}") + return + end + + # Find all posts marked as deleted in the legacy database + LegacyPost.where(post_deleted: 1, user_id: user.id).find_each do |legacy_post| + # Look for the post in Discourse by custom field + post = find_post_by_custom_field(legacy_post.post_id) + + if post + Rails.logger.info("DestroyDeletedPosts: Mock-Deleting post with id: #{post.id}") + # post.destroy + end + end + end + + def perform_deleted_destroy + puts "Destroy Deleted Posts beginning!" + # destroy_deleted_posts_from_gossamer + destroy_deleted_posts_from_gossamer_with_user('spudone') + puts "Destroy Deleted Posts complete!" + end +end + +GossamerForumsDestroyDeletedPosts.new.perform_deleted_destroy +