Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deploy to testnet #1487

Merged
merged 4 commits into from
Nov 6, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion app/controllers/api/v1/daily_statistics_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ class DailyStatisticsController < ApplicationController
def show
daily_statistics = DailyStatistic.order(created_at_unixtimestamp: :asc).valid_indicators

render json: rendered_json(daily_statistics)
if stale?(daily_statistics, public: true)
render json: rendered_json(daily_statistics)
end
end

private
Expand Down
2 changes: 2 additions & 0 deletions app/controllers/api/v1/monetary_data_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ class MonetaryDataController < ApplicationController
before_action :validate_query_params, only: :show

def show
expires_in 1.hour, public: true, stale_while_revalidate: 10.minutes, stale_if_error: 1.hour

monetary_data = MonetaryData.new

render json: MonetaryDataSerializer.new(monetary_data, params: { indicator: params[:id] })
Expand Down
11 changes: 11 additions & 0 deletions app/controllers/api/v1/udt_queries_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
module Api
module V1
class UdtQueriesController < ApplicationController
def index
udts = Udt.query_by_name_or_symbl(params[:q].downcase)

render json: UdtSerializer.new(udts, { fields: { udt: [:full_name, :symbol, :type_hash, :icon_file] } })
end
end
end
end
7 changes: 7 additions & 0 deletions app/models/ckb_transaction.rb
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ class CkbTransaction < ApplicationRecord

after_commit :flush_cache
before_destroy :recover_dead_cell
before_destroy :log_deletion_chain

def self.cached_find(query_key)
Rails.cache.realize([name, query_key], race_condition_ttl: 3.seconds) do
Expand Down Expand Up @@ -434,6 +435,12 @@ def cellbase_display_inputs
def recover_dead_cell
inputs.update_all(status: "live", consumed_by_id: nil, consumed_block_timestamp: nil)
end

def log_deletion_chain
unless tx_pending?
Rails.logger.info "Deleting #{self.class.name} with ID #{id} using #{caller}: #{as_json}"
end
end
end

# == Schema Information
Expand Down
2 changes: 1 addition & 1 deletion app/models/daily_statistic.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class DailyStatistic < ApplicationRecord

attr_accessor :from_scratch

scope :valid_indicators, -> { select(VALID_INDICATORS - %w(burnt liquidity created_at updated_at) + %w(id)) }
scope :valid_indicators, -> { select(VALID_INDICATORS - %w(burnt liquidity created_at) + %w(id updated_at)) }
scope :recent, -> { order("created_at_unixtimestamp desc nulls last") }
scope :recent_year, -> {
where("created_at_unixtimestamp >= ? and created_at_unixtimestamp < ?", Time.current.beginning_of_year.to_i, Time.current.to_i)
Expand Down
4 changes: 4 additions & 0 deletions app/models/udt.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ class Udt < ApplicationRecord
validates :total_amount, numericality: { greater_than_or_equal_to: 0 }
validates :email, format: { with: /\A(.+)@(.+)\z/, message: "Not a valid email" }, allow_nil: true

scope :query_by_name_or_symbl, ->(search) {
where("lower(full_name) LIKE ? or lower(symbol) LIKE ?", "%#{search}%", "%#{search}%")
}

attribute :code_hash, :ckb_hash

has_and_belongs_to_many :ckb_transactions, join_table: :udt_transactions
Expand Down
16 changes: 8 additions & 8 deletions config/initializers/cors.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@
Rails.application.config.middleware.insert_before 0, Rack::Cors do
allow do
origins "https://explorer.nervos.org",
"https://explorer-testnet.nervos.org",
"https://aggron.explorer.nervos.org",
"https://pudge.explorer.nervos.org",
"https://staging.explorer.nervos.org",
/\Ahttps:\/\/ckb-explorer-.*-magickbase.vercel.app\z/,
"http://localhost:3000",
(ENV["STAGING_DOMAIN"]).to_s
resource "*", headers: :any, methods: [:get, :post, :head, :options]
"https://explorer-testnet.nervos.org",
"https://aggron.explorer.nervos.org",
"https://pudge.explorer.nervos.org",
"https://staging.explorer.nervos.org",
/\Ahttps:\/\/ckb-explorer-.*-magickbase.vercel.app\z/,
"http://localhost:3000",
(ENV["STAGING_DOMAIN"]).to_s
resource "*", headers: :any, methods: [:get, :post, :put, :head, :options]
end
end
2 changes: 2 additions & 0 deletions config/routes.rb
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@
resources :cell_output_type_scripts, only: :show
resources :cell_output_data, only: :show
resources :suggest_queries, only: :index
resources :udt_queries, only: :index
resources :statistics, only: %i(index show)
resources :statistics, only: %i(index show)
resources :nets, only: %i(index show)
resources :statistic_info_charts, only: :index
Expand Down
69 changes: 69 additions & 0 deletions test/controllers/api/v1/udt_queries_controller_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
require "test_helper"

module Api
module V1
class UdtQueriesControllerTest < ActionDispatch::IntegrationTest
test "should return empty array" do
valid_get api_v1_udt_queries_url, params: { q: "CKB" }

response_json = { data: [] }.to_json

assert_response :success
assert_equal "application/vnd.api+json", response.media_type
assert_equal response_json, response.body
end

test "should query by symbol" do
udt = create(:udt, full_name: "Nervos Token", symbol: "CKB")

valid_get api_v1_udt_queries_url, params: { q: "CKB" }

response_json = UdtSerializer.new([udt],
{
fields: {
udt: [
:full_name, :symbol, :type_hash,
:icon_file
] } }).serialized_json

assert_response :success
assert_equal response_json, response.body
end

test "should query by name" do
udt = create(:udt, full_name: "Nervos Token", symbol: "CKB")

valid_get api_v1_udt_queries_url, params: { q: "nervos" }

response_json = UdtSerializer.new([udt],
{
fields: {
udt: [
:full_name, :symbol, :type_hash,
:icon_file
] } }).serialized_json

assert_response :success
assert_equal response_json, response.body
end

test "should query by symbol and name" do
udt1 = create(:udt, full_name: "Nervos Token", symbol: "CKB")
udt2 = create(:udt, full_name: "Nervos CKB", symbol: "NCKB")

valid_get api_v1_udt_queries_url, params: { q: "CKB" }

response_json = UdtSerializer.new([udt1, udt2],
{
fields: {
udt: [
:full_name, :symbol, :type_hash,
:icon_file
] } }).serialized_json

assert_response :success
assert_equal response_json, response.body
end
end
end
end
2 changes: 1 addition & 1 deletion test/models/daily_statistic_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ class DailyStatisticTest < ActiveSupport::TestCase
test "valid_indicators should only return valid indicators" do
create(:daily_statistic)
attrs = DailyStatistic.valid_indicators.first.attribute_names + %w(burnt liquidity)
assert_equal (DailyStatistic::VALID_INDICATORS + %w(id)).sort, attrs.sort
assert_equal (DailyStatistic::VALID_INDICATORS + %w(id updated_at)).sort, attrs.sort
end
end
Loading