From 22547464f756f3620dd1d92bcd249cb7608ca04a Mon Sep 17 00:00:00 2001 From: Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> Date: Wed, 19 Mar 2025 15:31:34 +0000 Subject: feat/backend: basic map difficulty ratings (#266) --- backend/handlers/map.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'backend') diff --git a/backend/handlers/map.go b/backend/handlers/map.go index b2a0b91..e1e6897 100644 --- a/backend/handlers/map.go +++ b/backend/handlers/map.go @@ -492,6 +492,7 @@ func FetchMaps(c *gin.Context) { m.id, m.name, m.is_disabled, + m.difficulty, m.image, cat.id, cat.name, @@ -529,7 +530,7 @@ func FetchMaps(c *gin.Context) { for rows.Next() { var mapShort models.MapSelect var categoryPortal models.CategoryPortal - if err := rows.Scan(&mapShort.ID, &mapShort.Name, &mapShort.IsDisabled, &mapShort.Image, &categoryPortal.Category.ID, &categoryPortal.Category.Name, &categoryPortal.PortalCount); err != nil { + if err := rows.Scan(&mapShort.ID, &mapShort.Name, &mapShort.IsDisabled, &mapShort.Difficulty, &mapShort.Image, &categoryPortal.Category.ID, &categoryPortal.Category.Name, &categoryPortal.PortalCount); err != nil { c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) return } @@ -571,6 +572,7 @@ func FetchChapterMaps(c *gin.Context) { m.name AS map_name, c.name AS chapter_name, m.is_disabled, + m.difficulty, m.image, cat.id, cat.name, @@ -610,7 +612,7 @@ func FetchChapterMaps(c *gin.Context) { for rows.Next() { var mapShort models.MapSelect var categoryPortal models.CategoryPortal - if err := rows.Scan(&mapShort.ID, &mapShort.Name, &chapterName, &mapShort.IsDisabled, &mapShort.Image, &categoryPortal.Category.ID, &categoryPortal.Category.Name, &categoryPortal.PortalCount); err != nil { + if err := rows.Scan(&mapShort.ID, &mapShort.Name, &chapterName, &mapShort.IsDisabled, &mapShort.Difficulty, &mapShort.Image, &categoryPortal.Category.ID, &categoryPortal.Category.Name, &categoryPortal.PortalCount); err != nil { c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) return } -- cgit v1.2.3 From d221c8a770fa0d01fc191e88b2fda8d7d0faa049 Mon Sep 17 00:00:00 2001 From: Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> Date: Wed, 19 Mar 2025 15:53:30 +0000 Subject: feat/backend: send map difficulty in summary (#271) --- backend/handlers/map.go | 4 ++-- backend/models/models.go | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'backend') diff --git a/backend/handlers/map.go b/backend/handlers/map.go index e1e6897..9cb0bcc 100644 --- a/backend/handlers/map.go +++ b/backend/handlers/map.go @@ -77,12 +77,12 @@ func FetchMapSummary(c *gin.Context) { } // Get map data response.Map.ID = intID - sql := `SELECT m.id, g.name, c.name, m.name, m.image, g.is_coop, m.is_disabled + sql := `SELECT m.id, g.name, c.name, m.name, m.image, g.is_coop, m.is_disabled, m.difficulty FROM maps m INNER JOIN games g ON m.game_id = g.id INNER JOIN chapters c ON m.chapter_id = c.id WHERE m.id = $1` - err = database.DB.QueryRow(sql, id).Scan(&response.Map.ID, &response.Map.GameName, &response.Map.ChapterName, &response.Map.MapName, &response.Map.Image, &response.Map.IsCoop, &response.Map.IsDisabled) + err = database.DB.QueryRow(sql, id).Scan(&response.Map.ID, &response.Map.GameName, &response.Map.ChapterName, &response.Map.MapName, &response.Map.Image, &response.Map.IsCoop, &response.Map.IsDisabled, &response.Map.Difficulty) if err != nil { c.JSON(http.StatusOK, models.ErrorResponse(err.Error())) return diff --git a/backend/models/models.go b/backend/models/models.go index a114f2c..3c38131 100644 --- a/backend/models/models.go +++ b/backend/models/models.go @@ -47,6 +47,7 @@ type Map struct { Image string `json:"image"` IsCoop bool `json:"is_coop"` IsDisabled bool `json:"is_disabled"` + Difficulty int `json:"difficulty"` } type MapShort struct { -- cgit v1.2.3 From 7746337964fd50b2eac170333efa05e7a5676a1c Mon Sep 17 00:00:00 2001 From: Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> Date: Thu, 24 Jul 2025 14:09:11 +0300 Subject: feat/backend: add newrelic integration (#274) --- backend/.env.example | 1 + backend/go.mod | 4 ++++ backend/go.sum | 9 +++++++++ backend/main.go | 11 +++++++++++ 4 files changed, 25 insertions(+) (limited to 'backend') diff --git a/backend/.env.example b/backend/.env.example index b0a7101..0318aa1 100644 --- a/backend/.env.example +++ b/backend/.env.example @@ -12,3 +12,4 @@ B2_KEY_ID=123456789ABCDEF B2_API_KEY=123456789ABCDEF B2_DOWNLOAD_URL=https://lphub.s3.eu-central-001.backblazeb2.com/ LOCAL_DEMOS_PATH=/path/to/demos/ +NEWRELIC_LICENSE_KEY=abcdef123456789 diff --git a/backend/go.mod b/backend/go.mod index e6f87c4..f9fe0db 100644 --- a/backend/go.mod +++ b/backend/go.mod @@ -32,9 +32,13 @@ require ( github.com/josharian/intern v1.0.0 // indirect github.com/klauspost/cpuid/v2 v2.2.8 // indirect github.com/mailru/easyjson v0.7.7 // indirect + github.com/newrelic/go-agent/v3 v3.40.1 // indirect + github.com/newrelic/go-agent/v3/integrations/nrgin v1.4.1 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect golang.org/x/arch v0.10.0 // indirect golang.org/x/tools v0.25.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 // indirect + google.golang.org/grpc v1.65.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/backend/go.sum b/backend/go.sum index 59301ae..f655023 100644 --- a/backend/go.sum +++ b/backend/go.sum @@ -74,6 +74,10 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/newrelic/go-agent/v3 v3.40.1 h1:8nb4R252Fpuc3oySvlHpDwqySqaPWL5nf7ZVEhqtUeA= +github.com/newrelic/go-agent/v3 v3.40.1/go.mod h1:X0TLXDo+ttefTIue1V96Y5seb8H6wqf6uUq4UpPsYj8= +github.com/newrelic/go-agent/v3/integrations/nrgin v1.4.1 h1:a1waTQToxDTKd31LpwpaFHKWPj8Dav/BrzZayBiiAq8= +github.com/newrelic/go-agent/v3/integrations/nrgin v1.4.1/go.mod h1:mEbfsZIxBYIPT7FzboYvE+ed2ft4SCFXoCvleI2v5JQ= github.com/pektezol/bitreader v1.4.3 h1:+WjsD6qOAaI6Q1jOOlEJcnaEso8vPMKRZnnaDnZhTSg= github.com/pektezol/bitreader v1.4.3/go.mod h1:xBQEsQpOf8B5yPrnOTkirZGyVUV6Bqp0ups2RIlTskk= github.com/pektezol/steam_go v1.1.2 h1:fta6SW+La8NfmCtR/Kn73bAmTBvCgUkkLCplsJGzx7g= @@ -150,6 +154,11 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.25.0 h1:oFU9pkj/iJgs+0DT+VMHrx+oBKs/LJMV+Uvg78sl+fE= golang.org/x/tools v0.25.0/go.mod h1:/vtpO8WL1N9cQC3FN5zPqb//fRXskFHbLKk4OW1Q7rg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/genproto v0.0.0-20231002182017-d307bd883b97 h1:SeZZZx0cP0fqUyA+oRzP9k7cSwJlvDFiROO72uwD6i0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 h1:Zy9XzmMEflZ/MAaA7vNcoebnRAld7FsPW1EeBB7V0m8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= +google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= +google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/backend/main.go b/backend/main.go index a1a4a20..e422359 100644 --- a/backend/main.go +++ b/backend/main.go @@ -11,6 +11,8 @@ import ( "github.com/gin-gonic/gin" "github.com/joho/godotenv" + nrgin "github.com/newrelic/go-agent/v3/integrations/nrgin" + "github.com/newrelic/go-agent/v3/newrelic" ) // @title Least Portals Hub @@ -30,7 +32,16 @@ func main() { if os.Getenv("ENV") == "PROD" { gin.SetMode(gin.ReleaseMode) } + app, err := newrelic.NewApplication( + newrelic.ConfigAppName("lphub"), + newrelic.ConfigLicense(os.Getenv("NEWRELIC_LICENSE_KEY")), + newrelic.ConfigAppLogForwardingEnabled(true), + ) + if err != nil { + log.Fatal("Error instrumenting newrelic") + } router := gin.Default() + router.Use(nrgin.Middleware(app)) database.ConnectDB() api.InitRoutes(router) // for debugging -- cgit v1.2.3