Class: SdrClient::Deposit::ModelProcess

Inherits:
Object
  • Object
show all
Defined in:
lib/sdr_client/deposit/model_process.rb

Overview

The process for doing a deposit from a Cocina Model

Instance Method Summary collapse

Constructor Details

#initialize(request_dro:, connection:, accession:, basepath:, priority: nil, files: [], assign_doi: false, logger: Logger.new($stdout)) ⇒ ModelProcess

Returns a new instance of ModelProcess.

Parameters:

  • request_dro (Cocina::Model::RequestDRO)

    for depositing

  • connection (Connection)

    the connection to use

  • accession (Boolean)

    should the accessionWF be started

  • priority (String) (defaults to: nil)

    (nil) what processing priority should be used either ‘low’ or ‘default’

  • files (Array<String>) (defaults to: [])

    a list of relative filepaths to upload

  • basepath (String)

    filepath to which filepaths are relative

  • assign_doi (Boolean) (defaults to: false)

    should a DOI be assigned to this item

  • logger (Logger) (defaults to: Logger.new($stdout))

    the logger to use



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/sdr_client/deposit/model_process.rb', line 18

def initialize(request_dro:, # rubocop:disable Metrics/ParameterLists
               connection:,
               accession:,
               basepath:,
               priority: nil,
               files: [],
               assign_doi: false,
               logger: Logger.new($stdout))
  @files = files
  @basepath = basepath
  @connection = connection
  @request_dro = request_dro
  @logger = logger
  @accession = accession
  @priority = priority
  @assign_doi = assign_doi
end

Instance Method Details

#runObject



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/sdr_client/deposit/model_process.rb', line 36

def run
  check_files_exist
  child_files_match

  # file_metadata is a map of relative filepaths to Files::DirectUploadRequests
   = UploadFilesMetadataBuilder.build(files: files, mime_types: mime_types, basepath: basepath)
  # upload_response is an array of Files::DirectUploadResponse
  upload_responses = UploadFiles.upload(file_metadata: ,
                                        filepath_map: filepath_map,
                                        logger: logger,
                                        connection: connection)

  new_request_dro = UpdateDroWithFileIdentifiers.update(request_dro: request_dro, upload_responses: upload_responses)
  CreateResource.run(accession: @accession,
                     priority: @priority,
                     assign_doi: @assign_doi,
                     metadata: new_request_dro,
                     logger: logger,
                     connection: connection)
end