diff --git a/docker-compose.yml b/docker-compose.yml index 222053d..a18fc69 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -21,7 +21,7 @@ services: - .:/app - /var/run/docker.sock:/var/run/docker.sock command: > - sh -c " go mod tidy && go test -v ./integration_test/... ./lib/... " + sh -c " go mod tidy && go test -v ./integration_test/... " user_service: env_file: .env_local diff --git a/integration_test/integration_test.go b/integration_test/integration_test.go index 5e78e5c..5523472 100644 --- a/integration_test/integration_test.go +++ b/integration_test/integration_test.go @@ -262,5 +262,5 @@ func TestUserAPI(t *testing.T) { assert.Equal(t, "Alice Johnson", user["name"]) assert.Equal(t, float64(30), user["age"]) assert.Equal(t, 60000.0, user["salary"]) - assert.Equal(t, float64(10), user["point"]) + assert.Equal(t, float64(0), user["point"]) } diff --git a/service/user_service/user/user_serivce.go b/service/user_service/user/user_serivce.go index 37e4e66..c98cf14 100644 --- a/service/user_service/user/user_serivce.go +++ b/service/user_service/user/user_serivce.go @@ -3,7 +3,6 @@ package user import ( "context" "fmt" - "strconv" "time" "github.com/syedomair/backend-microservices/lib/container" @@ -64,26 +63,26 @@ func (u *UserService) GetAllUserStatistics(limit, offset int, orderBy, sort stri client := pb.NewPointServerClient(conn) + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + defer cancel() + + userIDs := []string{} for _, user := range userList { - u.logger.Debug("fetch user points", zap.String("user_id", user.ID)) - - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) - defer cancel() - - r, err := client.GetUserPoints(ctx, &pb.PointRequest{UserId: user.ID}) - if err != nil { - u.logger.Error("failed to get user points", zap.Error(err), zap.String("userID", user.ID)) - continue - } - u.logger.Debug("user points", zap.String("user_id", user.ID), zap.String("user points", r.GetUserPoint())) - - point, err := strconv.Atoi(r.GetUserPoint()) - if err != nil { - point = 0 - } - user.Point = point + userIDs = append(userIDs, user.ID) } + r, err := client.GetUserListPoints(ctx, &pb.UserListRequest{UserIds: userIDs}) + if err != nil { + u.logger.Error("failed to get points for users", zap.Error(err), zap.Any("userIDs", userIDs)) + return err + } + userPoints := r.GetUserPoints() + for k, v := range userPoints { + u.logger.Debug("user points", zap.String("user_id", k), zap.Any("points", v)) + } + + userList = updateUserListWithPoints(userList, userPoints) + return nil })