Skip to content

Commit 1149c90

Browse files
authored
Merge pull request #682 from shaojunda/shaojunda-add-flush-cache
2 parents f97746e + 600cc31 commit 1149c90

File tree

7 files changed

+54
-3
lines changed

7 files changed

+54
-3
lines changed

app/controllers/api/v1/daily_statistics_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ class DailyStatisticsController < ApplicationController
44
before_action :validate_query_params, only: :show
55

66
def show
7-
daily_statistics = DailyStatistic.order(:created_at_unixtimestamp).limit(365)
7+
daily_statistics = DailyStatistic.order(:created_at_unixtimestamp)
88
render json: DailyStatisticSerializer.new(daily_statistics, { params: { indicator: params[:id] } })
99
end
1010

app/models/statistic_info.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,10 @@ def maintenance_info
8585
Rails.cache.fetch("maintenance_info")
8686
end
8787

88+
def flush_cache_info
89+
Rails.cache.realize("flush_cache_info") || []
90+
end
91+
8892
private
8993

9094
attr_reader :hash_rate_statistical_interval, :average_block_time_interval

app/serializers/statistic_serializer.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ class StatisticSerializer
2525
params && params[:info_name] == "blockchain_info"
2626
}
2727

28+
attribute :flush_cache_info, if: Proc.new { |_record, params|
29+
params && params[:info_name] == "flush_cache_info"
30+
}
31+
2832
attribute :address_balance_ranking, if: Proc.new { |_record, params|
2933
params && params[:info_name] == "address_balance_ranking"
3034
}

doc/api.raml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -540,6 +540,9 @@ types:
540540
"hash_rate": {
541541
type: "string",
542542
},
543+
"flush_cache_info": {
544+
type: "string[]"
545+
}
543546
"blockchain_info": {
544547
type: "object"
545548
},
@@ -2429,6 +2432,19 @@ types:
24292432
}
24302433
}
24312434
}
2435+
flush_cache_info: |
2436+
{
2437+
"data": {
2438+
"id": "1594109792",
2439+
"type": "statistic",
2440+
"attributes": {
2441+
"flush_cache_info": [
2442+
"liquidity",
2443+
"deposit_compensation"
2444+
]
2445+
}
2446+
}
2447+
}
24322448
address_balance_ranking: |
24332449
{
24342450
"data": {
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
desc "Usage: RAILS_ENV=production bundle exec rake 'set_flush_cache_info[liquidity deposit_compensation, true]'"
2+
task :set_flush_cache_info, [:indicators, :dry_run] => :environment do |_, args|
3+
raise "please input indicators" if args[:indicators].blank?
4+
binding.pry
5+
6+
indicators = args[:indicators].split(" ")
7+
dry_run = args[:dry_run] || "true"
8+
if dry_run == "true"
9+
puts "indicators: #{indicators.join(", ")}"
10+
else
11+
Rails.cache.write("flush_cache_info", indicators, expires_in: 1.day)
12+
puts "done"
13+
end
14+
end

public/api_doc.html

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1083,7 +1083,7 @@
10831083
}
10841084
]
10851085
}
1086-
</code></pre></div></div></div></div></div></div></div></div><div class="panel panel-white resource-modal"><div class="panel-heading"><h4 class="panel-title"><a class="collapsed" data-toggle="collapse" href="#panel_statistics__info_name_"><span class="parent">/statistics</span>/{info_name}</a> <span class="methods"><a href="#statistics__info_name__get"><span class="badge badge_get">get</span></a></span></h4></div><div id="panel_statistics__info_name_" class="panel-collapse collapse"><div class="panel-body"><div class="list-group"><div onclick="window.location.href = '#statistics__info_name__get'" class="list-group-item"><span class="badge badge_get">get</span><div class="method_description"><p>Returns the specific statistic info</p></div><div class="clearfix"></div></div></div></div></div><div class="modal fade" tabindex="0" id="statistics__info_name__get"><div class="modal-dialog modal-lg"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button><h4 class="modal-title" id="myModalLabel"><span class="badge badge_get">get</span> <span class="parent">/statistics</span>/{info_name}</h4></div><div class="modal-body"><div class="alert alert-info"><p>Returns the specific statistic info</p></div><ul class="nav nav-tabs"><li class="active"><a href="#statistics__info_name__get_request" data-toggle="tab">Request</a></li><li><a href="#statistics__info_name__get_response" data-toggle="tab">Response</a></li></ul><div class="tab-content"><div class="tab-pane active" id="statistics__info_name__get_request"><h3>URI Parameters</h3><ul><li><strong>info_name</strong>: <em><span class="required">required</span>(string)</em><p>The statistic info name</p></li></ul></div><div class="tab-pane" id="statistics__info_name__get_response"><h2>HTTP status code <a href="http://httpstatus.es/200" target="_blank">200</a></h2><h3>Body</h3><p><strong>Media type</strong>: application/vnd.api+json</p><p><strong>Type</strong>: object</p><strong>Properties</strong><ul><li><strong>data</strong>: <em><span class="required">required</span>(object)</em><ul><li><strong>tip_block_number</strong>: <em><span class="required">required</span>(string)</em></li><li><strong>average_block_time</strong>: <em><span class="required">required</span>(string)</em></li><li><strong>current_epoch_difficulty</strong>: <em><span class="required">required</span>(string)</em></li><li><strong>hash_rate</strong>: <em><span class="required">required</span>(string)</em></li><li><strong>blockchain_info</strong>: <em><span class="required">required</span>(object)</em><ul></ul></li><li><strong>address_balance_ranking</strong>: <em><span class="required">required</span>(object)</em><ul><li><strong>ranking</strong>: <em><span class="required">required</span>(string)</em></li><li><strong>address</strong>: <em><span class="required">required</span>(string)</em></li><li><strong>balance</strong>: <em><span class="required">required</span>(string)</em></li></ul></li><li><strong>maintenance_info"</strong>: <em><span class="required">required</span>(object)</em><ul><li><strong>stat_at</strong>: <em><span class="required">required</span>(string)</em></li><li><strong>end_at</strong>: <em><span class="required">required</span>(string)</em></li></ul></li></ul></li></ul><p><strong>Examples</strong>:</p><div class="examples"><p><strong>tip_block_number</strong>:<br></p><pre><code>{
1086+
</code></pre></div></div></div></div></div></div></div></div><div class="panel panel-white resource-modal"><div class="panel-heading"><h4 class="panel-title"><a class="collapsed" data-toggle="collapse" href="#panel_statistics__info_name_"><span class="parent">/statistics</span>/{info_name}</a> <span class="methods"><a href="#statistics__info_name__get"><span class="badge badge_get">get</span></a></span></h4></div><div id="panel_statistics__info_name_" class="panel-collapse collapse"><div class="panel-body"><div class="list-group"><div onclick="window.location.href = '#statistics__info_name__get'" class="list-group-item"><span class="badge badge_get">get</span><div class="method_description"><p>Returns the specific statistic info</p></div><div class="clearfix"></div></div></div></div></div><div class="modal fade" tabindex="0" id="statistics__info_name__get"><div class="modal-dialog modal-lg"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button><h4 class="modal-title" id="myModalLabel"><span class="badge badge_get">get</span> <span class="parent">/statistics</span>/{info_name}</h4></div><div class="modal-body"><div class="alert alert-info"><p>Returns the specific statistic info</p></div><ul class="nav nav-tabs"><li class="active"><a href="#statistics__info_name__get_request" data-toggle="tab">Request</a></li><li><a href="#statistics__info_name__get_response" data-toggle="tab">Response</a></li></ul><div class="tab-content"><div class="tab-pane active" id="statistics__info_name__get_request"><h3>URI Parameters</h3><ul><li><strong>info_name</strong>: <em><span class="required">required</span>(string)</em><p>The statistic info name</p></li></ul></div><div class="tab-pane" id="statistics__info_name__get_response"><h2>HTTP status code <a href="http://httpstatus.es/200" target="_blank">200</a></h2><h3>Body</h3><p><strong>Media type</strong>: application/vnd.api+json</p><p><strong>Type</strong>: object</p><strong>Properties</strong><ul><li><strong>data</strong>: <em><span class="required">required</span>(object)</em><ul><li><strong>tip_block_number</strong>: <em><span class="required">required</span>(string)</em></li><li><strong>average_block_time</strong>: <em><span class="required">required</span>(string)</em></li><li><strong>current_epoch_difficulty</strong>: <em><span class="required">required</span>(string)</em></li><li><strong>hash_rate</strong>: <em><span class="required">required</span>(string)</em></li><li><strong>flush_cache_info</strong>: <em><span class="required">required</span>(array of string)</em></li><li><strong>blockchain_info"</strong>: <em><span class="required">required</span>(object)</em><ul></ul></li><li><strong>address_balance_ranking</strong>: <em><span class="required">required</span>(object)</em><ul><li><strong>ranking</strong>: <em><span class="required">required</span>(string)</em></li><li><strong>address</strong>: <em><span class="required">required</span>(string)</em></li><li><strong>balance</strong>: <em><span class="required">required</span>(string)</em></li></ul></li><li><strong>maintenance_info"</strong>: <em><span class="required">required</span>(object)</em><ul><li><strong>stat_at</strong>: <em><span class="required">required</span>(string)</em></li><li><strong>end_at</strong>: <em><span class="required">required</span>(string)</em></li></ul></li></ul></li></ul><p><strong>Examples</strong>:</p><div class="examples"><p><strong>tip_block_number</strong>:<br></p><pre><code>{
10871087
"data": {
10881088
"id": "1",
10891089
"type": "statistic_info",
@@ -1148,6 +1148,18 @@
11481148
}
11491149
}
11501150
}
1151+
</code></pre><p><strong>flush_cache_info</strong>:<br></p><pre><code>{
1152+
"data": {
1153+
"id": "1594109792",
1154+
"type": "statistic",
1155+
"attributes": {
1156+
"flush_cache_info": [
1157+
"liquidity",
1158+
"deposit_compensation"
1159+
]
1160+
}
1161+
}
1162+
}
11511163
</code></pre><p><strong>address_balance_ranking</strong>:<br></p><pre><code>{
11521164
"data": {
11531165
"id": "1562726172",

test/controllers/api/v1/daily_statistics_controller_test.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ class DailyStatisticsControllerTest < ActionDispatch::IntegrationTest
4848
end
4949

5050
test "should return addresses count and timestamp" do
51-
daily_statistic_data = create_list(:daily_statistic, 15)
51+
create_list(:daily_statistic, 15)
52+
daily_statistic_data = DailyStatistic.order(:created_at_unixtimestamp)
5253
valid_get api_v1_daily_statistic_url("addresses_count")
5354

5455
assert_equal [%w(addresses_count created_at_unixtimestamp).sort], json.dig("data").map { |item| item.dig("attributes").keys.sort }.uniq

0 commit comments

Comments
 (0)