af83/chouette-core

View on GitHub
app/inserters/timestamps_inserter.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

class TimestampsInserter
  def initialize(_target, now_provider: Time.zone)
    @now_provider = now_provider
  end

  attr_reader :now_provider

  def now
    @now ||= now_provider.now
  end

  TIMESTAMPS = %i[created_at= updated_at=].freeze
  def each_timestamp(&block)
    TIMESTAMPS.each(&block)
  end

  def insert(model, _options = {})
    each_timestamp do |timestamp_setter|
      model.send timestamp_setter, now if model.respond_to?(timestamp_setter)
    end
  end
end