diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml index 4dc3c2e..24a4297 100644 --- a/.idea/inspectionProfiles/Project_Default.xml +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -4,13 +4,14 @@ diff --git a/controllers/clan_controller.go b/controllers/clan_controller.go index f87c613..b10907a 100644 --- a/controllers/clan_controller.go +++ b/controllers/clan_controller.go @@ -6,6 +6,7 @@ import ( "fmt" "github.com/gin-gonic/gin" "gorm.io/gorm" + "gorm.io/gorm/clause" "log" "net/http" ) @@ -131,6 +132,20 @@ func DeleteClanByID(c *gin.Context) { } } +// DeleteAllClans DELETE /admin/clan +func DeleteAllClans(c *gin.Context) { + var clans []models.Clan + if err := models.DB. + Session(&gorm.Session{AllowGlobalUpdate: true}). + Clauses(clause.Returning{}). + Delete(&clans).Error; err != nil { + c.String(http.StatusBadRequest, "Purge failed! Error: "+err.Error()) + return + } + + c.String(http.StatusOK, "Purged "+utils.UintToString(uint(len(clans)))+" clans!") +} + func FindClanByName(out interface{}, name string) *gorm.DB { return models.DB.Where("name = ?", name).First(out) } diff --git a/controllers/player_controller.go b/controllers/player_controller.go index 7c8d607..3ae23f1 100644 --- a/controllers/player_controller.go +++ b/controllers/player_controller.go @@ -6,6 +6,7 @@ import ( "fmt" "github.com/gin-gonic/gin" "gorm.io/gorm" + "gorm.io/gorm/clause" "log" "net/http" "os" @@ -145,6 +146,20 @@ func DeletePlayerByID(c *gin.Context) { } } +// DeleteAllPlayers DELETE /admin/player +func DeleteAllPlayers(c *gin.Context) { + var players []models.Player + if err := models.DB. + Session(&gorm.Session{AllowGlobalUpdate: true}). + Clauses(clause.Returning{}). + Delete(&players).Error; err != nil { + c.String(http.StatusBadRequest, "Purge failed! Error: "+err.Error()) + return + } + + c.String(http.StatusOK, "Purged "+utils.UintToString(uint(len(players)))+" players!") +} + func FindPlayerByID(id uint) *models.Player { var res models.Player if err := models.DB.Where("id = ?", id).First(&res).Error; err != nil { diff --git a/main.go b/main.go index ddf4dc0..013211a 100644 --- a/main.go +++ b/main.go @@ -6,11 +6,55 @@ import ( "InfantrySkillCalculator/utils" "github.com/gin-gonic/gin" _ "github.com/gorilla/sessions" + "html/template" "io" "log" "os" ) +var mainPageTemplates *template.Template +var loginPageTemplates *template.Template +var registerPageTemplates *template.Template + +func init() { + var err error + mainPageTemplates, err = template.ParseFiles( + "./templates/index.html", + "./templates/components/home_clan_bar.html", + "./templates/components/opp_clan_bar.html", + "./templates/components/home_player_list.html", + "./templates/components/opp_player_list.html", + "./templates/components/bottom_controls.html", + "./templates/modals/delete_clan.html", + "./templates/modals/add_clan.html", + "./templates/modals/edit_clan.html", + "./templates/modals/add_player.html", + "./templates/modals/delete_player.html", + "./templates/modals/edit_player.html", + "./templates/modals/settings.html", + "./templates/components/header.html", + ) + if err != nil { + log.Fatal(err) + } + + loginPageTemplates, err = template.ParseFiles( + "./templates/login.html", + "./templates/components/header.html", + ) + if err != nil { + log.Fatal(err) + } + + registerPageTemplates, err = template.ParseFiles( + "./templates/register.html", + "./templates/components/header.html", + ) + if err != nil { + log.Fatal(err) + } +} + func main() { //gin.SetMode(gin.ReleaseMode) // uncomment upon release @@ -73,7 +117,9 @@ func main() { protected.GET("/settings", controllers.GetSettings) protected.PATCH("/settings", controllers.UpdateSettings) - admin.GET("/clear_cache", controllers.DeleteAllCaches) + admin.DELETE("/clear_cache", controllers.DeleteAllCaches) + admin.DELETE("/purge_players", controllers.DeleteAllPlayers) + admin.DELETE("/purge_clans", controllers.DeleteAllClans) admin.POST("/create_code", controllers.CreateCode) log.Println("Running on 8000...") diff --git a/pages.go b/pages.go index 161bd55..5a11653 100644 --- a/pages.go +++ b/pages.go @@ -4,38 +4,16 @@ import ( "InfantrySkillCalculator/controllers" "InfantrySkillCalculator/utils" "github.com/gin-gonic/gin" - "html/template" "log" "net/http" ) func mainPage(c *gin.Context) { - files := []string{ - "./templates/index.html", - "./templates/components/home_clan_bar.html", - "./templates/components/opp_clan_bar.html", - "./templates/components/home_player_list.html", - "./templates/components/opp_player_list.html", - "./templates/components/bottom_controls.html", - "./templates/modals/delete_clan.html", - "./templates/modals/add_clan.html", - "./templates/modals/edit_clan.html", - "./templates/modals/add_player.html", - "./templates/modals/delete_player.html", - "./templates/modals/edit_player.html", - "./templates/modals/settings.html", - "./templates/components/header.html", - } - tmpl, err := template.ParseFiles(files...) - if err != nil { - log.Fatal(err) - } - data := map[string]interface{}{ "isAdmin": isUserAdmin(c), } - err = tmpl.Execute(c.Writer, data) + err := mainPageTemplates.Execute(c.Writer, data) if err != nil { log.Fatal(err) } @@ -49,12 +27,7 @@ func loginPage(c *gin.Context) { return } - tmpl, err := template.ParseFiles([]string{"./templates/login.html", "./templates/components/header.html"}...) - if err != nil { - log.Fatal(err) - } - - err = tmpl.Execute(c.Writer, nil) + err := loginPageTemplates.Execute(c.Writer, nil) if err != nil { log.Fatal(err) } @@ -102,12 +75,7 @@ func registerPage(c *gin.Context) { return } - tmpl, err := template.ParseFiles([]string{"./templates/register.html", "./templates/components/header.html"}...) - if err != nil { - log.Fatal(err) - } - - err = tmpl.Execute(c.Writer, nil) + err := registerPageTemplates.Execute(c.Writer, nil) if err != nil { log.Fatal(err) } diff --git a/templates/components/bottom_controls.html b/templates/components/bottom_controls.html index f5d7df3..78f8d47 100644 --- a/templates/components/bottom_controls.html +++ b/templates/components/bottom_controls.html @@ -17,54 +17,40 @@