From d60cdafbfea60bcd33a7a834c120619b66b344fd Mon Sep 17 00:00:00 2001 From: saint Date: Mon, 9 Sep 2024 14:47:06 +1000 Subject: [PATCH] v0.4 Go back to simpler use of MySQL2 --- goss-destroydeletedposts.rb | 94 ++++++++++++------------------------- 1 file changed, 31 insertions(+), 63 deletions(-) diff --git a/goss-destroydeletedposts.rb b/goss-destroydeletedposts.rb index 4ce0b3f..ff4c161 100644 --- a/goss-destroydeletedposts.rb +++ b/goss-destroydeletedposts.rb @@ -1,38 +1,31 @@ # Federated Computer, Inc. # David Sainty 2024 A.D. # Gossamer Threads to Discourse -- CleanUp Script -# v0.3 Other necessary fixes and tidyups +# v0.4 Go back to simpler use of MySQL2 require 'mysql2' require 'active_record' # require 'concurrent-ruby' require File.expand_path("../../../../config/environment", __FILE__) +require File.expand_path("../../../../script/import_scripts/base", __FILE__) -class LegacyPost < ActiveRecord::Base - self.table_name = 'gforum_Post' -end - -class LegacyUser < ActiveRecord::Base - self.table_name = 'gforum_User' -end - -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 +class GossamerForumsDestroyDeletedPosts < ImportScripts::Base + 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) @@ -50,49 +43,24 @@ class GossamerForumsDestroyDeletedPosts 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' - ) - - # 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 - puts "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' - ) - - # Find the user ID for the given username - user = LegacyUser.find_by(user_username: username) - if user.nil? - puts "DestroyDeletedPosts: No user found with username: #{username}" + + # Query the user ID from the legacy MySQL database + user_result = @mysql_client.query("SELECT user_id FROM gforums_User WHERE user_username = '#{username}' LIMIT 1") + user_id_row = user_result.first + if user_id_row.nil? + puts "DiscourseDeletedPosts: No user found with username: #{username}" return end + user_id = user_id_row['user_id'] + + # Find all posts marked as deleted by the given user + posts_result = @mysql_client.query("SELECT post_id FROM gforums_Post WHERE post_deleted = 1 AND user_id_fk = #{user_id}") + + posts_result.each do |legacy_post| + post_id = legacy_post['post_id'] - # Find all posts marked as deleted in the legacy database - LegacyPost.where(post_deleted: 1, user_id_fk: user.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)