0

[WIP] Add cron-like job for periodic maintenance of settings db, update TODO.md

This commit is contained in:
eleksir
2025-11-02 12:22:37 +03:00
parent fbd0196a48
commit 61208f5247
13 changed files with 504 additions and 12 deletions

View File

@@ -5,6 +5,7 @@ import (
"os"
"github.com/NicoNex/echotron/v3"
"github.com/carlescere/scheduler"
"github.com/cockroachdb/pebble"
"github.com/go-redis/redis/v8"
)
@@ -45,6 +46,9 @@ var (
"Добро пожаловать в наше скромное коммунити",
"Наше вам с кисточкой тут, на канальчике",
}
// PeriodicJobs contains pointer to slice with sheduled job objects.
PeriodicJobs = make([]*scheduler.Job, 0)
)
/* vim: set ft=go noet ai ts=4 sw=4 sts=4: */

View File

@@ -0,0 +1,23 @@
package tg
import (
"aleesa-telegram-go/internal/log"
)
var (
// TidySettingsDB flushes regularly pebble dbs with settings. Remmended action to keeb that db in a good shape.
// Meant to be run about hourly or something like that.
TidySettingsDB = func() {
if len(settingsDB) > 0 {
for name, db := range settingsDB {
log.Debugf("Flushing %s settings db", name)
if err := db.Flush(); err != nil {
log.Errorf("Unable to Flush() %s db: %s", name, err)
}
}
}
}
)
/* vim: set ft=go noet ai ts=4 sw=4 sts=4: */

View File

@@ -42,18 +42,12 @@ func SigHandler() {
log.Debug("Close redis connection")
}
// close all telego stuff.
resp, err := tg.LogOut()
if err != nil {
log.Errorf("Unable to send LogOut() to Telegram Bot API server")
// Quit all scheduled periodic jobs.
for _, job := range PeriodicJobs {
job.Quit <- true
}
if !resp.Ok {
log.Errorf("Telegram Bot API returns an error on LogOut(): %d, %s", resp.ErrorCode, resp.Description)
}
resp, err = tg.Close()
resp, err := tg.Close()
if err != nil {
log.Errorf("Unable to send Close() to Telegram Bot API server")