|
@@ -1,15 +1,43 @@
|
|
|
package web
|
|
|
|
|
|
import (
|
|
|
+ "fmt"
|
|
|
+ "log"
|
|
|
+ "net/http"
|
|
|
+ "time"
|
|
|
+
|
|
|
+ "github.com/gin-contrib/sessions"
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
|
|
"code.osinet.fr/fgm/sqs_demo/back/services/redriver"
|
|
|
)
|
|
|
|
|
|
func makePurgeHandler(rd redriver.Redriver) gin.HandlerFunc {
|
|
|
- return nil
|
|
|
-}
|
|
|
+ return func(c *gin.Context) {
|
|
|
+ ctx := c.Request.Context()
|
|
|
+ qName := c.Param("name")
|
|
|
+ redirect := "/queue/" + qName
|
|
|
+
|
|
|
+ sess := sessions.Default(c)
|
|
|
+ // Do not consume sess.Flashes(): this is a redirect-only handler, and they would be lost.
|
|
|
+ defer func() {
|
|
|
+ _ = sess.Save()
|
|
|
+ c.Redirect(http.StatusSeeOther, redirect)
|
|
|
+ }()
|
|
|
+
|
|
|
+ t0 := time.Now()
|
|
|
+ err := rd.Purge(ctx, qName)
|
|
|
+ latency := time.Since(t0)
|
|
|
+ if err != nil {
|
|
|
+ log.Printf("failed purging queue %q: %v", qName, err)
|
|
|
+ sess.AddFlash(fmt.Sprintf("Failed purging queue %q", qName))
|
|
|
+ return
|
|
|
+ }
|
|
|
|
|
|
-func makePurgeConfirmHandler(rd redriver.Redriver) gin.HandlerFunc {
|
|
|
- return nil
|
|
|
+ sess.AddFlash(fmt.Sprintf("Purged submitted for queue %s in %v", qName,
|
|
|
+ latency))
|
|
|
+ sess.AddFlash("The actual purge process takes up to 60 seconds, " +
|
|
|
+ "so not be surprised if some messages are still visible on the queue messsages list." +
|
|
|
+ "We recommend waiting for 60 seconds to refresh, regardless of your queue's size.")
|
|
|
+ }
|
|
|
}
|