FIX: phpBB3 importer failed to import users

FEATURE: Skip batches if posts or messages exists
This commit is contained in:
Gerhard Schlager 2015-09-30 17:56:37 +02:00
parent 29d27ec2ef
commit a03ead9767
5 changed files with 28 additions and 5 deletions

View file

@ -13,7 +13,7 @@ module ImportScripts::PhpBB3
# Executes a database query. # Executes a database query.
def query(sql) def query(sql)
@database_client.query(sql, cache_rows: false, symbolize_keys: true) @database_client.query(sql, cache_rows: true, symbolize_keys: true)
end end
# Executes a database query and returns the value of the 'count' column. # Executes a database query and returns the value of the 'count' column.

View file

@ -56,7 +56,7 @@ module ImportScripts::PhpBB3
rows = @database.fetch_users(offset) rows = @database.fetch_users(offset)
break if rows.size < 1 break if rows.size < 1
next if all_records_exist? :users, importer.map_to_import_ids(rows) next if all_records_exist?(:users, importer.map_users_to_import_ids(rows))
create_users(rows, total: total_count, offset: offset) do |row| create_users(rows, total: total_count, offset: offset) do |row|
importer.map_user(row) importer.map_user(row)
@ -73,6 +73,8 @@ module ImportScripts::PhpBB3
rows = @database.fetch_anonymous_users(offset) rows = @database.fetch_anonymous_users(offset)
break if rows.size < 1 break if rows.size < 1
next if all_records_exist?(:users, importer.map_anonymous_users_to_import_ids(rows))
create_users(rows, total: total_count, offset: offset) do |row| create_users(rows, total: total_count, offset: offset) do |row|
importer.map_anonymous_user(row) importer.map_anonymous_user(row)
end end
@ -98,6 +100,8 @@ module ImportScripts::PhpBB3
rows = @database.fetch_posts(offset) rows = @database.fetch_posts(offset)
break if rows.size < 1 break if rows.size < 1
next if all_records_exist?(:posts, importer.map_to_import_ids(rows))
create_posts(rows, total: total_count, offset: offset) do |row| create_posts(rows, total: total_count, offset: offset) do |row|
importer.map_post(row) importer.map_post(row)
end end
@ -118,6 +122,8 @@ module ImportScripts::PhpBB3
rows = @database.fetch_messages(@settings.fix_private_messages, offset) rows = @database.fetch_messages(@settings.fix_private_messages, offset)
break if rows.size < 1 break if rows.size < 1
next if all_records_exist?(:posts, importer.map_to_import_ids(rows))
create_posts(rows, total: total_count, offset: offset) do |row| create_posts(rows, total: total_count, offset: offset) do |row|
importer.map_message(row) importer.map_message(row)
end end

View file

@ -13,12 +13,17 @@ module ImportScripts::PhpBB3
@settings = settings @settings = settings
end end
def map_to_import_ids(rows)
rows.map { |row| get_import_id(row) }
end
def map_message(row) def map_message(row)
user_id = @lookup.user_id_from_imported_user_id(row[:author_id]) || Discourse.system_user.id user_id = @lookup.user_id_from_imported_user_id(row[:author_id]) || Discourse.system_user.id
attachments = import_attachments(row, user_id) attachments = import_attachments(row, user_id)
mapped = { mapped = {
id: "pm:#{row[:msg_id]}", id: get_import_id(row),
user_id: user_id, user_id: user_id,
created_at: Time.zone.at(row[:message_time]), created_at: Time.zone.at(row[:message_time]),
raw: @text_processor.process_private_msg(row[:message_text], attachments) raw: @text_processor.process_private_msg(row[:message_text], attachments)
@ -79,5 +84,9 @@ module ImportScripts::PhpBB3
import_user_id.to_s == author_id.to_s ? nil : @lookup.find_user_by_import_id(import_user_id).try(:username) import_user_id.to_s == author_id.to_s ? nil : @lookup.find_user_by_import_id(import_user_id).try(:username)
end.compact end.compact
end end
def get_import_id(row)
"pm:#{row[:msg_id]}"
end
end end
end end

View file

@ -13,6 +13,10 @@ module ImportScripts::PhpBB3
@settings = settings @settings = settings
end end
def map_to_import_ids(rows)
rows.map { |row| row[:post_id] }
end
def map_post(row) def map_post(row)
imported_user_id = row[:post_username].blank? ? row[:poster_id] : row[:post_username] imported_user_id = row[:post_username].blank? ? row[:poster_id] : row[:post_username]
user_id = @lookup.user_id_from_imported_user_id(imported_user_id) || Discourse.system_user.id user_id = @lookup.user_id_from_imported_user_id(imported_user_id) || Discourse.system_user.id

View file

@ -9,8 +9,8 @@ module ImportScripts::PhpBB3
@settings = settings @settings = settings
end end
def map_to_import_ids(array) def map_users_to_import_ids(rows)
array.map {|u| u[:user_id]} rows.map { |row| row[:user_id] }
end end
def map_user(row) def map_user(row)
@ -42,6 +42,10 @@ module ImportScripts::PhpBB3
} }
end end
def map_anonymous_users_to_import_ids(rows)
rows.map { |row| row[:post_username] }
end
def map_anonymous_user(row) def map_anonymous_user(row)
username = row[:post_username] username = row[:post_username]