Initial commit
This commit is contained in:
38
app/api/v2/management/trades.rb
Normal file
38
app/api/v2/management/trades.rb
Normal file
@@ -0,0 +1,38 @@
|
||||
# encoding: UTF-8
|
||||
# frozen_string_literal: true
|
||||
|
||||
module API
|
||||
module V2
|
||||
module Management
|
||||
class Trades < Grape::API
|
||||
|
||||
desc 'Returns trades as paginated collection.' do
|
||||
@settings[:scope] = :read_trades
|
||||
success API::V2::Management::Entities::Trade
|
||||
end
|
||||
params do
|
||||
optional :uid, type: String, desc: 'The shared user ID.'
|
||||
optional :market, type: String,
|
||||
values: { value: -> { ::Market.active.ids },
|
||||
message: 'Market does not exist' }
|
||||
optional :page, type: Integer, default: 1, integer_gt_zero: true, desc: 'The page number (defaults to 1).'
|
||||
optional :limit, type: Integer, default: 100, range: 1..1000, desc: 'The number of objects per page (defaults to 100, maximum is 1000).'
|
||||
end
|
||||
post '/trades' do
|
||||
market = ::Market.find(params[:market]) if params[:market].present?
|
||||
member = Member.find_by!(uid: params[:uid]) if params[:uid].present?
|
||||
|
||||
Trade
|
||||
.order(id: :desc)
|
||||
.includes(:maker, :taker)
|
||||
.tap { |q| q.where!(market: market) if market }
|
||||
.tap { |q| q.where!("maker_id = #{member.id} OR taker_id = #{member.id}") if member }
|
||||
.page(params[:page])
|
||||
.per(params[:limit])
|
||||
.tap { |q| present q, with: API::V2::Management::Entities::Trade }
|
||||
status 200
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user