Class: SourceMonitor::Fetching::Completion::RetentionHandler

Inherits:
Object
  • Object
show all
Defined in:
lib/source_monitor/fetching/completion/retention_handler.rb

Overview

Applies item retention after a fetch completes.

Defined Under Namespace

Classes: Result

Instance Method Summary collapse

Constructor Details

#initialize(pruner: SourceMonitor::Items::RetentionPruner) ⇒ RetentionHandler

Returns a new instance of RetentionHandler.



14
15
16
# File 'lib/source_monitor/fetching/completion/retention_handler.rb', line 14

def initialize(pruner: SourceMonitor::Items::RetentionPruner)
  @pruner = pruner
end

Instance Method Details

#call(source:, result:) ⇒ Object

rubocop:disable Lint/UnusedMethodArgument



18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/source_monitor/fetching/completion/retention_handler.rb', line 18

def call(source:, result:) # rubocop:disable Lint/UnusedMethodArgument
  pruner_result = pruner.call(
    source: source,
    strategy: SourceMonitor.config.retention.strategy
  )
  removed = pruner_result.respond_to?(:removed_total) ? pruner_result.removed_total : 0
  Result.new(status: :applied, removed_total: removed)
rescue StandardError => error
  Rails.logger.error(
    "[SourceMonitor::Fetching::Completion::RetentionHandler] Retention pruning failed for source #{source.id}: #{error.class} - #{error.message}"
  )
  Result.new(status: :failed, removed_total: 0, error: error)
end