From 97eea5c2a709536c14a085fae88e4ae046e1fc12 Mon Sep 17 00:00:00 2001 From: classicalliu Date: Wed, 17 Oct 2018 12:11:06 +0800 Subject: [PATCH] add event log show api --- app/controllers/api/event_logs_controller.rb | 22 +++++++++++++++++++ app/serializers/api/event_log_serializer.rb | 11 ++++++++++ config/routes.rb | 1 + .../api/event_logs_controller_spec.rb | 5 +++++ 4 files changed, 39 insertions(+) create mode 100644 app/controllers/api/event_logs_controller.rb create mode 100644 app/serializers/api/event_log_serializer.rb create mode 100644 spec/controllers/api/event_logs_controller_spec.rb diff --git a/app/controllers/api/event_logs_controller.rb b/app/controllers/api/event_logs_controller.rb new file mode 100644 index 0000000..f3c8049 --- /dev/null +++ b/app/controllers/api/event_logs_controller.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +class Api::EventLogsController < ApplicationController + # params: + # { + # "page": "1", // default 1 + # "perPage": "10", // default 10 + # } + # + # GET /api/event_logs/:address + def show + address = params[:address] + event_logs = EventLog.where("address ILIKE ?", address).order(id: :desc).page(params[:page]).per(params[:perPage]) + + render json: { + result: { + count: event_logs.total_count, + event_logs: ActiveModelSerializers::SerializableResource.new(event_logs, each_serializer: ::Api::EventLogSerializer) + } + } + end +end diff --git a/app/serializers/api/event_log_serializer.rb b/app/serializers/api/event_log_serializer.rb new file mode 100644 index 0000000..5822004 --- /dev/null +++ b/app/serializers/api/event_log_serializer.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class Api::EventLogSerializer < ActiveModel::Serializer + attributes :address, :data, :topics + attribute :block_hash, key: :blockHash + attribute :block_number, key: :blockNumber + attribute :log_index, key: :logIndex + attribute :transaction_hash, key: :transactionHash + attribute :transaction_index, key: :transactionIndex + attribute :transaction_log_index, key: :transactionLogIndex +end diff --git a/config/routes.rb b/config/routes.rb index b200a51..3d27f6b 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -13,6 +13,7 @@ resources :sync_errors, only: [:index] get "erc20/transfers", to: "erc20_transfers#index" get "transactions/:hash", to: "transactions#show" + get "event_logs/:address", to: "event_logs#show" end health_check_routes diff --git a/spec/controllers/api/event_logs_controller_spec.rb b/spec/controllers/api/event_logs_controller_spec.rb new file mode 100644 index 0000000..b6a320d --- /dev/null +++ b/spec/controllers/api/event_logs_controller_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe Api::EventLogsController, type: :controller do + +end