add commitCreateStakeRemoveRequestMutation

This commit is contained in:
João Geonizeli
2021-08-28 00:28:29 -03:00
parent 3967e182cf
commit 5a3bae9c65
25 changed files with 599 additions and 120 deletions

View File

@@ -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

View 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

View 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

View File

@@ -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

View File

@@ -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(

View 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

View File

@@ -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