discourse/script/import_scripts/phpbb3/database/database_base.rb

48 lines
1.1 KiB
Ruby

# frozen_string_literal: true
module ImportScripts::PhpBB3
class DatabaseBase
# @param database_client [Mysql2::Client]
# @param database_settings [ImportScripts::PhpBB3::DatabaseSettings]
def initialize(database_client, database_settings)
@database_client = database_client
@batch_size = database_settings.batch_size
@table_prefix = database_settings.table_prefix
end
protected
# Executes a database query.
def query(sql, *last_columns)
rows = @database_client.query(sql, cache_rows: true, symbolize_keys: true)
return rows if last_columns.length == 0
result = [rows]
last_row = find_last_row(rows)
last_columns.each { |column| result.push(last_row ? last_row[column] : nil) }
result
end
# Executes a database query and returns the value of the 'count' column.
def count(sql)
query(sql).first[:count]
end
def escape(value)
@database_client.escape(value)
end
private
def find_last_row(rows)
last_index = rows.size - 1
rows.each_with_index { |row, index| return row if index == last_index }
nil
end
end
end