From 3615deb9858c384d035da09ded88e03858d5ca49 Mon Sep 17 00:00:00 2001 From: zegkljan Date: Sat, 12 Feb 2022 11:34:29 +0100 Subject: [PATCH] remote DB reset --- server/constants.go | 1 + server/handling.go | 13 +++++++++++++ server/server.go | 14 +++++++++----- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/server/constants.go b/server/constants.go index 84b572f..cde890c 100644 --- a/server/constants.go +++ b/server/constants.go @@ -4,6 +4,7 @@ const ( URIPing = "/ping" URIHardFail = "/hard-fail" URISoftFail = "/soft-fail" + URIReinit = "/reinit" URIMapPack = "/mappack" URIHandshake = "/handshake" URIData = "/data" diff --git a/server/handling.go b/server/handling.go index 2433070..47245bf 100644 --- a/server/handling.go +++ b/server/handling.go @@ -22,6 +22,7 @@ func internalError(gc *gin.Context, err error) { } func (s *Server) setupRouter() *gin.Engine { + gin.SetMode(gin.ReleaseMode) router := gin.New() router.Use(gin.Recovery()) @@ -68,6 +69,8 @@ func (s *Server) setupRouter() *gin.Engine { entry.Error(msg) } else if statusCode >= 400 { entry.Warn(msg) + } else if path == URIPing { + entry.Debug(msg) } else { entry.Info(msg) } @@ -84,6 +87,7 @@ func (s *Server) setupRouter() *gin.Engine { router.GET(URISoftFail, func(gc *gin.Context) { gc.JSON(http.StatusOK, map[string]string{"error": "artificial fail"}) }) + router.POST(URIReinit, s.handlePOSTReset) // resources router.GET(URIMapPack, s.handleGETTilepack) @@ -102,6 +106,15 @@ func (s *Server) setupRouter() *gin.Engine { return router } +func (s *Server) handlePOSTReset(gc *gin.Context) { + err := s.reinitDB() + if err != nil { + internalError(gc, err) + return + } + gc.Status(http.StatusOK) +} + func (s *Server) handleGETTilepack(gc *gin.Context) { gc.File(s.config.TilepackPath) } diff --git a/server/server.go b/server/server.go index d7cc4bf..eb3ad09 100644 --- a/server/server.go +++ b/server/server.go @@ -100,11 +100,7 @@ func (s *Server) setupDB() { s.dbpool = dbpool if s.config.ReinitDB { - s.log.Info("Reinitializing DB.") - conn := s.getDbConn() - defer s.dbpool.Put(conn) - - err = sqlitex.ExecScript(conn, initDB) + err = s.reinitDB() if err != nil { s.log.WithError(err).Fatal("init DB transaction failed") } @@ -139,6 +135,14 @@ func (s *Server) setupTiles() { s.mapPackSize = info.Size() } +func (s *Server) reinitDB() error { + s.log.Info("Reinitializing DB.") + conn := s.getDbConn() + defer s.dbpool.Put(conn) + + return sqlitex.ExecScript(conn, initDB) +} + func (s *Server) handshake(hc models.HandshakeChallenge) (models.UserID, error) { conn := s.getDbConn() defer s.dbpool.Put(conn)