Skip to content

Bulkrax::ImporterJob Overview

Jeremy Friesen edited this page Oct 20, 2022 · 2 revisions

In Bulkrax we have a primary job: Bulkrax::ImporterJob, it handles importing both collections and works via the Bulkrax::Importer#import_collections and Bullkrax::Importer#import_works. Below are the two sequence diagrams for performing the Bulkrax::ImportCollectionJob and Bulkrax::ImportWorkJob

The Collections

@startuml
!theme amiga
"Bulkrax::ImporterJob\n\t#perform" -> "Bulkrax::Importer\n\t#import_collections"
"Bulkrax::Importer\n\t#import_collections" -> "Bulkrax::Importer\n\t#parser_class\n\t#create_collections"
"Bulkrax::Importer\n\t#parser_class\n\t#create_collections" -> "Bulkrax::ImportCollectionJob\n\t#perform"
@enduml

The Works

@startuml
!theme amiga
"Bulkrax::ImporterJob\n\t#perform" -> "Bulkrax::Importer\n\t#import_works"
"Bulkrax::Importer\n\t#import_works"  -> "Bulkrax::Importer\n\t#parser_class\n\t#create_works"
"Bulkrax::Importer\n\t#parser_class\n\t#create_works" -> "Bulkrax::ImportWorkJob\n\t#perform"
@enduml

Both Bulkrax::ImportWorkJob and Bulkrax::ImportCollectionJob then rely on the Bulkrax::Entry to run.

For imports, we look to Bulkrax::ImportBehavior.

@startuml
!theme amiga
"Bulkrax::Entry\n\t#build_for_importer" -> "Bulkrax::Entry\n\t#factory"
"Bulkrax::Entry\n\t#factory" <-> "Bulkrax::ObjectFactory\n\t.new"
"Bulkrax::Entry\n\t#build_for_importer" <- "Bulkrax::Entry\n\t#factory" : "returns Bulkrax::ObjectFactory instance"
"Bulkrax::Entry\n\t#build_for_importer" -> "Bulkrax::ObjectFactory\n\t.run!"
"Bulkrax::ObjectFactory\n\t.run!" -> "Bulkrax::ObjectFactory #create or #update"
"Bulkrax::Entry\n\t#build_for_importer" <- "Bulkrax::ObjectFactory\n\t#create or #update"
"Bulkrax::Entry\n\t#build_for_importer" <-> "Bulkrax::PendingRelationship\n\t.create!" : "for parent(s)"
"Bulkrax::Entry\n\t#build_for_importer" <-> "Bulkrax::PendingRelationship\n\t.create!" : "for children"
@enduml

Within the Bulkrax::ObjectFactory is where Bulkrax connects into Hyrax’s actor stack to perform creates and updates to the Work and Collection objects.

Clone this wiki locally