v0.1 goss-destroydeletedposts.rb added
This commit is contained in:
parent
309c2206f8
commit
145e956011
121
goss-destroydeletedposts.rb
Normal file
121
goss-destroydeletedposts.rb
Normal file
@ -0,0 +1,121 @@
|
||||
# Federated Computer, Inc.
|
||||
# David Sainty <saint@federated.computer> 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
|
||||
|
Loading…
Reference in New Issue
Block a user