code.vegaprotocol.io/vega@v0.79.0/datanode/gateway/graphql/stop_order_resolver.go (about) 1 // Copyright (C) 2023 Gobalsky Labs Limited 2 // 3 // This program is free software: you can redistribute it and/or modify 4 // it under the terms of the GNU Affero General Public License as 5 // published by the Free Software Foundation, either version 3 of the 6 // License, or (at your option) any later version. 7 // 8 // This program is distributed in the hope that it will be useful, 9 // but WITHOUT ANY WARRANTY; without even the implied warranty of 10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 // GNU Affero General Public License for more details. 12 // 13 // You should have received a copy of the GNU Affero General Public License 14 // along with this program. If not, see <http://www.gnu.org/licenses/>. 15 16 package gql 17 18 import ( 19 "context" 20 "fmt" 21 22 "code.vegaprotocol.io/vega/libs/ptr" 23 v2 "code.vegaprotocol.io/vega/protos/data-node/api/v2" 24 "code.vegaprotocol.io/vega/protos/vega" 25 eventspb "code.vegaprotocol.io/vega/protos/vega/events/v1" 26 ) 27 28 type stopOrderResolver VegaResolverRoot 29 30 func (s stopOrderResolver) ID(_ context.Context, obj *eventspb.StopOrderEvent) (string, error) { 31 if obj == nil || obj.StopOrder == nil { 32 return "", ErrInvalidStopOrder 33 } 34 return obj.StopOrder.Id, nil 35 } 36 37 func (s stopOrderResolver) OcoLinkID(_ context.Context, obj *eventspb.StopOrderEvent) (*string, error) { 38 if obj == nil || obj.StopOrder == nil { 39 return nil, ErrInvalidStopOrder 40 } 41 return obj.StopOrder.OcoLinkId, nil 42 } 43 44 func (s stopOrderResolver) ExpiresAt(_ context.Context, obj *eventspb.StopOrderEvent) (*int64, error) { 45 if obj == nil || obj.StopOrder == nil { 46 return nil, ErrInvalidStopOrder 47 } 48 return obj.StopOrder.ExpiresAt, nil 49 } 50 51 func (s stopOrderResolver) ExpiryStrategy(_ context.Context, obj *eventspb.StopOrderEvent) (*vega.StopOrder_ExpiryStrategy, error) { 52 if obj == nil || obj.StopOrder == nil { 53 return nil, ErrInvalidStopOrder 54 } 55 return obj.StopOrder.ExpiryStrategy, nil 56 } 57 58 func (s stopOrderResolver) TriggerDirection(_ context.Context, obj *eventspb.StopOrderEvent) (vega.StopOrder_TriggerDirection, error) { 59 if obj == nil || obj.StopOrder == nil { 60 return vega.StopOrder_TRIGGER_DIRECTION_UNSPECIFIED, ErrInvalidStopOrder 61 } 62 return obj.StopOrder.TriggerDirection, nil 63 } 64 65 func (s stopOrderResolver) Status(_ context.Context, obj *eventspb.StopOrderEvent) (vega.StopOrder_Status, error) { 66 if obj == nil || obj.StopOrder == nil { 67 return vega.StopOrder_STATUS_UNSPECIFIED, ErrInvalidStopOrder 68 } 69 return obj.StopOrder.Status, nil 70 } 71 72 func (s stopOrderResolver) CreatedAt(_ context.Context, obj *eventspb.StopOrderEvent) (int64, error) { 73 if obj == nil || obj.StopOrder == nil { 74 return 0, ErrInvalidStopOrder 75 } 76 return obj.StopOrder.CreatedAt, nil 77 } 78 79 func (s stopOrderResolver) UpdatedAt(_ context.Context, obj *eventspb.StopOrderEvent) (*int64, error) { 80 if obj == nil || obj.StopOrder == nil { 81 return nil, ErrInvalidStopOrder 82 } 83 return obj.StopOrder.UpdatedAt, nil 84 } 85 86 func (s stopOrderResolver) PartyID(_ context.Context, obj *eventspb.StopOrderEvent) (string, error) { 87 if obj == nil || obj.StopOrder == nil { 88 return "", ErrInvalidStopOrder 89 } 90 return obj.StopOrder.PartyId, nil 91 } 92 93 func (s stopOrderResolver) MarketID(_ context.Context, obj *eventspb.StopOrderEvent) (string, error) { 94 if obj == nil || obj.StopOrder == nil { 95 return "", ErrInvalidStopOrder 96 } 97 return obj.StopOrder.MarketId, nil 98 } 99 100 func (s stopOrderResolver) Trigger(_ context.Context, obj *eventspb.StopOrderEvent) (StopOrderTrigger, error) { 101 if obj == nil || obj.StopOrder == nil { 102 return nil, ErrInvalidStopOrder 103 } 104 switch t := obj.StopOrder.Trigger.(type) { 105 case *vega.StopOrder_Price: 106 return StopOrderPrice{ 107 Price: t.Price, 108 }, nil 109 case *vega.StopOrder_TrailingPercentOffset: 110 return StopOrderTrailingPercentOffset{ 111 TrailingPercentOffset: t.TrailingPercentOffset, 112 }, nil 113 default: 114 return nil, fmt.Errorf("unknown trigger type: %T", t) 115 } 116 } 117 118 func (s stopOrderResolver) Order(ctx context.Context, obj *eventspb.StopOrderEvent) (*vega.Order, error) { 119 // no order triggeerd yet 120 if len(obj.StopOrder.OrderId) <= 0 { 121 return nil, nil 122 } 123 124 return s.r.getOrderByID(ctx, obj.StopOrder.OrderId, nil) 125 } 126 127 func (s stopOrderResolver) RejectionReason(ctx context.Context, obj *eventspb.StopOrderEvent) (*vega.StopOrder_RejectionReason, error) { 128 return obj.StopOrder.RejectionReason, nil 129 } 130 131 func (s stopOrderResolver) SizeOverrideSetting(_ context.Context, obj *eventspb.StopOrderEvent) (vega.StopOrder_SizeOverrideSetting, error) { 132 return obj.StopOrder.SizeOverrideSetting, nil 133 } 134 135 func (s stopOrderResolver) SizeOverrideValue(_ context.Context, obj *eventspb.StopOrderEvent) (*string, error) { 136 if obj.StopOrder.SizeOverrideValue == nil { 137 return nil, nil 138 } 139 return ptr.From(obj.StopOrder.SizeOverrideValue.Percentage), nil 140 } 141 142 type stopOrderFilterResolver VegaResolverRoot 143 144 func (s stopOrderFilterResolver) Parties(ctx context.Context, obj *v2.StopOrderFilter, data []string) error { 145 if obj == nil { 146 obj = &v2.StopOrderFilter{} 147 } 148 obj.PartyIds = data 149 return nil 150 } 151 152 func (s stopOrderFilterResolver) Markets(ctx context.Context, obj *v2.StopOrderFilter, data []string) error { 153 if obj == nil { 154 obj = &v2.StopOrderFilter{} 155 } 156 obj.MarketIds = data 157 return nil 158 } 159 160 func (s stopOrderFilterResolver) Status(ctx context.Context, obj *v2.StopOrderFilter, data []vega.StopOrder_Status) error { 161 if obj == nil { 162 obj = &v2.StopOrderFilter{} 163 } 164 obj.Statuses = data 165 return nil 166 } 167 168 func (s stopOrderFilterResolver) ExpiryStrategy(ctx context.Context, obj *v2.StopOrderFilter, data []vega.StopOrder_ExpiryStrategy) error { 169 if obj == nil { 170 obj = &v2.StopOrderFilter{} 171 } 172 obj.ExpiryStrategies = data 173 return nil 174 }