class Document

Public Instance Methods

scan(base: nil) click to toggle source
# File lib/statements/models/document.rb, line 6
def scan(base: nil)
  path = base + self.path
  md5 = Digest::MD5.file(path).hexdigest.downcase
  print "Scanning #{self.path} ... "
  if md5 == self.md5
    puts 'skipping (unchanged)'
  else
    reader = Statements::Reader.for_file(path)
    if reader
      Transaction.delete_all document: self if persisted?
      reader.transactions.each do |t|
        t.document = self
        t.save! unless Transaction.find_by('checksum = ? AND document_id != ?', t.checksum!, id || 0)
      end
      puts "added #{transactions.count} transactions(s)"
    else
      puts 'skipping (unknown format)'
    end
  end
  self.md5 = md5
  save!
end