v0.21.3 Fix coding oversight for SQLite methods
This commit is contained in:
		@@ -1,5 +1,5 @@
 | 
				
			|||||||
# gossamer threads migration-import code
 | 
					# gossamer threads migration-import code
 | 
				
			||||||
# v0.21.2
 | 
					# v0.21.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require 'mysql2'
 | 
					require 'mysql2'
 | 
				
			||||||
require 'open-uri'
 | 
					require 'open-uri'
 | 
				
			||||||
@@ -173,7 +173,7 @@ class GossamerForumsImporter < ImportScripts::Base
 | 
				
			|||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # Helper methods to interact with the SQLite database for persisting topic-post related values
 | 
					  # Helper methods to interact with the SQLite database for persisting topic-post related values
 | 
				
			||||||
  def fetch_from_db(table, key)
 | 
					  def fetch_db(table, key)
 | 
				
			||||||
    @db.get_first_value "SELECT value FROM #{table} WHERE key = ?", key
 | 
					    @db.get_first_value "SELECT value FROM #{table} WHERE key = ?", key
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -181,6 +181,55 @@ class GossamerForumsImporter < ImportScripts::Base
 | 
				
			|||||||
    @db.execute "INSERT OR REPLACE INTO #{table} (key, value) VALUES (?, ?)", key, value
 | 
					    @db.execute "INSERT OR REPLACE INTO #{table} (key, value) VALUES (?, ?)", key, value
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def fetch_db_topic_last_post_time(topic_id)
 | 
				
			||||||
 | 
					    @db.get_first_value "SELECT last_post_time FROM topic_last_post_time WHERE topic_id = ?", topic_id
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  def fetch_db_topic_last_post_user(topic_id)
 | 
				
			||||||
 | 
					    @db.get_first_value "SELECT user_id FROM topic_last_post_user WHERE topic_id = ?", topic_id
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  def fetch_db_topic_post_count(topic_id)
 | 
				
			||||||
 | 
					    @db.get_first_value "SELECT post_count FROM topic_post_count WHERE topic_id = ?", topic_id
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  def fetch_db_user_topic_count(user_id)
 | 
				
			||||||
 | 
					    @db.get_first_value "SELECT topic_count FROM user_topic_count WHERE user_id = ?", user_id
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  def fetch_db_user_post_count(user_id)
 | 
				
			||||||
 | 
					    @db.get_first_value "SELECT post_count FROM user_post_count WHERE user_id = ?", user_id
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  def fetch_db_topic_post_numbers(topic_id)
 | 
				
			||||||
 | 
					    @db.get_first_value "SELECT post_number FROM topic_post_numbers WHERE topic_id = ?", topic_id
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  def update_db_topic_last_post_time(topic_id, last_post_time)
 | 
				
			||||||
 | 
					    @db.execute "INSERT OR REPLACE INTO topic_last_post_time (topic_id, last_post_time) VALUES (?, ?)", topic_id, last_post_time
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  def update_db_topic_last_post_user(topic_id, user_id)
 | 
				
			||||||
 | 
					    @db.execute "INSERT OR REPLACE INTO topic_last_post_user (topic_id, user_id) VALUES (?, ?)", topic_id, user_id
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  def update_db_topic_post_count(topic_id, post_count)
 | 
				
			||||||
 | 
					    @db.execute "INSERT OR REPLACE INTO topic_post_count (topic_id, post_count) VALUES (?, ?)", topic_id, post_count
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  def update_db_user_topic_count(user_id, topic_count)
 | 
				
			||||||
 | 
					    @db.execute "INSERT OR REPLACE INTO user_topic_count (user_id, topic_count) VALUES (?, ?)", user_id, topic_count
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  def update_db_user_post_count(user_id, post_count)
 | 
				
			||||||
 | 
					    @db.execute "INSERT OR REPLACE INTO user_post_count (user_id, post_count) VALUES (?, ?)", user_id, post_count
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  def update_db_topic_post_numbers(topic_id, post_number)
 | 
				
			||||||
 | 
					    @db.execute "INSERT OR REPLACE INTO topic_post_numbers (topic_id, post_number) VALUES (?, ?)", topic_id, post_number
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # Execute an SQL query on the Gossamer Forums database
 | 
					  # Execute an SQL query on the Gossamer Forums database
 | 
				
			||||||
  def execute_query(query)
 | 
					  def execute_query(query)
 | 
				
			||||||
    @mysql_client.query(query, as: :hash)
 | 
					    @mysql_client.query(query, as: :hash)
 | 
				
			||||||
@@ -754,12 +803,12 @@ class GossamerForumsImporter < ImportScripts::Base
 | 
				
			|||||||
            # Track last post time and user for the topic
 | 
					            # Track last post time and user for the topic
 | 
				
			||||||
#            topic_last_post_time[topic.id] = Time.at(row['post_time'])
 | 
					#            topic_last_post_time[topic.id] = Time.at(row['post_time'])
 | 
				
			||||||
#            topic_last_post_user[topic.id] = discourse_user_id
 | 
					#            topic_last_post_user[topic.id] = discourse_user_id
 | 
				
			||||||
            update_db('topic_last_post_time', topic.id, Time.at(row['post_time']).to_i)
 | 
					            update_db_topic_last_post_time(topic.id, Time.at(row['post_time']).to_i)
 | 
				
			||||||
            update_db('topic_last_post_user', topic.id, discourse_user_id)
 | 
					            update_db_topic_last_post_user(topic.id, discourse_user_id)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # Increment the count of the number of topics created by each user
 | 
					            # Increment the count of the number of topics created by each user
 | 
				
			||||||
#            user_topic_count[discourse_user_id] += 1
 | 
					#            user_topic_count[discourse_user_id] += 1
 | 
				
			||||||
            update_db('user_topic_count', discourse_user_id, fetch_from_db(db, 'user_topic_count', discourse_user_id).to_i + 1)
 | 
					            update_db_user_topic_count(discourse_user_id, fetch_db_user_topic_count(discourse_user_id).to_i + 1)
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
#            # Ensure the raw post stirng contents itself is acceptable to Discourse
 | 
					#            # Ensure the raw post stirng contents itself is acceptable to Discourse
 | 
				
			||||||
#            sanitized_post_message = row['post_message']&.tr("\0", '') || ""
 | 
					#            sanitized_post_message = row['post_message']&.tr("\0", '') || ""
 | 
				
			||||||
@@ -778,8 +827,8 @@ class GossamerForumsImporter < ImportScripts::Base
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            # Increment the number of posts in the given topic.
 | 
					            # Increment the number of posts in the given topic.
 | 
				
			||||||
#            topic_post_numbers[topic.id] += 1
 | 
					#            topic_post_numbers[topic.id] += 1
 | 
				
			||||||
            post_number = fetch_from_db(db, 'topic_post_numbers', topic.id).to_i + 1
 | 
					            post_number = fetch_db_topic_post_numbers(topic.id).to_i + 1
 | 
				
			||||||
            update_db(db, 'topic_post_numbers', topic.id, post_number)
 | 
					            update_db_topic_post_numbers(topic.id, post_number)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # Create the initial post in the topic
 | 
					            # Create the initial post in the topic
 | 
				
			||||||
            post = Post.create!(
 | 
					            post = Post.create!(
 | 
				
			||||||
@@ -801,8 +850,8 @@ class GossamerForumsImporter < ImportScripts::Base
 | 
				
			|||||||
            # Track the number of posts in the topic and by the user
 | 
					            # Track the number of posts in the topic and by the user
 | 
				
			||||||
#            topic_post_count[topic.id] += 1
 | 
					#            topic_post_count[topic.id] += 1
 | 
				
			||||||
#            user_post_count[discourse_user_id] += 1
 | 
					#            user_post_count[discourse_user_id] += 1
 | 
				
			||||||
            update_db('topic_post_count', topic.id, fetch_from_db(db, 'topic_post_count', topic.id).to_i + 1)
 | 
					            update_db_topic_post_count(topic.id, fetch_db_topic_post_count(topic.id).to_i + 1)
 | 
				
			||||||
            update_db('user_post_count', discourse_user_id, fetch_from_db(db, 'user_post_count', discourse_user_id).to_i + 1)
 | 
					            update_db_user_post_count(discourse_user_id, fetch_db_user_post_count(discourse_user_id).to_i + 1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # Handle attachments for the post
 | 
					            # Handle attachments for the post
 | 
				
			||||||
            handle_post_attachments(row['post_id'], post, discourse_user_id)
 | 
					            handle_post_attachments(row['post_id'], post, discourse_user_id)
 | 
				
			||||||
@@ -840,8 +889,8 @@ class GossamerForumsImporter < ImportScripts::Base
 | 
				
			|||||||
            sanitized_post_message = sanitize_post_message(row['post_message'])
 | 
					            sanitized_post_message = sanitize_post_message(row['post_message'])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#            topic_post_numbers[topic_id] += 1
 | 
					#            topic_post_numbers[topic_id] += 1
 | 
				
			||||||
            post_number = fetch_from_db(db, 'topic_post_numbers', topic_id).to_i + 1
 | 
					            post_number = fetch_db_topic_post_numbers(topic_id).to_i + 1
 | 
				
			||||||
            update_db('topic_post_numbers', topic_id, post_number)
 | 
					            update_db_topic_post_numbers(topic_id, post_number)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # Create the post in the existing topic
 | 
					            # Create the post in the existing topic
 | 
				
			||||||
            post = Post.create!(
 | 
					            post = Post.create!(
 | 
				
			||||||
@@ -854,7 +903,7 @@ class GossamerForumsImporter < ImportScripts::Base
 | 
				
			|||||||
              updated_at: Time.at(row['post_time']),
 | 
					              updated_at: Time.at(row['post_time']),
 | 
				
			||||||
              reply_to_post_number: reply_to_post_number,
 | 
					              reply_to_post_number: reply_to_post_number,
 | 
				
			||||||
              like_count: row['post_replies'] || 0,
 | 
					              like_count: row['post_replies'] || 0,
 | 
				
			||||||
              reads: post_views || fetch_from_db('topic_post_count', topic_id).to_i,
 | 
					              reads: post_views || fetch_db_topic_post_count(topic_id).to_i,
 | 
				
			||||||
              post_number: post_number
 | 
					              post_number: post_number
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
            post.custom_fields['original_gossamer_id'] = row['post_id']
 | 
					            post.custom_fields['original_gossamer_id'] = row['post_id']
 | 
				
			||||||
@@ -863,17 +912,17 @@ class GossamerForumsImporter < ImportScripts::Base
 | 
				
			|||||||
            # Track the number of posts in the topic and by the user
 | 
					            # Track the number of posts in the topic and by the user
 | 
				
			||||||
#            topic_post_count[topic_id] += 1
 | 
					#            topic_post_count[topic_id] += 1
 | 
				
			||||||
#            user_post_count[discourse_user_id] += 1
 | 
					#            user_post_count[discourse_user_id] += 1
 | 
				
			||||||
            update_db('topic_post_count', topic_id, fetch_from_db('topic_post_count', topic_id).to_i + 1)
 | 
					            update_db_topic_post_count(topic_id, fetch_db_topic_post_count(topic_id).to_i + 1)
 | 
				
			||||||
            update_db('user_post_count', discourse_user_id, fetch_from_db('user_post_count', discourse_user_id).to_i + 1)
 | 
					            update_db_user_post_count(discourse_user_id, fetch_db_user_post_count(discourse_user_id).to_i + 1)
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
            # Update last post time and user for the topic
 | 
					            # Update last post time and user for the topic
 | 
				
			||||||
#            if topic_last_post_time[topic_id].nil? || Time.at(row['post_time']) > topic_last_post_time[topic_id]
 | 
					#            if topic_last_post_time[topic_id].nil? || Time.at(row['post_time']) > topic_last_post_time[topic_id]
 | 
				
			||||||
#              topic_last_post_time[topic_id] = Time.at(row['post_time'])
 | 
					#              topic_last_post_time[topic_id] = Time.at(row['post_time'])
 | 
				
			||||||
#              topic_last_post_user[topic_id] = discourse_user_id
 | 
					#              topic_last_post_user[topic_id] = discourse_user_id
 | 
				
			||||||
#            end
 | 
					#            end
 | 
				
			||||||
            if fetch_from_db('topic_last_post_time', topic_id).nil? || Time.at(row['post_time']).to_i > fetch_from_db('topic_last_post_time', topic_id).to_i
 | 
					            if fetch_db_topic_last_post_time(topic_id).nil? || Time.at(row['post_time']).to_i > fetch_db_topic_last_post_time(topic_id).to_i
 | 
				
			||||||
              update_db('topic_last_post_time', topic_id, Time.at(row['post_time']).to_i)
 | 
					              update_db_topic_last_post_time(topic_id, Time.at(row['post_time']).to_i)
 | 
				
			||||||
              update_db('topic_last_post_user', topic_id, discourse_user_id)
 | 
					              update_db_topic_last_post_user(topic_id, discourse_user_id)
 | 
				
			||||||
            end
 | 
					            end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # Handle attachments for the post
 | 
					            # Handle attachments for the post
 | 
				
			||||||
@@ -902,10 +951,10 @@ class GossamerForumsImporter < ImportScripts::Base
 | 
				
			|||||||
      topic_id, last_post_time = row
 | 
					      topic_id, last_post_time = row
 | 
				
			||||||
      Topic.find(topic_id).update!(
 | 
					      Topic.find(topic_id).update!(
 | 
				
			||||||
        updated_at: Time.at(last_post_time),
 | 
					        updated_at: Time.at(last_post_time),
 | 
				
			||||||
        posts_count: fetch_from_db(db, 'topic_post_count', topic_id).to_i,
 | 
					        posts_count: fetch_db_topic_post_count(topic_id).to_i,
 | 
				
			||||||
        last_posted_at: Time.at(last_post_time),
 | 
					        last_posted_at: Time.at(last_post_time),
 | 
				
			||||||
        bumped_at: Time.at(last_post_time),
 | 
					        bumped_at: Time.at(last_post_time),
 | 
				
			||||||
        last_post_user_id: fetch_from_db(db, 'topic_last_post_user', topic_id).to_i
 | 
					        last_post_user_id: fetch_db_topic_last_post_user(topic_id).to_i
 | 
				
			||||||
      )
 | 
					      )
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user