Skip to content

Commit

Permalink
Chore/cancel partial filled adds to user filled orders (#138)
Browse files Browse the repository at this point in the history
* Cancelling a partially filled order adds that order to user's filled orders set

* Update tests
  • Loading branch information
Luke-Rogerson authored Feb 22, 2024
1 parent 68b5da8 commit 3980fa9
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 7 deletions.
5 changes: 5 additions & 0 deletions data/redisrepo/cancel_orders_for_user_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"github.com/go-redis/redismock/v9"
"github.com/orbs-network/order-book/mocks"
"github.com/orbs-network/order-book/models"
"github.com/redis/go-redis/v9"
"github.com/shopspring/decimal"
"github.com/stretchr/testify/assert"
)
Expand Down Expand Up @@ -85,6 +86,10 @@ func TestRedisRepository_CancelAllOrdersForUser(t *testing.T) {
mock.ExpectHSet(CreateOrderIDKey(partialFilledOrder.Id), "cancelled", "true").SetVal(1)
mock.ExpectZRem(CreateBuySidePricesKey(mocks.Symbol), partialFilledOrder.Id.String()).SetVal(1)
mock.ExpectZRem(CreateUserOpenOrdersKey(mocks.UserId), partialFilledOrder.Id.String()).SetVal(1)
mock.ExpectZAdd(CreateUserFilledOrdersKey(partialFilledOrder.UserId), redis.Z{
Score: float64(partialFilledOrder.Timestamp.UTC().UnixNano()),
Member: partialFilledOrder.Id.String(),
}).SetVal(1)
mock.ExpectTxPipelineExec()

orderIds, err := repo.CancelOrdersForUser(ctx, mocks.UserId)
Expand Down
15 changes: 8 additions & 7 deletions data/redisrepo/cancel_partial_filled_order.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"github.com/orbs-network/order-book/models"
"github.com/orbs-network/order-book/utils/logger"
"github.com/orbs-network/order-book/utils/logger/logctx"
"github.com/redis/go-redis/v9"
)

// Cancels a partial filled order.
Expand Down Expand Up @@ -44,13 +45,13 @@ func (r *redisRepository) CancelPartialFilledOrder(ctx context.Context, order mo
userOrdersKey := CreateUserOpenOrdersKey(order.UserId)
transaction.ZRem(ctx, userOrdersKey, order.Id.String())

// TODO: add to filled orders set
// userFilledOrdersKey := CreateUserFilledOrdersKey(order.UserId)
// userFilledOrdersScore := float64(order.Timestamp.UTC().UnixNano())
// transaction.ZAdd(ctx, userFilledOrdersKey, redis.Z{
// Score: userFilledOrdersScore,
// Member: order.Id.String(),
// })
// add to filled orders set
userFilledOrdersKey := CreateUserFilledOrdersKey(order.UserId)
userFilledOrdersScore := float64(order.Timestamp.UTC().UnixNano())
transaction.ZAdd(ctx, userFilledOrdersKey, redis.Z{
Score: userFilledOrdersScore,
Member: order.Id.String(),
})

_, err := transaction.Exec(ctx)

Expand Down
5 changes: 5 additions & 0 deletions data/redisrepo/cancel_partial_filled_order_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (

"github.com/go-redis/redismock/v9"
"github.com/orbs-network/order-book/models"
"github.com/redis/go-redis/v9"
"github.com/shopspring/decimal"
"github.com/stretchr/testify/assert"
)
Expand Down Expand Up @@ -115,6 +116,10 @@ func TestRedisRepository_CancelPartialFilledOrder(t *testing.T) {
mock.ExpectHSet(CreateOrderIDKey(partialFilledOrder.Id), "cancelled", "true").SetVal(1)
mock.ExpectZRem(CreateBuySidePricesKey(partialFilledOrder.Symbol), partialFilledOrder.Id.String()).SetVal(1)
mock.ExpectZRem(CreateUserOpenOrdersKey(partialFilledOrder.UserId), partialFilledOrder.Id.String()).SetVal(1)
mock.ExpectZAdd(CreateUserFilledOrdersKey(partialFilledOrder.UserId), redis.Z{
Score: float64(partialFilledOrder.Timestamp.UTC().UnixNano()),
Member: partialFilledOrder.Id.String(),
}).SetVal(1)
mock.ExpectTxPipelineExec()

err := repo.CancelPartialFilledOrder(ctx, partialFilledOrder)
Expand Down

0 comments on commit 3980fa9

Please sign in to comment.