class CanvasSync::Jobs::SyncRolesJob

def perform(options)

Parameters:
  • options (Hash) --
def perform(options)
  updated_role_ids = []
  api_client = CanvasSync.get_canvas_sync_client(batch_context)
  CanvasSync.sync_scope(Account).find_each do |acc|
    api_client.list_roles(acc.canvas_id, state: %w[active inactive]).all_pages_each do |role_params|
      role = update_or_create_model(Role, role_params)
      updated_role_ids.push(role.id)
    end
  end
  Role.where.not(id: updated_role_ids).update_all(workflow_state: 'inactive')
end