class Longleaf::MetadataPersistenceManager

Handles the persistence of metadata records

Public Class Methods

new(index_manager) click to toggle source

Initialize the MetadataPersistenceManager @param index_manager [IndexManager] system config manager

# File lib/longleaf/services/metadata_persistence_manager.rb, line 10
def initialize(index_manager)
  @index_manager = index_manager
end

Public Instance Methods

index(file_rec) click to toggle source

Index metadata for the provided file record @param file_rec [FileRecord] file record

# File lib/longleaf/services/metadata_persistence_manager.rb, line 31
def index(file_rec)
  if @index_manager.using_index?
    @index_manager.index(file_rec)
  end
end
load(file_rec) click to toggle source

Load the metadata record for the provided file record @param file_rec [FileRecord] file record @return [MetadataRecord] the metadata record for the file record

# File lib/longleaf/services/metadata_persistence_manager.rb, line 40
def load(file_rec)
  md_rec = MetadataDeserializer.deserialize(file_path: file_rec.metadata_path,
              digest_algs: file_rec.storage_location.metadata_location.digests)
  file_rec.metadata_record = md_rec
  md_rec
end
persist(file_rec) click to toggle source

Persist the metadata for the provided file record to all configured destinations. This may include to disk as well as to an index. @param file_rec [FileRecord] file record

# File lib/longleaf/services/metadata_persistence_manager.rb, line 17
def persist(file_rec)
  if file_rec.metadata_record.nil?
    raise MetadataError.new("No metadata record provided, cannot persist metadata for #{file_rec.path}")
  end

  MetadataSerializer::write(metadata: file_rec.metadata_record,
      file_path: file_rec.metadata_path,
      digest_algs: file_rec.storage_location.metadata_location.digests)

  index(file_rec)
end