class Eco::API::UseCases::DefaultCases::OrgDataConvertCase

Attributes

options[R]
session[R]

Public Instance Methods

main(people, session, options, usecase) click to toggle source
# File lib/eco/api/usecases/default_cases/org_data_convert_case.rb, line 24
def main(people, session, options, usecase)
  @options = options
  @session = session
  org_data_convert(people)
end
org_data_convert(people) click to toggle source
# File lib/eco/api/usecases/default_cases/org_data_convert_case.rb, line 7
def org_data_convert(people)
  pp "Going to convert data from '#{source_enviro}' to '#{ASSETS.active_config}'"
  puts "\n"
  people.each.with_index do |person, i|
    if (i % 10 == 0)
      percent = i * 100 / people.length
      print "Processing: #{percent.round}% (#{i}/#{people.length} entries)\r"
      $stdout.flush
    end

    person.id = nil
    details_convert!(person)
    account_convert!(person)
  end
  people
end

Private Instance Methods

account_convert!(person) click to toggle source
# File lib/eco/api/usecases/default_cases/org_data_convert_case.rb, line 32
def account_convert!(person)
  if account = person.account
    account.policy_group_ids = policy_groups_convert(account.policy_group_ids)
    account.doc.tap do |doc|
      ["login_provider_ids", "starred_ids", "landing_page_id"].map do |attr|
        doc.delete(attr)
      end
    end
  end
end
details_convert!(person) click to toggle source
# File lib/eco/api/usecases/default_cases/org_data_convert_case.rb, line 43
def details_convert!(person)
  if person.details
    person.details.as_json.tap do |details_doc|
      details_doc["schema_id"] = @session.schema.id
      person.add_details(@session.schema)
      person.details = details_doc
    end
  end
end
error(msg) click to toggle source
# File lib/eco/api/usecases/default_cases/org_data_convert_case.rb, line 96
def error(msg)
  logger.error(msg)
  exit(1)
end
ignore_missing_policy_groups?() click to toggle source
# File lib/eco/api/usecases/default_cases/org_data_convert_case.rb, line 88
def ignore_missing_policy_groups?
  options.dig(:ignore, :missing, :policy_groups)
end
logger() click to toggle source
# File lib/eco/api/usecases/default_cases/org_data_convert_case.rb, line 92
def logger
  @session.logger
end
policy_groups_convert(ids) click to toggle source
# File lib/eco/api/usecases/default_cases/org_data_convert_case.rb, line 53
def policy_groups_convert(ids)
  ids.map do |id|
    unless name = source_policy_groups.to_name(id) || ignore_missing_policy_groups?
      msg  = "Ops, do not know #{id} usergroup for source environment"
      msg += "\nUse the option -ignore-missing-policy-groups if you do not care"
      error(msg)
    end
    session.policy_groups.to_id(name).tap do |new_id|
      unless new_id || ignore_missing_policy_groups?
        msg  = "Ops, do not know #{name} usergroup for destination environment"
        msg += "\nUse the option -ignore-missing-policy-groups if you do not care"
        error(msg)
      end
    end
  end.compact
end
source_config() click to toggle source
# File lib/eco/api/usecases/default_cases/org_data_convert_case.rb, line 74
def source_config
  @source_config ||= ASSETS.config(key: source_enviro, update_active: false).tap do |config|
    unless config
      error("The source environment '#{source_enviro}' does not exit or is not configured")
    end
  end
end
source_enviro() click to toggle source
# File lib/eco/api/usecases/default_cases/org_data_convert_case.rb, line 82
def source_enviro
  @source_enviro ||= options.dig(:source_enviro).tap do |enviro|
    error("A source environment is required to migrate data from") unless enviro
  end
end
source_policy_groups() click to toggle source
# File lib/eco/api/usecases/default_cases/org_data_convert_case.rb, line 70
def source_policy_groups
  source_config.policy_groups
end