From 06faf1a4b762650dde2482b9b3d4c5354e670384 Mon Sep 17 00:00:00 2001 From: fiveman1 Date: Wed, 18 Feb 2026 19:55:10 -0600 Subject: [PATCH 1/2] Test out what datastore key playerdata-[ID] returns --- pkg/api/dto/user.go | 9 +++++---- pkg/api/handlers/user.go | 24 ++++++++++++++++++++++-- pkg/cmds/api.go | 6 ++++++ 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/pkg/api/dto/user.go b/pkg/api/dto/user.go index 7e779b6..bf5abb8 100644 --- a/pkg/api/dto/user.go +++ b/pkg/api/dto/user.go @@ -14,10 +14,11 @@ type UserRankFilter struct { } // @name UserRankFilter type User struct { - ID int64 `json:"id"` - Username string `json:"username"` - StateID int32 `json:"state_id"` - Muted bool `json:"muted"` + ID int64 `json:"id"` + Username string `json:"username"` + StateID int32 `json:"state_id"` + Muted bool `json:"muted"` + PlayerData map[string]any `json:"data"` } // @name User // FromGRPC converts a users.UserResponse protobuf message to a User domain object diff --git a/pkg/api/handlers/user.go b/pkg/api/handlers/user.go index 1f1ce26..2a1086e 100644 --- a/pkg/api/handlers/user.go +++ b/pkg/api/handlers/user.go @@ -1,6 +1,10 @@ package handlers import ( + "net/http" + "strconv" + + "git.itzana.me/strafesnet/go-grpc/datastore" "git.itzana.me/strafesnet/go-grpc/ranks" "git.itzana.me/strafesnet/go-grpc/users" "git.itzana.me/strafesnet/public-api/pkg/api/dto" @@ -8,8 +12,6 @@ import ( log "github.com/sirupsen/logrus" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "net/http" - "strconv" ) // UserHandler handles HTTP requests related to users. @@ -72,9 +74,27 @@ func (h *UserHandler) Get(ctx *gin.Context) { return } + dataStoreData, err := datastore.NewDatastoreServiceClient(h.dataClient).Get(ctx, &datastore.KeyMessage{ + Key: "playerdata-" + strconv.FormatInt(userID, 10), + }) + dataStoreData.Data.MarshalJSON() + if err != nil { + statusCode := http.StatusInternalServerError + errorMessage := "Failed to get playerdata from data store" + + ctx.JSON(statusCode, dto.Error{ + Error: errorMessage, + }) + log.WithError(err).Error( + "Failed to get playerdata data store", + ) + return + } + // Convert gRPC UserResponse object to dto.UserData object var user dto.User result := user.FromGRPC(userData) + result.PlayerData = dataStoreData.Data.AsMap() // Return the user data ctx.JSON(http.StatusOK, dto.Response[dto.User]{ diff --git a/pkg/cmds/api.go b/pkg/cmds/api.go index 1594d91..52c54c1 100644 --- a/pkg/cmds/api.go +++ b/pkg/cmds/api.go @@ -31,6 +31,12 @@ func NewApiCommand() *cli.Command { EnvVars: []string{"DATA_RPC_HOST"}, Value: "data-service:9000", }, + &cli.StringFlag{ + Name: "datastore-rpc-host", + Usage: "Host of datastore rpc", + EnvVars: []string{"DATASTORE_RPC_HOST"}, + Value: "datastore-service:9000", + }, }, } } -- 2.49.1 From 4bc17b0f91c0d4119e2b141a3bb1c9f9e16f47a6 Mon Sep 17 00:00:00 2001 From: fiveman1 Date: Wed, 18 Feb 2026 20:16:59 -0600 Subject: [PATCH 2/2] remove unused line --- pkg/api/handlers/user.go | 1 - 1 file changed, 1 deletion(-) diff --git a/pkg/api/handlers/user.go b/pkg/api/handlers/user.go index 2a1086e..189dd98 100644 --- a/pkg/api/handlers/user.go +++ b/pkg/api/handlers/user.go @@ -77,7 +77,6 @@ func (h *UserHandler) Get(ctx *gin.Context) { dataStoreData, err := datastore.NewDatastoreServiceClient(h.dataClient).Get(ctx, &datastore.KeyMessage{ Key: "playerdata-" + strconv.FormatInt(userID, 10), }) - dataStoreData.Data.MarshalJSON() if err != nil { statusCode := http.StatusInternalServerError errorMessage := "Failed to get playerdata from data store" -- 2.49.1