19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
# File 'app/models/caddie/crest_price_history_update.rb', line 19
def self.feed_price_histories( thread_id = nil )
total_connections_counts = 0
total_inserts = 0
date_deb = Time.now
dol = daily_operations_list
dol = dol.where( thread_slice_id: thread_id ) if thread_id
dol.joins( :eve_item, :region ).pluck( :eve_item_id, :region_id, :cpp_eve_item_id, :cpp_region_id ).each do |row|
eve_item_id, region_id, cpp_eve_item_id, cpp_region_id = row
items = []
connections_count = 0
begin
items, connections_count = get_markets( cpp_region_id, cpp_eve_item_id )
rescue OpenURI::HTTPError => e
puts e.inspect
end
total_connections_counts += connections_count
ActiveRecord::Base.transaction do
timestamps = CrestPriceHistory.where( region_id: region_id, eve_item_id: eve_item_id ).pluck( :day_timestamp ).to_set
items.reject! do |item|
date_info = DateTime.parse( item['date'] )
date_info_ts = date_info.strftime( '%Y%m%d' )
timestamps.include?( date_info_ts )
end
items.each do |item_data|
date_info = DateTime.parse( item_data['date'] )
date_info_ts = date_info.strftime( '%Y%m%d' )
CrestPriceHistory.create!( region_id: region_id, eve_item_id: eve_item_id, day_timestamp: date_info_ts,
history_date: date_info, order_count: item_data['orderCount'], volume: item_data['volume'],
low_price: item_data['lowPrice'], avg_price: item_data['avgPrice'], high_price: item_data['highPrice'] )
total_inserts += 1
end
end
end
[ total_inserts, total_connections_counts, Time.now - date_deb ]
end
|