From 3980fa9fb93c01f2dea8ddfa293cdb39a328c10d Mon Sep 17 00:00:00 2001 From: Luke Rogerson Date: Thu, 22 Feb 2024 10:04:31 +0000 Subject: [PATCH] Chore/cancel partial filled adds to user filled orders (#138) * Cancelling a partially filled order adds that order to user's filled orders set * Update tests --- data/redisrepo/cancel_orders_for_user_test.go | 5 +++++ data/redisrepo/cancel_partial_filled_order.go | 15 ++++++++------- .../redisrepo/cancel_partial_filled_order_test.go | 5 +++++ 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/data/redisrepo/cancel_orders_for_user_test.go b/data/redisrepo/cancel_orders_for_user_test.go index 082587f..fc70f0c 100644 --- a/data/redisrepo/cancel_orders_for_user_test.go +++ b/data/redisrepo/cancel_orders_for_user_test.go @@ -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" ) @@ -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) diff --git a/data/redisrepo/cancel_partial_filled_order.go b/data/redisrepo/cancel_partial_filled_order.go index 4401083..5e8bff7 100644 --- a/data/redisrepo/cancel_partial_filled_order.go +++ b/data/redisrepo/cancel_partial_filled_order.go @@ -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. @@ -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) diff --git a/data/redisrepo/cancel_partial_filled_order_test.go b/data/redisrepo/cancel_partial_filled_order_test.go index 5b28d76..bd87a44 100644 --- a/data/redisrepo/cancel_partial_filled_order_test.go +++ b/data/redisrepo/cancel_partial_filled_order_test.go @@ -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" ) @@ -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)