7 Commits

Author SHA1 Message Date
4bc17b0f91 remove unused line
Some checks failed
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is passing
2026-02-18 20:16:59 -06:00
06faf1a4b7 Test out what datastore key playerdata-[ID] returns
Some checks failed
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is failing
2026-02-18 20:00:18 -06:00
f1743f4ed8 sign ci
All checks were successful
continuous-integration/drone/push Build is passing
2026-02-18 17:31:30 -08:00
a7524c2766 Update Docs (#24)
Some checks failed
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing
Reviewed-on: #24
Co-authored-by: Rhys Lloyd <krakow20@gmail.com>
Co-committed-by: Rhys Lloyd <krakow20@gmail.com>
2025-08-08 00:55:21 +00:00
fabd0a6759 Cut Down Maps Fields (#22)
Some checks failed
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is failing
Closes #20

I'm assuming protobuf will fill Thumbnail with a default value (0) since it dosn't exist yet.

Reviewed-on: #22
Reviewed-by: itzaname <itzaname@noreply@itzana.me>
Co-authored-by: Rhys Lloyd <krakow20@gmail.com>
Co-committed-by: Rhys Lloyd <krakow20@gmail.com>
2025-08-07 03:20:37 +00:00
b0fbb6f934 Merge pull request 'Makefile: remove operation on nonexistent directory' (#21) from makefile into staging
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #21
2025-08-06 04:39:15 +00:00
517a56ef13 Makefile: remove operation on nonexistent directory
Some checks failed
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is passing
2025-08-05 18:51:26 -07:00
11 changed files with 56 additions and 34 deletions

View File

@@ -61,4 +61,9 @@ steps:
when:
branch:
- master
- staging
- staging
---
kind: signature
hmac: 7655eb6dead73d2ad977685120cee8562931036bb5d7fa59d30d5917840c4a22
...

View File

@@ -1,6 +1,5 @@
clean:
rm -rf build
rm -rf web/dist
test:
go fmt ./...

View File

@@ -301,7 +301,8 @@ const docTemplate = `{
{
"type": "array",
"items": {
"type": "integer"
"type": "integer",
"format": "int64"
},
"collectionFormat": "csv",
"description": "Comma-separated array of time IDs (25 Limit)",
@@ -631,12 +632,6 @@ const docTemplate = `{
"Map": {
"type": "object",
"properties": {
"creator": {
"type": "string"
},
"date": {
"type": "string"
},
"display_name": {
"type": "string"
},
@@ -645,6 +640,9 @@ const docTemplate = `{
},
"id": {
"type": "integer"
},
"thumbnail": {
"type": "integer"
}
}
},

View File

@@ -294,7 +294,8 @@
{
"type": "array",
"items": {
"type": "integer"
"type": "integer",
"format": "int64"
},
"collectionFormat": "csv",
"description": "Comma-separated array of time IDs (25 Limit)",
@@ -624,12 +625,6 @@
"Map": {
"type": "object",
"properties": {
"creator": {
"type": "string"
},
"date": {
"type": "string"
},
"display_name": {
"type": "string"
},
@@ -638,6 +633,9 @@
},
"id": {
"type": "integer"
},
"thumbnail": {
"type": "integer"
}
}
},

View File

@@ -7,16 +7,14 @@ definitions:
type: object
Map:
properties:
creator:
type: string
date:
type: string
display_name:
type: string
game_id:
type: integer
id:
type: integer
thumbnail:
type: integer
type: object
PagedResponse-Map:
properties:
@@ -418,6 +416,7 @@ paths:
description: Comma-separated array of time IDs (25 Limit)
in: query
items:
format: int64
type: integer
name: ids
required: true

2
go.mod
View File

@@ -4,7 +4,7 @@ go 1.24.0
require (
git.itzana.me/StrafesNET/dev-service v0.0.0-20250628022558-4cf59e46f9f1
git.itzana.me/strafesnet/go-grpc v0.0.0-20250628021738-df0a4ad40969
git.itzana.me/strafesnet/go-grpc v0.0.0-20250807005013-301d35b914ef
github.com/gin-gonic/gin v1.10.1
github.com/sirupsen/logrus v1.9.3
github.com/swaggo/files v1.0.1

4
go.sum
View File

@@ -2,8 +2,8 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
git.itzana.me/StrafesNET/dev-service v0.0.0-20250628022558-4cf59e46f9f1 h1:Ndpa4d93gCQrW5pm64u9IRaDJTfu7fKfLqm8ctzML1o=
git.itzana.me/StrafesNET/dev-service v0.0.0-20250628022558-4cf59e46f9f1/go.mod h1:KJal0K++M6HEzSry6JJ2iDPZtOQn5zSstNlDbU3X4Jg=
git.itzana.me/strafesnet/go-grpc v0.0.0-20250628021738-df0a4ad40969 h1:bGfsRi9WrklI5cwvfvI/jJAGa3PQgJVNAzseFBW56mY=
git.itzana.me/strafesnet/go-grpc v0.0.0-20250628021738-df0a4ad40969/go.mod h1:X7XTRUScRkBWq8q8bplbeso105RPDlnY7J6Wy1IwBMs=
git.itzana.me/strafesnet/go-grpc v0.0.0-20250807005013-301d35b914ef h1:SJi4V4+xzScFnbMRN1gkZxcqR1xKfiT7CaXanLltEzw=
git.itzana.me/strafesnet/go-grpc v0.0.0-20250807005013-301d35b914ef/go.mod h1:X7XTRUScRkBWq8q8bplbeso105RPDlnY7J6Wy1IwBMs=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc=
github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE=

View File

@@ -2,7 +2,6 @@ package dto
import (
"git.itzana.me/strafesnet/go-grpc/maps"
"time"
)
type MapFilter struct {
@@ -12,9 +11,8 @@ type MapFilter struct {
type Map struct {
ID int64 `json:"id"`
DisplayName string `json:"display_name"`
Creator string `json:"creator"`
GameID int32 `json:"game_id"`
Date time.Time `json:"date"`
Thumbnail uint64 `json:"thumbnail"`
} // @name Map
// FromGRPC converts a maps.MapResponse protobuf message to a Map domain object
@@ -25,9 +23,8 @@ func (m *Map) FromGRPC(resp *maps.MapResponse) *Map {
m.ID = resp.ID
m.DisplayName = resp.DisplayName
m.Creator = resp.Creator
m.Date = time.Unix(resp.Date, 0)
m.GameID = resp.GameID
m.Thumbnail = resp.Thumbnail
return m
}

View File

@@ -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

View File

@@ -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,26 @@ func (h *UserHandler) Get(ctx *gin.Context) {
return
}
dataStoreData, err := datastore.NewDatastoreServiceClient(h.dataClient).Get(ctx, &datastore.KeyMessage{
Key: "playerdata-" + strconv.FormatInt(userID, 10),
})
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]{

View File

@@ -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",
},
},
}
}