Skip to content
Snippets Groups Projects
Unverified Commit e2fc50af authored by Khemissi Amir's avatar Khemissi Amir Committed by GitHub
Browse files

Resources migration: Minor improvement to tasks. (#4015)

+ Added capitalization on migrated roles names.
	+ Auto mapping of v2 default roles names to v3 names.
	+ Better filtering to migrated users records.
parent 42373e20
No related branches found
No related tags found
No related merge requests found
# frozen_string_literal: true # frozen_string_literal: true
namespace :migrations do namespace :migrations do
DEFAULT_ROLES_MAP = { "admin" => "Administrator", "user" => "User" }.freeze
COMMON = { COMMON = {
headers: { "Content-Type" => "application/json" }, headers: { "Content-Type" => "application/json" },
batch_size: 1000, batch_size: 1000,
...@@ -13,7 +14,7 @@ namespace :migrations do ...@@ -13,7 +14,7 @@ namespace :migrations do
Role.select(:id, :name) Role.select(:id, :name)
.where.not(name: Role::RESERVED_ROLE_NAMES) .where.not(name: Role::RESERVED_ROLE_NAMES)
.find_each(batch_size: COMMON[:batch_size]) do |r| .find_each(batch_size: COMMON[:batch_size]) do |r|
params = { role: { name: r.name } } params = { role: { name: r.name.capitalize } }
response = Net::HTTP.post(uri('roles'), payload(params), COMMON[:headers]) response = Net::HTTP.post(uri('roles'), payload(params), COMMON[:headers])
case response case response
...@@ -39,10 +40,14 @@ namespace :migrations do ...@@ -39,10 +40,14 @@ namespace :migrations do
start, stop = range(args) start, stop = range(args)
has_encountred_issue = 0 has_encountred_issue = 0
filtered_roles_names = Role::RESERVED_ROLE_NAMES - %w[admin user]
User.select(:id, :uid, :name, :email, :social_uid, :language, :role_id) User.select(:id, :uid, :name, :email, :social_uid, :language, :role_id)
.joins(:role)
.where.not(roles: { name: filtered_roles_names }, deleted: true)
.find_each(start: start, finish: stop, batch_size: COMMON[:batch_size]) do |u| .find_each(start: start, finish: stop, batch_size: COMMON[:batch_size]) do |u|
params = { user: { name: u.name, email: u.email, external_id: u.social_uid, language: u.language, role: u.role.name } } role_name = infer_role_name(u.role.name)
params = { user: { name: u.name, email: u.email, external_id: u.social_uid, language: u.language, role: role_name } }
response = Net::HTTP.post(uri('users'), payload(params), COMMON[:headers]) response = Net::HTTP.post(uri('users'), payload(params), COMMON[:headers])
case response case response
...@@ -111,4 +116,8 @@ namespace :migrations do ...@@ -111,4 +116,8 @@ namespace :migrations do
[start, stop] [start, stop]
end end
def infer_role_name(name)
DEFAULT_ROLES_MAP[name] || name.capitalize
end
end end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment