class AmazonPurchasesLedger::MergeService
Public Class Methods
new(csv_path_1, csv_path_2)
click to toggle source
# File lib/amazon_purchases_ledger/merge_service.rb, line 6 def initialize(csv_path_1, csv_path_2) @csv_path_1 = csv_path_1 @csv_path_2 = csv_path_2 @csvs = [CSV.table(@csv_path_1, headers: true), CSV.table(@csv_path_2, headers: true)] end
Public Instance Methods
items_csv()
click to toggle source
# File lib/amazon_purchases_ledger/merge_service.rb, line 32 def items_csv csvs_with_header(:title) end
orders()
click to toggle source
# File lib/amazon_purchases_ledger/merge_service.rb, line 22 def orders AmazonPurchasesLedger::Order::Factory.new(orders_csv: orders_csv, items_csv: items_csv) .orders end
orders_csv()
click to toggle source
# File lib/amazon_purchases_ledger/merge_service.rb, line 28 def orders_csv csvs_with_header(:total_charged) end
output_header_row()
click to toggle source
# File lib/amazon_purchases_ledger/merge_service.rb, line 36 def output_header_row AmazonPurchasesLedger::Order::OUTPUT_HEADER_ROW end
perform()
click to toggle source
TODO: Fix filepath (strings are not paths). Also, make this cross platform.
# File lib/amazon_purchases_ledger/merge_service.rb, line 13 def perform CSV.open("#{Dir.home}/Desktop/amazon_transactions_#{timestamp}.csv", "wb") do |csv| csv << output_header_row orders.each do |order| csv << order.output_row end end end
Private Instance Methods
csvs_with_header(header)
click to toggle source
# File lib/amazon_purchases_ledger/merge_service.rb, line 48 def csvs_with_header(header) csvs = @csvs.select { |csv| csv.headers.include?(header) } raise InvalidInputCsvs unless csvs.count == 1 csvs.first end
timestamp()
click to toggle source
# File lib/amazon_purchases_ledger/merge_service.rb, line 41 def timestamp Time.now.strftime('%Y-%m-%d_%H-%M-%S') end