Skip to content

Instantly share code, notes, and snippets.

@jonahgeorge
Created December 21, 2015 17:31
Show Gist options
  • Select an option

  • Save jonahgeorge/b4e1a1563b17515dec41 to your computer and use it in GitHub Desktop.

Select an option

Save jonahgeorge/b4e1a1563b17515dec41 to your computer and use it in GitHub Desktop.
class CourseCatalogSyncJob < ActiveJob::Base
queue_as :default
def perform(*args)
OsuCcScraper::Department.all.each do |department|
@department = Department.where({
subject_code: department.subject_code
}).first
unless @department
@department = Department.new(department_params(department))
else
@department.update_attributes(department_params(department))
end
@department.save
department.courses.each do |course|
@course = Course.joins(:department).where({
'departments.subject_code': @department.subject_code,
course_number: course.course_number
}).first
unless @course
@course = Course.new(course_params(@department, course))
else
@course.update_attributes(course_params(@department, course))
end
@course.save
course.sections.each do |section|
@section = Section.joins(course: :department).where({
number: section.number,
'departments.subject_code': @department.subject_code,
'courses.course_number': @course.course_number
}).first
unless @section
@section = Section.new(section_params(@course, section))
else
@section.update_attributes(section_params(@course, section))
end
@section.save
end
end
end
end
private
def department_params department
{
name: department.name,
subject_code: department.subject_code,
}
end
def course_params department, course
{
name: course.name,
department_id: department.id,
course_number: course.course_number,
}
end
def section_params course, section
{
course_id: course.id,
number: section.number,
# department
# number
# name
# term
# section
# instructor
# type
# status
# capacity
# availability
}
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment