add commitCreateStakeRemoveRequestMutation
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
# frozen_string_literal: true
|
||||
module Inputs
|
||||
class CreateStakeOrderAttributesInput < Types::BaseInputObject
|
||||
argument :currency_id, ID, required: true
|
||||
argument :pool_name, String, required: true
|
||||
argument :amount, String, "Amount to be paid", required: true
|
||||
end
|
||||
|
||||
9
app/graphql/inputs/predicate_input.rb
Normal file
9
app/graphql/inputs/predicate_input.rb
Normal file
@@ -0,0 +1,9 @@
|
||||
# frozen_string_literal: true
|
||||
module Inputs
|
||||
class PredicateInput < Types::BaseInputObject
|
||||
# https://github.com/activerecord-hackery/ransack#search-matchers
|
||||
# add others if necessary
|
||||
argument :eq, String, "Equal", required: false
|
||||
argument :lt, Float, "Less than", required: false
|
||||
end
|
||||
end
|
||||
10
app/graphql/inputs/stake_order_filter_input.rb
Normal file
10
app/graphql/inputs/stake_order_filter_input.rb
Normal file
@@ -0,0 +1,10 @@
|
||||
# frozen_string_literal: true
|
||||
module Inputs
|
||||
class StakeOrderFilterInput < Types::BaseInputObject
|
||||
StakeOrder.ransackable_attributes.each do |attr|
|
||||
argument attr, PredicateInput, required: false
|
||||
end
|
||||
|
||||
argument :status, [Types::ProcessStatusEnum], required: false
|
||||
end
|
||||
end
|
||||
@@ -6,7 +6,7 @@ module Mutations
|
||||
argument :order, Inputs::CreateStakeOrderAttributesInput, required: true
|
||||
|
||||
def resolve(order:)
|
||||
currency_id = decode_id(order[:currency_id])
|
||||
currency_id = Currency.find_by!(name: "CAKE").id
|
||||
amount = BigDecimal(order[:amount])
|
||||
|
||||
ActiveRecord::Base.transaction do
|
||||
|
||||
@@ -6,8 +6,8 @@ module Mutations
|
||||
argument :order, Inputs::CreateStakeOrderAttributesInput, required: true
|
||||
|
||||
def resolve(order:)
|
||||
currency_id = decode_id(order[:currency_id])
|
||||
amount = BigDecimal(order[:amount])
|
||||
currency_id = Currency.find_by!(name: "CAKE").id
|
||||
amount = -BigDecimal(order[:amount])
|
||||
|
||||
ActiveRecord::Base.transaction do
|
||||
record = StakeOrder.find_or_initialize_by(
|
||||
|
||||
21
app/graphql/ransack_support.rb
Normal file
21
app/graphql/ransack_support.rb
Normal file
@@ -0,0 +1,21 @@
|
||||
# frozen_string_literal: true
|
||||
module RansackSupport
|
||||
def ransack(base, filter)
|
||||
base.ransack(build_ransack_query(base, filter)).result
|
||||
end
|
||||
|
||||
def build_ransack_query(base, filter)
|
||||
filter = filter.to_h
|
||||
mapped_filter = {}
|
||||
|
||||
filter.each do |parent_key, parent_value|
|
||||
next unless base.ransackable_attributes.include?(parent_key.to_s)
|
||||
|
||||
parent_value.each do |children_key, children_value|
|
||||
mapped_filter["#{parent_key}_#{children_key}".to_sym] = children_value
|
||||
end
|
||||
end
|
||||
|
||||
mapped_filter
|
||||
end
|
||||
end
|
||||
@@ -3,6 +3,7 @@ module Types
|
||||
class QueryType < Types::BaseObject
|
||||
include GraphQL::Types::Relay::HasNodeField
|
||||
include GraphQL::Types::Relay::HasNodesField
|
||||
include RansackSupport
|
||||
|
||||
field :current_user, UserType, null: true
|
||||
def current_user
|
||||
@@ -29,9 +30,16 @@ module Types
|
||||
Pundit.policy_scope(current_user, BuyCryptoOrder)
|
||||
end
|
||||
|
||||
field :stake_orders, StakeOrderType.connection_type, null: false
|
||||
def stake_orders
|
||||
Pundit.policy_scope(current_user, StakeOrder)
|
||||
field :stake_orders, StakeOrderType.connection_type, null: false do
|
||||
argument :filter, Inputs::StakeOrderFilterInput, required: false
|
||||
end
|
||||
|
||||
def stake_orders(filter: nil)
|
||||
scope = Pundit.policy_scope(current_user, StakeOrder)
|
||||
|
||||
scope = scope.where(status: filter.status) if filter&.status
|
||||
|
||||
ransack(scope, filter)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user