Skip to content

Commit 89da511

Browse files
committed
WIP
1 parent cf628a6 commit 89da511

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

lib/tasks/import_data.rake

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,17 @@ namespace :import_data do
66

77
# This is a starting point for the import process
88
# We will refactor for elegance
9+
# It is not idempotent; it presumes a clean database except for seeds
10+
11+
desc "All"
12+
task all: [ :regions, :providers, :topics ]
913

1014
desc "Import Providers and Associate With Regions"
1115
task providers: :environment do
1216
file_path = Rails.root.join("import_files", "Providers.csv")
1317
data = CSV.read(file_path, headers: true)
1418
data.each do |row|
19+
# TODO: add old_provider_id to Provider model
1520
provider = Provider.find_or_create_by!(name: row["Provider_Name"], provider_type: row["Provider_Type"])
1621
region = Region.find_or_create_by!(name: row["region_name"])
1722
# TODO: we need the association table
@@ -22,7 +27,7 @@ namespace :import_data do
2227
puts "Provider #{provider.name} associated with region #{region.name}"
2328

2429
user = User.find_or_create_by!(email_address: "#{row["Provider_Name"].underscore.downcase}@update.me", password_digest: BCrypt::Password.create(row["Provider_Password"]), is_admin: false)
25-
# TODO: add provider_id once that association is in place
30+
user.update(provider_id: provider.id)
2631
puts "User #{user.email_address} created"
2732
end
2833
end
@@ -32,11 +37,18 @@ namespace :import_data do
3237
file_path = Rails.root.join("import_files", "Topics.csv")
3338
data = CSV.read(file_path, headers: true)
3439
data.each do |row|
35-
topic = Topic.find_or_create_by!(name: row["Topic_Name"])
36-
provider = Provider.find_by(name: row["Provider_Name"])
37-
topic.providers << provider
38-
puts "Topic #{topic.name} associated with provider #{provider.name}"
40+
# look up provider by old_provider_id
41+
provider = Provider.find_by(old_provider_id: row["Provider_ID"])
42+
# Language IDs should correspond to the IDs in old app
43+
# TODO: verify before final import
44+
topic = Topic.find_or_create_by!(name: row["Topic_Name"], provider_id: provider.id, description: row["Topic_Desc"],
45+
language_id: row["Language_ID"], uid: row["Topic_UID"], state: determine_state(row["Topic_Archived"], old_topic_id: row["topic_id"]))
46+
puts "Topic #{topic.name} created"
3947
end
40-
48+
end
49+
50+
def determine_state(archived)
51+
# TODO: validate against state enumerable
52+
archived ? "archived" : "published"
4153
end
4254
end

0 commit comments

Comments
 (0)