Initial commit
This commit is contained in:
125
app/api/v2/admin/trading_fees.rb
Normal file
125
app/api/v2/admin/trading_fees.rb
Normal file
@@ -0,0 +1,125 @@
|
||||
# encoding: UTF-8
|
||||
# frozen_string_literal: true
|
||||
|
||||
module API
|
||||
module V2
|
||||
module Admin
|
||||
class TradingFees < Grape::API
|
||||
helpers ::API::V2::Admin::Helpers
|
||||
|
||||
desc 'Returns trading_fees table as paginated collection',
|
||||
is_array: true,
|
||||
success: API::V2::Entities::TradingFee
|
||||
params do
|
||||
optional :group,
|
||||
type: String,
|
||||
desc: -> { API::V2::Entities::TradingFee.documentation[:group][:desc] },
|
||||
coerce_with: ->(c) { c.strip.downcase }
|
||||
optional :market_id,
|
||||
type: String,
|
||||
desc: -> { API::V2::Entities::TradingFee.documentation[:market_id][:desc] },
|
||||
values: { value: -> { ::Market.ids.append(::TradingFee::ANY) },
|
||||
message: 'admin.trading_fee.market_doesnt_exist' }
|
||||
use :pagination
|
||||
use :ordering
|
||||
end
|
||||
get '/trading_fees' do
|
||||
admin_authorize! :read, TradingFee
|
||||
|
||||
ransack_params = Helpers::RansackBuilder.new(params)
|
||||
.eq(:group, :market_id)
|
||||
.build
|
||||
|
||||
search = TradingFee.ransack(ransack_params)
|
||||
search.sorts = "#{params[:order_by]} #{params[:ordering]}"
|
||||
|
||||
present paginate(search.result), with: API::V2::Entities::TradingFee
|
||||
end
|
||||
|
||||
desc 'It creates trading fees record',
|
||||
success: API::V2::Entities::TradingFee
|
||||
params do
|
||||
requires :maker,
|
||||
type: { value: BigDecimal, message: 'admin.trading_fee.non_decimal_maker' },
|
||||
values: { value: -> (p){ p && p >= 0 }, message: 'admin.trading_fee.invalid_maker' },
|
||||
desc: -> { API::V2::Entities::TradingFee.documentation[:maker][:desc] }
|
||||
requires :taker,
|
||||
type: { value: BigDecimal, message: 'admin.trading_fee.non_decimal_taker' },
|
||||
values: { value: -> (p){ p && p >= 0 }, message: 'admin.trading_fee.invalid_taker' },
|
||||
desc: -> { API::V2::Entities::TradingFee.documentation[:taker][:desc] }
|
||||
optional :group,
|
||||
type: String,
|
||||
default: ::TradingFee::ANY,
|
||||
desc: -> { API::V2::Entities::TradingFee.documentation[:group][:desc] }
|
||||
optional :market_id,
|
||||
type: String,
|
||||
desc: -> { API::V2::Entities::TradingFee.documentation[:market_id][:desc] },
|
||||
default: ::TradingFee::ANY,
|
||||
values: { value: -> { ::Market.ids.append(::TradingFee::ANY) },
|
||||
message: 'admin.trading_fee.market_doesnt_exist' }
|
||||
end
|
||||
post '/trading_fees/new' do
|
||||
admin_authorize! :create, TradingFee
|
||||
|
||||
trading_fee = ::TradingFee.new(declared(params))
|
||||
if trading_fee.save
|
||||
present trading_fee, with: API::V2::Entities::TradingFee
|
||||
status 201
|
||||
else
|
||||
body errors: trading_fee.errors.full_messages
|
||||
status 422
|
||||
end
|
||||
end
|
||||
|
||||
desc 'It updates trading fees record',
|
||||
success: API::V2::Entities::TradingFee
|
||||
params do
|
||||
requires :id,
|
||||
type: { value: Integer, message: 'admin.trading_fee.non_integer_id' },
|
||||
desc: -> { API::V2::Entities::TradingFee.documentation[:id][:desc] }
|
||||
optional :maker,
|
||||
type: { value: BigDecimal, message: 'admin.trading_fee.non_decimal_maker' },
|
||||
values: { value: -> (p){ p && p >= 0 }, message: 'admin.trading_fee.invalid_maker' },
|
||||
desc: -> { API::V2::Entities::TradingFee.documentation[:maker][:desc] }
|
||||
optional :taker,
|
||||
type: { value: BigDecimal, message: 'admin.trading_fee.non_decimal_taker' },
|
||||
values: { value: -> (p){ p && p >= 0 }, message: 'admin.trading_fee.invalid_taker' },
|
||||
desc: -> { API::V2::Entities::TradingFee.documentation[:taker][:desc] }
|
||||
optional :group,
|
||||
type: String,
|
||||
coerce_with: ->(c) { c.strip.downcase },
|
||||
desc: -> { API::V2::Entities::TradingFee.documentation[:group][:desc] }
|
||||
optional :market_id,
|
||||
type: String,
|
||||
desc: -> { API::V2::Entities::TradingFee.documentation[:market_id][:desc] },
|
||||
values: { value: -> { ::Market.ids.append(::TradingFee::ANY) },
|
||||
message: 'admin.trading_fee.market_doesnt_exist' }
|
||||
end
|
||||
post '/trading_fees/update' do
|
||||
admin_authorize! :update, TradingFee
|
||||
|
||||
trading_fee = ::TradingFee.find(params[:id])
|
||||
if trading_fee.update(declared(params, include_missing: false))
|
||||
present trading_fee, with: API::V2::Entities::TradingFee
|
||||
else
|
||||
body errors: trading_fee.errors.full_messages
|
||||
status 422
|
||||
end
|
||||
end
|
||||
|
||||
desc 'It deletes trading fees record',
|
||||
success: API::V2::Entities::TradingFee
|
||||
params do
|
||||
requires :id,
|
||||
type: { value: Integer, message: 'admin.trading_fee.non_integer_id' },
|
||||
desc: -> { API::V2::Entities::TradingFee.documentation[:id][:desc] }
|
||||
end
|
||||
post '/trading_fees/delete' do
|
||||
admin_authorize! :delete, TradingFee
|
||||
|
||||
present TradingFee.destroy(params[:id]), with: API::V2::Entities::TradingFee
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user