From b960100d246a2c54778dc3501599adb1d7e4b224 Mon Sep 17 00:00:00 2001 From: Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> Date: Sat, 17 Jun 2023 17:26:46 +0300 Subject: fix: reorganize models (#44) --- backend/controllers/homeController.go | 25 ++------ backend/controllers/userController.go | 2 +- backend/models/models.go | 113 ++++++++-------------------------- backend/models/requests.go | 8 +++ backend/models/responses.go | 54 ++++++++++++++++ 5 files changed, 94 insertions(+), 108 deletions(-) create mode 100644 backend/models/requests.go create mode 100644 backend/models/responses.go (limited to 'backend') diff --git a/backend/controllers/homeController.go b/backend/controllers/homeController.go index d30c835..b5c6b60 100644 --- a/backend/controllers/homeController.go +++ b/backend/controllers/homeController.go @@ -138,10 +138,7 @@ func SearchWithQuery(c *gin.Context) { log.Println(query) var response models.SearchResponse // Cache all maps for faster response - var maps = []struct { - ID int `json:"id"` - Name string `json:"name"` - }{ + var maps = []models.MapShort{ {ID: 1, Name: "Container Ride"}, {ID: 2, Name: "Portal Carousel"}, {ID: 3, Name: "Portal Gun"}, @@ -253,10 +250,7 @@ func SearchWithQuery(c *gin.Context) { {ID: 109, Name: "Gel Maze"}, {ID: 110, Name: "Crazier Box"}, } - var filteredMaps []struct { - ID int `json:"id"` - Name string `json:"name"` - } + var filteredMaps []models.MapShort for _, m := range maps { if strings.Contains(strings.ToLower(m.Name), strings.ToLower(query)) { filteredMaps = append(filteredMaps, m) @@ -264,10 +258,7 @@ func SearchWithQuery(c *gin.Context) { } response.Maps = filteredMaps if len(response.Maps) == 0 { - response.Maps = []struct { - ID int "json:\"id\"" - Name string "json:\"name\"" - }{} + response.Maps = []models.MapShort{} } rows, err := database.DB.Query("SELECT steam_id, user_name FROM users WHERE lower(user_name) LIKE $1", "%"+query+"%") if err != nil { @@ -275,10 +266,7 @@ func SearchWithQuery(c *gin.Context) { } defer rows.Close() for rows.Next() { - var user struct { - SteamID string `json:"steam_id"` - UserName string `json:"user_name"` - } + var user models.UserShort if err := rows.Scan(&user.SteamID, &user.UserName); err != nil { c.JSON(http.StatusBadRequest, models.ErrorResponse(err.Error())) return @@ -286,10 +274,7 @@ func SearchWithQuery(c *gin.Context) { response.Players = append(response.Players, user) } if len(response.Players) == 0 { - response.Players = []struct { - SteamID string "json:\"steam_id\"" - UserName string "json:\"user_name\"" - }{} + response.Players = []models.UserShort{} } c.JSON(http.StatusOK, models.Response{ Success: true, diff --git a/backend/controllers/userController.go b/backend/controllers/userController.go index adf936b..cbce0fe 100644 --- a/backend/controllers/userController.go +++ b/backend/controllers/userController.go @@ -251,7 +251,7 @@ func UpdateUser(c *gin.Context) { // @Produce json // @Param Authorization header string true "JWT Token" // @Param country_code query string true "Country Code [XX]" -// @Success 200 {object} models.Response{data=models.ProfileResponse} +// @Success 200 {object} models.Response // @Failure 400 {object} models.Response // @Failure 401 {object} models.Response // @Router /profile [put] diff --git a/backend/models/models.go b/backend/models/models.go index 6f5173a..49a4f82 100644 --- a/backend/models/models.go +++ b/backend/models/models.go @@ -4,16 +4,6 @@ import ( "time" ) -type Response struct { - Success bool `json:"success"` - Message string `json:"message"` - Data any `json:"data"` -} - -type LoginResponse struct { - Token string `json:"token"` -} - type User struct { SteamID string `json:"steam_id"` UserName string `json:"user_name"` @@ -23,6 +13,11 @@ type User struct { UpdatedAt time.Time `json:"updated_at"` } +type UserShort struct { + SteamID string `json:"steam_id"` + UserName string `json:"user_name"` +} + type Map struct { ID int `json:"id"` GameName string `json:"game_name"` @@ -31,6 +26,11 @@ type Map struct { Data any `json:"data"` } +type MapShort struct { + ID int `json:"id"` + Name string `json:"name"` +} + type MapSummary struct { Description string `json:"description"` Showcase string `json:"showcase"` @@ -57,6 +57,22 @@ type MapHistory struct { Date time.Time `json:"date"` } +type UserRanking struct { + UserID string `json:"user_id"` + UserName string `json:"user_name"` + TotalScore int `json:"total_score"` +} + +type Game struct { + ID int `json:"id"` + Name string `json:"name"` +} + +type Chapter struct { + ID int `json:"id"` + Name string `json:"name"` +} + type RecordSP struct { RecordID int `json:"record_id"` Placement int `json:"placement"` @@ -85,50 +101,6 @@ type RecordMP struct { RecordDate time.Time `json:"record_date"` } -type RecordRequest struct { - ScoreCount int `json:"score_count" form:"score_count" binding:"required"` - ScoreTime int `json:"score_time" form:"score_time" binding:"required"` - PartnerID string `json:"partner_id" form:"partner_id" binding:"required"` - IsPartnerOrange bool `json:"is_partner_orange" form:"is_partner_orange" binding:"required"` -} - -type UserRanking struct { - UserID string `json:"user_id"` - UserName string `json:"user_name"` - TotalScore int `json:"total_score"` -} - -type RankingsResponse struct { - RankingsSP []UserRanking `json:"rankings_sp"` - RankingsMP []UserRanking `json:"rankings_mp"` -} - -type ProfileResponse struct { - Profile bool `json:"profile"` - SteamID string `json:"steam_id"` - UserName string `json:"user_name"` - AvatarLink string `json:"avatar_link"` - CountryCode string `json:"country_code"` - ScoresSP []ScoreResponse `json:"scores_sp"` - ScoresMP []ScoreResponse `json:"scores_mp"` -} - -type ScoreResponse struct { - MapID int `json:"map_id"` - Records any `json:"records"` -} - -type SearchResponse struct { - Players []struct { - SteamID string `json:"steam_id"` - UserName string `json:"user_name"` - } `json:"players"` - Maps []struct { - ID int `json:"id"` - Name string `json:"name"` - } `json:"maps"` -} - type PlayerSummaries struct { SteamId string `json:"steamid"` CommunityVisibilityState int `json:"communityvisibilitystate"` @@ -152,36 +124,3 @@ type PlayerSummaries struct { GameExtraInfo string `json:"gameextrainfo"` GameServerIp string `json:"gameserverip"` } - -type Game struct { - ID int `json:"id"` - Name string `json:"name"` -} - -type ChaptersResponse struct { - Game Game `json:"game"` - Chapters []Chapter `json:"chapters"` -} - -type Chapter struct { - ID int `json:"id"` - Name string `json:"name"` -} - -type MapShort struct { - ID int `json:"id"` - Name string `json:"name"` -} - -type ChapterMapsResponse struct { - Chapter Chapter `json:"chapter"` - Maps []MapShort `json:"maps"` -} - -func ErrorResponse(message string) Response { - return Response{ - Success: false, - Message: message, - Data: nil, - } -} diff --git a/backend/models/requests.go b/backend/models/requests.go new file mode 100644 index 0000000..49b2d75 --- /dev/null +++ b/backend/models/requests.go @@ -0,0 +1,8 @@ +package models + +type RecordRequest struct { + ScoreCount int `json:"score_count" form:"score_count" binding:"required"` + ScoreTime int `json:"score_time" form:"score_time" binding:"required"` + PartnerID string `json:"partner_id" form:"partner_id" binding:"required"` + IsPartnerOrange bool `json:"is_partner_orange" form:"is_partner_orange" binding:"required"` +} diff --git a/backend/models/responses.go b/backend/models/responses.go new file mode 100644 index 0000000..5a88353 --- /dev/null +++ b/backend/models/responses.go @@ -0,0 +1,54 @@ +package models + +type Response struct { + Success bool `json:"success"` + Message string `json:"message"` + Data any `json:"data"` +} + +type LoginResponse struct { + Token string `json:"token"` +} + +type RankingsResponse struct { + RankingsSP []UserRanking `json:"rankings_sp"` + RankingsMP []UserRanking `json:"rankings_mp"` +} + +type ProfileResponse struct { + Profile bool `json:"profile"` + SteamID string `json:"steam_id"` + UserName string `json:"user_name"` + AvatarLink string `json:"avatar_link"` + CountryCode string `json:"country_code"` + ScoresSP []ScoreResponse `json:"scores_sp"` + ScoresMP []ScoreResponse `json:"scores_mp"` +} + +type ScoreResponse struct { + MapID int `json:"map_id"` + Records any `json:"records"` +} + +type SearchResponse struct { + Players []UserShort `json:"players"` + Maps []MapShort `json:"maps"` +} + +type ChaptersResponse struct { + Game Game `json:"game"` + Chapters []Chapter `json:"chapters"` +} + +type ChapterMapsResponse struct { + Chapter Chapter `json:"chapter"` + Maps []MapShort `json:"maps"` +} + +func ErrorResponse(message string) Response { + return Response{ + Success: false, + Message: message, + Data: nil, + } +} -- cgit v1.2.3