aboutsummaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
authorArda Serdar Pektezol <1669855+pektezol@users.noreply.github.com>2023-05-01 13:08:26 +0300
committerArda Serdar Pektezol <1669855+pektezol@users.noreply.github.com>2023-05-01 13:08:26 +0300
commitf1f9240bc1a877f6056bcaf400673b54ecc04ad3 (patch)
tree361da0b89de3cfb1abfe5b24c3e1edb8190c9e32 /backend
parentdoc: update history model (#38) (diff)
downloadlphub-f1f9240bc1a877f6056bcaf400673b54ecc04ad3.tar.gz
lphub-f1f9240bc1a877f6056bcaf400673b54ecc04ad3.tar.bz2
lphub-f1f9240bc1a877f6056bcaf400673b54ecc04ad3.zip
search endpoint init, fetch all data (#40)
Diffstat (limited to 'backend')
-rw-r--r--backend/controllers/homeController.go152
-rw-r--r--backend/models/models.go11
-rw-r--r--backend/routes/routes.go1
3 files changed, 163 insertions, 1 deletions
diff --git a/backend/controllers/homeController.go b/backend/controllers/homeController.go
index 577f61a..206e3ae 100644
--- a/backend/controllers/homeController.go
+++ b/backend/controllers/homeController.go
@@ -1,6 +1,7 @@
1package controllers 1package controllers
2 2
3import ( 3import (
4 "log"
4 "net/http" 5 "net/http"
5 6
6 "github.com/gin-gonic/gin" 7 "github.com/gin-gonic/gin"
@@ -23,7 +24,6 @@ func Home(c *gin.Context) {
23// 24//
24// @Summary Get rankings of every player. 25// @Summary Get rankings of every player.
25// @Tags rankings 26// @Tags rankings
26// @Accept json
27// @Produce json 27// @Produce json
28// @Success 200 {object} models.Response{data=models.RankingsResponse} 28// @Success 200 {object} models.Response{data=models.RankingsResponse}
29// @Failure 400 {object} models.Response 29// @Failure 400 {object} models.Response
@@ -121,3 +121,153 @@ func Rankings(c *gin.Context) {
121 }, 121 },
122 }) 122 })
123} 123}
124
125// GET Search
126//
127// @Summary Get all user and map data.
128// @Tags search
129// @Produce json
130// @Success 200 {object} models.Response{data=models.SearchResponse}
131// @Failure 400 {object} models.Response
132// @Router /search [get]
133func Search(c *gin.Context) {
134 var response models.SearchResponse
135 // Cache all maps for faster response
136 var maps = []struct {
137 ID int `json:"id"`
138 Name string `json:"name"`
139 }{
140 {ID: 1, Name: "Container Ride"},
141 {ID: 2, Name: "Portal Carousel"},
142 {ID: 3, Name: "Portal Gun"},
143 {ID: 4, Name: "Smooth Jazz"},
144 {ID: 5, Name: "Cube Momentum"},
145 {ID: 6, Name: "Future Starter"},
146 {ID: 7, Name: "Secret Panel"},
147 {ID: 8, Name: "Wakeup"},
148 {ID: 9, Name: "Incinerator"},
149 {ID: 10, Name: "Laser Intro"},
150 {ID: 11, Name: "Laser Stairs"},
151 {ID: 12, Name: "Dual Lasers"},
152 {ID: 13, Name: "Laser Over Goo"},
153 {ID: 14, Name: "Catapult Intro"},
154 {ID: 15, Name: "Trust Fling"},
155 {ID: 16, Name: "Pit Flings"},
156 {ID: 17, Name: "Fizzler Intro"},
157 {ID: 18, Name: "Ceiling Catapult"},
158 {ID: 19, Name: "Ricochet"},
159 {ID: 20, Name: "Bridge Intro"},
160 {ID: 21, Name: "Bridge The Gap"},
161 {ID: 22, Name: "Turret Intro"},
162 {ID: 23, Name: "Laser Relays"},
163 {ID: 24, Name: "Turret Blocker"},
164 {ID: 25, Name: "Laser vs Turret"},
165 {ID: 26, Name: "Pull The Rug"},
166 {ID: 27, Name: "Column Blocker"},
167 {ID: 28, Name: "Laser Chaining"},
168 {ID: 29, Name: "Triple Laser"},
169 {ID: 30, Name: "Jail Break"},
170 {ID: 31, Name: "Escape"},
171 {ID: 32, Name: "Turret Factory"},
172 {ID: 33, Name: "Turret Sabotage"},
173 {ID: 34, Name: "Neurotoxin Sabotage"},
174 {ID: 35, Name: "Core"},
175 {ID: 36, Name: "Underground"},
176 {ID: 37, Name: "Cave Johnson"},
177 {ID: 38, Name: "Repulsion Intro"},
178 {ID: 39, Name: "Bomb Flings"},
179 {ID: 40, Name: "Crazy Box"},
180 {ID: 41, Name: "PotatOS"},
181 {ID: 42, Name: "Propulsion Intro"},
182 {ID: 43, Name: "Propulsion Flings"},
183 {ID: 44, Name: "Conversion Intro"},
184 {ID: 45, Name: "Three Gels"},
185 {ID: 46, Name: "Test"},
186 {ID: 47, Name: "Funnel Intro"},
187 {ID: 48, Name: "Ceiling Button"},
188 {ID: 49, Name: "Wall Button"},
189 {ID: 50, Name: "Polarity"},
190 {ID: 51, Name: "Funnel Catch"},
191 {ID: 52, Name: "Stop The Box"},
192 {ID: 53, Name: "Laser Catapult"},
193 {ID: 54, Name: "Laser Platform"},
194 {ID: 55, Name: "Propulsion Catch"},
195 {ID: 56, Name: "Repulsion Polarity"},
196 {ID: 57, Name: "Finale 1"},
197 {ID: 58, Name: "Finale 2"},
198 {ID: 59, Name: "Finale 3"},
199 {ID: 60, Name: "Finale 4"},
200 {ID: 61, Name: "Calibration"},
201 {ID: 62, Name: "Hub"},
202 {ID: 63, Name: "Doors"},
203 {ID: 64, Name: "Buttons"},
204 {ID: 65, Name: "Lasers"},
205 {ID: 66, Name: "Rat Maze"},
206 {ID: 67, Name: "Laser Crusher"},
207 {ID: 68, Name: "Behind The Scenes"},
208 {ID: 69, Name: "Flings"},
209 {ID: 70, Name: "Infinifling"},
210 {ID: 71, Name: "Team Retrieval"},
211 {ID: 72, Name: "Vertical Flings"},
212 {ID: 73, Name: "Catapults"},
213 {ID: 74, Name: "Multifling"},
214 {ID: 75, Name: "Fling Crushers"},
215 {ID: 76, Name: "Industrial Fan"},
216 {ID: 77, Name: "Cooperative Bridges"},
217 {ID: 78, Name: "Bridge Swap"},
218 {ID: 79, Name: "Fling Block"},
219 {ID: 80, Name: "Catapult Block"},
220 {ID: 81, Name: "Bridge Fling"},
221 {ID: 82, Name: "Turret Walls"},
222 {ID: 83, Name: "Turret Assasin"},
223 {ID: 84, Name: "Bridge Testing"},
224 {ID: 85, Name: "Cooperative Funnels"},
225 {ID: 86, Name: "Funnel Drill"},
226 {ID: 87, Name: "Funnel Catch"},
227 {ID: 88, Name: "Funnel Laser"},
228 {ID: 89, Name: "Cooperative Polarity"},
229 {ID: 90, Name: "Funnel Hop"},
230 {ID: 91, Name: "Advanced Polarity"},
231 {ID: 92, Name: "Funnel Maze"},
232 {ID: 93, Name: "Turret Warehouse"},
233 {ID: 94, Name: "Repulsion Jumps"},
234 {ID: 95, Name: "Double Bounce"},
235 {ID: 96, Name: "Bridge Repulsion"},
236 {ID: 97, Name: "Wall Repulsion"},
237 {ID: 98, Name: "Propulsion Crushers"},
238 {ID: 99, Name: "Turret Ninja"},
239 {ID: 100, Name: "Propulsion Retrieval"},
240 {ID: 101, Name: "Vault Entrance"},
241 {ID: 102, Name: "Seperation"},
242 {ID: 103, Name: "Triple Axis"},
243 {ID: 104, Name: "Catapult Catch"},
244 {ID: 105, Name: "Bridge Gels"},
245 {ID: 106, Name: "Maintenance"},
246 {ID: 107, Name: "Bridge Catch"},
247 {ID: 108, Name: "Double Lift"},
248 {ID: 109, Name: "Gel Maze"},
249 {ID: 110, Name: "Crazier Box"},
250 }
251 response.Maps = maps
252 rows, err := database.DB.Query("SELECT steam_id, user_name FROM users") //WHERE player_name LIKE ?", "%"+query+"%")
253 if err != nil {
254 log.Fatal(err)
255 }
256 defer rows.Close()
257 for rows.Next() {
258 var user struct {
259 SteamID string `json:"steam_id"`
260 UserName string `json:"user_name"`
261 }
262 if err := rows.Scan(&user.SteamID, &user.UserName); err != nil {
263 c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error()))
264 return
265 }
266 response.Players = append(response.Players, user)
267 }
268 c.JSON(http.StatusOK, models.Response{
269 Success: true,
270 Message: "Search successfully retrieved.",
271 Data: response,
272 })
273}
diff --git a/backend/models/models.go b/backend/models/models.go
index be6265f..cdcd111 100644
--- a/backend/models/models.go
+++ b/backend/models/models.go
@@ -118,6 +118,17 @@ type ScoreResponse struct {
118 Records any `json:"records"` 118 Records any `json:"records"`
119} 119}
120 120
121type SearchResponse struct {
122 Players []struct {
123 SteamID string `json:"steam_id"`
124 UserName string `json:"user_name"`
125 } `json:"players"`
126 Maps []struct {
127 ID int `json:"id"`
128 Name string `json:"name"`
129 } `json:"maps"`
130}
131
121type PlayerSummaries struct { 132type PlayerSummaries struct {
122 SteamId string `json:"steamid"` 133 SteamId string `json:"steamid"`
123 CommunityVisibilityState int `json:"communityvisibilitystate"` 134 CommunityVisibilityState int `json:"communityvisibilitystate"`
diff --git a/backend/routes/routes.go b/backend/routes/routes.go
index b9f07db..53d4e78 100644
--- a/backend/routes/routes.go
+++ b/backend/routes/routes.go
@@ -27,5 +27,6 @@ func InitRoutes(router *gin.Engine) {
27 v1.GET("/maps/:id/leaderboards", middleware.CheckAuth, controllers.FetchMapLeaderboards) 27 v1.GET("/maps/:id/leaderboards", middleware.CheckAuth, controllers.FetchMapLeaderboards)
28 v1.POST("/maps/:id/record", middleware.CheckAuth, controllers.CreateRecordWithDemo) 28 v1.POST("/maps/:id/record", middleware.CheckAuth, controllers.CreateRecordWithDemo)
29 v1.GET("/rankings", middleware.CheckAuth, controllers.Rankings) 29 v1.GET("/rankings", middleware.CheckAuth, controllers.Rankings)
30 v1.GET("/search", controllers.Search)
30 } 31 }
31} 32}