module CanvasSync::Concerns::Account::Ancestry

def ancestry_after_sync

def ancestry_after_sync
  trails = {}
  includes(:canvas_parent).find_each do |account|
    parent = account.canvas_parent
    trail = trails[parent.canvas_id] if parent.present?
    if trail.present?
      account.ancestry = trail
      new_trail = "#{trail}/#{account.id.to_s}"
    elsif parent.present?
      account.parent = parent
      new_trail = "#{account.ancestry}/#{account.id.to_s}"
    else
      account.parent = parent
      new_trail = account.id.to_s
    end
    trails[account.canvas_id] = new_trail
    account.save! if account.changed?
  end
end

def ensure_ancestry

def ensure_ancestry
  return unless canvas_parent_account_id.present?
  return if canvas_parent.present?
  self.canvas_parent = Account.find_or_fetch(canvas_parent_account_id)
  canvas_parent.save!
  canvas_parent.ensure_ancestry
  relink_ancestry
  save! if changed?
end

def relink_ancestry

def relink_ancestry
  self.parent = canvas_parent
end