From ace13b68a8cb438a759db68059ce33e58a3a3330 Mon Sep 17 00:00:00 2001 From: shoopea Date: Sun, 19 Oct 2025 13:55:52 +0200 Subject: [PATCH] implement app run --- api.go | 9 +++++---- app.go | 43 +++++++++++++++++++++++++++++++++++++------ version.go | 8 ++++---- 3 files changed, 46 insertions(+), 14 deletions(-) diff --git a/api.go b/api.go index 1c034a6..e93516e 100644 --- a/api.go +++ b/api.go @@ -25,11 +25,12 @@ func ApiRunApp(c *gin.Context) { "message": "done", }) } + } else { + c.JSON(http.StatusInternalServerError, gin.H{ + "message": "error", + "error": "no app found", + }) } - c.JSON(http.StatusInternalServerError, gin.H{ - "message": "error", - "error": "no app found", - }) } func ApiSave(c *gin.Context) { diff --git a/app.go b/app.go index 53cfd9b..f343fdc 100644 --- a/app.go +++ b/app.go @@ -2,8 +2,10 @@ package main import ( "errors" + "fmt" "regexp" "strings" + "sync" "time" log "github.com/sirupsen/logrus" @@ -546,14 +548,43 @@ func (a *App) RunFull() error { log.WithFields(log.Fields{"app": a.name}).Debugf("starting") defer log.WithFields(log.Fields{"app": a.name}).Debugf("done") + if cfgRun { + return fmt.Errorf("backup already running") + } + + cfgMx.Lock() + defer cfgMx.Unlock() + + cfgRun = true + defer func() { cfgRun = false }() + boxes := a.Boxes() - for _, box := range boxes { - if err := box.Open(); err != nil { - log.WithFields(log.Fields{"app": a.name, "call": "box.Open", "box": box.name, "error": err}).Errorf("") - return err - } - defer box.Close() + var wg sync.WaitGroup + + // Open boxes + for _, b := range boxes { + wg.Add(1) + go func(box *Box) { + defer wg.Done() + if err := box.Open(); err != nil { + log.WithFields(log.Fields{"name": box.name, "call": "Open", "error": err}).Errorf("") + return + } + }(b) + defer b.Close() } + + wg.Wait() + + if sched, err := a.Run(time.Now()); err != nil { + log.WithFields(log.Fields{"call": "Run", "error": err}).Errorf("") + return err + } else { + if sched == "" { + return fmt.Errorf("no backup needed") + } + } + return nil } diff --git a/version.go b/version.go index 7de8605..ae3e703 100644 --- a/version.go +++ b/version.go @@ -1,7 +1,7 @@ // Code generated by version.sh (@generated) DO NOT EDIT. package main -var githash = "2aca8b1" +var githash = "6ae863b" var branch = "master" -var buildstamp = "2025-10-19_11:33:05" -var commits = "112" -var version = "2aca8b1-b112 - 2025-10-19_11:33:05" +var buildstamp = "2025-10-19_11:55:34" +var commits = "113" +var version = "6ae863b-b113 - 2025-10-19_11:55:34"