From 858d3285177fd51e857a60cb9e359a88c704756b Mon Sep 17 00:00:00 2001 From: Miles Zhang Date: Thu, 24 Apr 2025 13:13:19 +0800 Subject: [PATCH] feat: use created_at_unixtimestamp as last updated timestamp (#2513) Signed-off-by: Miles Zhang --- app/models/distribution_data.rb | 4 ++-- app/serializers/daily_statistic_serializer.rb | 4 ---- app/serializers/distribution_data_serializer.rb | 4 ++-- app/serializers/epoch_statistic_serializer.rb | 4 ++-- app/serializers/statistic_serializer.rb | 4 ++-- .../api/v1/daily_statistics_controller_test.rb | 12 ++++++------ .../api/v1/epoch_statistics_controller_test.rb | 16 ++++++++-------- .../api/v1/statistics_controller_test.rb | 2 +- 8 files changed, 23 insertions(+), 27 deletions(-) diff --git a/app/models/distribution_data.rb b/app/models/distribution_data.rb index 097f41b73..052c1470f 100644 --- a/app/models/distribution_data.rb +++ b/app/models/distribution_data.rb @@ -32,8 +32,8 @@ def nodes_distribution DailyStatistic.recent.first&.nodes_distribution || DailyStatistic.where.not(nodes_distribution: nil).recent.first&.nodes_distribution || [] end - def updated_at - DailyStatistic.recent.first&.updated_at + def created_at_unixtimestamp + DailyStatistic.recent.first&.created_at_unixtimestamp end def block_propagation_delay_history diff --git a/app/serializers/daily_statistic_serializer.rb b/app/serializers/daily_statistic_serializer.rb index efce74403..a03aed58b 100644 --- a/app/serializers/daily_statistic_serializer.rb +++ b/app/serializers/daily_statistic_serializer.rb @@ -142,8 +142,4 @@ class DailyStatisticSerializer attribute :activity_address_contract_distribution, if: Proc.new { |_record, params| params.present? && params[:indicator].include?("activity_address_contract_distribution") } - - attribute :last_updated_timestamp do |object| - (object.updated_at.to_i * 1000).to_s - end end diff --git a/app/serializers/distribution_data_serializer.rb b/app/serializers/distribution_data_serializer.rb index 59ac67da4..1c1a5642f 100644 --- a/app/serializers/distribution_data_serializer.rb +++ b/app/serializers/distribution_data_serializer.rb @@ -59,7 +59,7 @@ class DistributionDataSerializer end end - attribute :last_updated_timestamp do |object| - (object.updated_at.to_i * 1000).to_s + attribute :created_at_unixtimestamp do |object| + object.created_at_unixtimestamp.to_s end end diff --git a/app/serializers/epoch_statistic_serializer.rb b/app/serializers/epoch_statistic_serializer.rb index db2cb7b66..2b648d225 100644 --- a/app/serializers/epoch_statistic_serializer.rb +++ b/app/serializers/epoch_statistic_serializer.rb @@ -45,7 +45,7 @@ class EpochStatisticSerializer } end - attribute :last_updated_timestamp do |object| - (object.updated_at.to_i * 1000).to_s + attribute :created_at_unixtimestamp do |object| + object.updated_at.to_i.to_s end end diff --git a/app/serializers/statistic_serializer.rb b/app/serializers/statistic_serializer.rb index 906e127b0..6d14a749f 100644 --- a/app/serializers/statistic_serializer.rb +++ b/app/serializers/statistic_serializer.rb @@ -39,7 +39,7 @@ class StatisticSerializer params && params[:info_name] == "maintenance_info" } - attribute :last_updated_timestamp do |object| - (object.updated_at.to_i * 1000).to_s + attribute :created_at_unixtimestamp do |object| + object.updated_at.to_i.to_s end end diff --git a/test/controllers/api/v1/daily_statistics_controller_test.rb b/test/controllers/api/v1/daily_statistics_controller_test.rb index 3ab39c424..dc2bdc3d3 100644 --- a/test/controllers/api/v1/daily_statistics_controller_test.rb +++ b/test/controllers/api/v1/daily_statistics_controller_test.rb @@ -49,7 +49,7 @@ class DailyStatisticsControllerTest < ActionDispatch::IntegrationTest daily_statistic_data = DailyStatistic.order(:created_at_unixtimestamp).valid_indicators valid_get api_v1_daily_statistic_url("transactions_count") - assert_equal [%w(transactions_count created_at_unixtimestamp last_updated_timestamp).sort], json.dig("data").map { |item| + assert_equal [%w(transactions_count created_at_unixtimestamp).sort], json.dig("data").map { |item| item.dig("attributes").keys.sort }.uniq assert_equal DailyStatisticSerializer.new(daily_statistic_data, params: { indicator: "transactions_count" }).serialized_json, @@ -61,7 +61,7 @@ class DailyStatisticsControllerTest < ActionDispatch::IntegrationTest daily_statistic_data = DailyStatistic.order(created_at_unixtimestamp: :asc).valid_indicators valid_get api_v1_daily_statistic_url("addresses_count") - assert_equal [%w(addresses_count created_at_unixtimestamp last_updated_timestamp).sort], + assert_equal [%w(addresses_count created_at_unixtimestamp).sort], json.dig("data").map { |item| item.dig("attributes").keys.sort }.uniq @@ -74,7 +74,7 @@ class DailyStatisticsControllerTest < ActionDispatch::IntegrationTest create_list(:daily_statistic, 15) valid_get api_v1_daily_statistic_url("total_dao_deposit") - assert_equal [%w(total_dao_deposit created_at_unixtimestamp last_updated_timestamp).sort], + assert_equal [%w(total_dao_deposit created_at_unixtimestamp).sort], json.dig("data").map { |item| item.dig("attributes").keys.sort }.uniq @@ -101,9 +101,9 @@ class DailyStatisticsControllerTest < ActionDispatch::IntegrationTest daily_statistic_data = DailyStatistic.order(:created_at_unixtimestamp).valid_indicators valid_get api_v1_daily_statistic_url("avg_hash_rate") - assert_equal [%w(avg_hash_rate created_at_unixtimestamp last_updated_timestamp).sort], json.dig("data").map { |item| - item.dig("attributes").keys.sort - }.uniq + assert_equal [%w(avg_hash_rate created_at_unixtimestamp).sort], json.dig("data").map { |item| + item.dig("attributes").keys.sort + }.uniq assert_equal DailyStatisticSerializer.new(daily_statistic_data, params: { indicator: "avg_hash_rate" }).serialized_json, response.body assert_equal 100, json.dig("data").size diff --git a/test/controllers/api/v1/epoch_statistics_controller_test.rb b/test/controllers/api/v1/epoch_statistics_controller_test.rb index 8357c6ed8..a3af5b510 100644 --- a/test/controllers/api/v1/epoch_statistics_controller_test.rb +++ b/test/controllers/api/v1/epoch_statistics_controller_test.rb @@ -40,38 +40,38 @@ class EpochStatisticsControllerTest < ActionDispatch::IntegrationTest end test "should return difficulty, uncle_rate and epoch number" do - (1..15).each {|number| create(:epoch_statistic, epoch_number: number)} + (1..15).each { |number| create(:epoch_statistic, epoch_number: number) } block_statistic_data = EpochStatistic.order(epoch_number: :desc).reverse valid_get api_v1_epoch_statistic_url("difficulty-uncle_rate") - assert_equal [%w(difficulty uncle_rate epoch_number largest_block largest_tx last_updated_timestamp).sort], json.dig("data").map { |item| item.dig("attributes").keys.sort }.uniq + assert_equal [%w(difficulty uncle_rate epoch_number largest_block largest_tx created_at_unixtimestamp).sort], json.dig("data").map { |item| item.dig("attributes").keys.sort }.uniq assert_equal EpochStatisticSerializer.new(block_statistic_data, { params: { indicator: "difficulty-uncle_rate" } }).serialized_json, response.body end test "should return difficulty, hash_rate and epoch number" do - (1..15).each {|number| create(:epoch_statistic, epoch_number: number)} + (1..15).each { |number| create(:epoch_statistic, epoch_number: number) } block_statistic_data = EpochStatistic.order(epoch_number: :desc).reverse valid_get api_v1_epoch_statistic_url("difficulty-hash_rate") - assert_equal [%w(difficulty hash_rate epoch_number largest_block largest_tx last_updated_timestamp).sort], json.dig("data").map { |item| item.dig("attributes").keys.sort }.uniq + assert_equal [%w(difficulty hash_rate epoch_number largest_block largest_tx created_at_unixtimestamp).sort], json.dig("data").map { |item| item.dig("attributes").keys.sort }.uniq assert_equal EpochStatisticSerializer.new(block_statistic_data, { params: { indicator: "difficulty-hash_rate" } }).serialized_json, response.body end test "should return epoch_time and epoch_length" do - (1..15).each {|number| create(:epoch_statistic, epoch_number: number)} + (1..15).each { |number| create(:epoch_statistic, epoch_number: number) } block_statistic_data = EpochStatistic.order(epoch_number: :desc).reverse valid_get api_v1_epoch_statistic_url("epoch_time-epoch_length") - assert_equal [%w(epoch_length epoch_time epoch_number largest_block largest_tx last_updated_timestamp).sort], json.dig("data").map { |item| item.dig("attributes").keys.sort }.uniq + assert_equal [%w(epoch_length epoch_time epoch_number largest_block largest_tx created_at_unixtimestamp).sort], json.dig("data").map { |item| item.dig("attributes").keys.sort }.uniq assert_equal EpochStatisticSerializer.new(block_statistic_data, { params: { indicator: "epoch_time-epoch_length" } }).serialized_json, response.body end test "should return latest 10 epoch statistics when limit is not present" do - (1..15).each {|number| create(:epoch_statistic, epoch_number: number)} + (1..15).each { |number| create(:epoch_statistic, epoch_number: number) } block_statistic_data = EpochStatistic.order(epoch_number: :desc).limit(10).reverse valid_get api_v1_epoch_statistic_url("difficulty-uncle_rate", limit: 10) - assert_equal [%w(difficulty uncle_rate epoch_number largest_block largest_tx last_updated_timestamp).sort], json.dig("data").map { |item| item.dig("attributes").keys.sort }.uniq + assert_equal [%w(difficulty uncle_rate epoch_number largest_block largest_tx created_at_unixtimestamp).sort], json.dig("data").map { |item| item.dig("attributes").keys.sort }.uniq assert_equal EpochStatisticSerializer.new(block_statistic_data, { params: { indicator: "difficulty-uncle_rate" } }).serialized_json, response.body end diff --git a/test/controllers/api/v1/statistics_controller_test.rb b/test/controllers/api/v1/statistics_controller_test.rb index 5e86e7245..319a604ae 100644 --- a/test/controllers/api/v1/statistics_controller_test.rb +++ b/test/controllers/api/v1/statistics_controller_test.rb @@ -113,7 +113,7 @@ class StatisticsControllerTest < ActionDispatch::IntegrationTest StatisticInfo.default.reset_all! valid_get api_v1_statistic_url("miner_ranking") - assert_equal %w(last_updated_timestamp miner_ranking), json.dig("data", "attributes").keys.sort + assert_equal %w(created_at_unixtimestamp miner_ranking), json.dig("data", "attributes").keys.sort end test "should return right ranking" do