73 lines
1.9 KiB
Ruby
73 lines
1.9 KiB
Ruby
require "roo"
|
|
|
|
# Seed supported languages
|
|
SUPPORTED_LANGUAGES = [
|
|
{ code: "fi", name: "Finnish", native_name: "Suomi", sort_order: 1 },
|
|
{ code: "en", name: "English", native_name: "English", sort_order: 2 },
|
|
{ code: "sv", name: "Swedish", native_name: "Svenska", sort_order: 3 },
|
|
{ code: "no", name: "Norwegian", native_name: "Norsk", sort_order: 4 },
|
|
{ code: "de", name: "German", native_name: "Deutsch", sort_order: 5 },
|
|
{ code: "ru", name: "Russian", native_name: "Русский", sort_order: 6 }
|
|
].freeze
|
|
|
|
SUPPORTED_LANGUAGES.each do |lang|
|
|
SupportedLanguage.find_or_create_by!(code: lang[:code]) do |record|
|
|
record.assign_attributes(lang.except(:code))
|
|
end
|
|
end
|
|
|
|
puts "Seeded #{SupportedLanguage.count} languages"
|
|
|
|
# Import entries from Excel
|
|
HEADER_TO_LANG = {
|
|
"Finnish" => :fi,
|
|
"English" => :en,
|
|
"Swedish" => :sv,
|
|
"Norwegian" => :no,
|
|
"German" => :de,
|
|
"Russian" => :ru
|
|
}.freeze
|
|
|
|
source_path = Rails.root.join("public", "Kristillisyyden sanasto ver 23.5.2013.xlsx")
|
|
|
|
unless source_path.exist?
|
|
abort "Seed file not found: #{source_path}"
|
|
end
|
|
|
|
sheet = Roo::Excelx.new(source_path.to_s).sheet(0)
|
|
headers = sheet.row(1).map { |cell| cell.to_s.strip }
|
|
|
|
column_map = headers.each_with_index.filter_map do |header, index|
|
|
lang = HEADER_TO_LANG[header]
|
|
[ lang, index ] if lang
|
|
end.to_h
|
|
|
|
if column_map.empty?
|
|
abort "No language columns found in headers: #{headers.inspect}"
|
|
end
|
|
|
|
puts "Found columns: #{column_map.keys.join(', ')}"
|
|
puts "Importing entries..."
|
|
|
|
imported = 0
|
|
skipped = 0
|
|
|
|
sheet.each_row_streaming(offset: 1) do |row|
|
|
translations = column_map.transform_values do |index|
|
|
row[index]&.value.to_s.strip.presence
|
|
end
|
|
|
|
if translations.values.none?
|
|
skipped += 1
|
|
next
|
|
end
|
|
|
|
Entry.find_or_create_by!(translations) do |entry|
|
|
entry.category = :word
|
|
end
|
|
|
|
imported += 1
|
|
end
|
|
|
|
puts "Imported #{imported} entries, skipped #{skipped} empty rows"
|