use txDao in deleteOldRecords for deletion only

This commit is contained in:
Henry Dollman
2024-08-06 15:09:46 -04:00
parent f13f0b2f8a
commit b8a2d0f32f
2 changed files with 17 additions and 15 deletions

View File

@@ -22,7 +22,6 @@ import (
"github.com/pocketbase/pocketbase"
"github.com/pocketbase/pocketbase/apis"
"github.com/pocketbase/pocketbase/core"
"github.com/pocketbase/pocketbase/daos"
"github.com/pocketbase/pocketbase/models"
"github.com/pocketbase/pocketbase/plugins/migratecmd"
"github.com/pocketbase/pocketbase/tools/cron"
@@ -105,15 +104,12 @@ func main() {
// cron job to delete old records
scheduler := cron.New()
scheduler.MustAdd("delete old records", "8 * * * *", func() {
app.Dao().RunInTransaction(func(txDao *daos.Dao) error {
collections := []string{"system_stats", "container_stats"}
deleteOldRecords(txDao, collections, "1m", time.Hour)
deleteOldRecords(txDao, collections, "10m", 12*time.Hour)
deleteOldRecords(txDao, collections, "20m", 24*time.Hour)
deleteOldRecords(txDao, collections, "120m", 7*24*time.Hour)
deleteOldRecords(txDao, collections, "480m", 30*24*time.Hour)
return nil
})
collections := []string{"system_stats", "container_stats"}
deleteOldRecords(collections, "1m", time.Hour)
deleteOldRecords(collections, "10m", 12*time.Hour)
deleteOldRecords(collections, "20m", 24*time.Hour)
deleteOldRecords(collections, "120m", 7*24*time.Hour)
deleteOldRecords(collections, "480m", 30*24*time.Hour)
})
scheduler.Start()
return nil

View File

@@ -141,7 +141,7 @@ func twoDecimals(value float64) float64 {
}
/* Delete records of specified collections and type that are older than timeLimit */
func deleteOldRecords(txDao *daos.Dao, collections []string, recordType string, timeLimit time.Duration) {
func deleteOldRecords(collections []string, recordType string, timeLimit time.Duration) {
timeLimitStamp := time.Now().UTC().Add(-timeLimit).Format("2006-01-02 15:04:05")
// db query
@@ -150,12 +150,18 @@ func deleteOldRecords(txDao *daos.Dao, collections []string, recordType string,
var records []*models.Record
for _, collection := range collections {
if collectionRecords, err := txDao.FindRecordsByExpr(collection, expType, expCreated); err == nil {
if collectionRecords, err := app.Dao().FindRecordsByExpr(collection, expType, expCreated); err == nil {
records = append(records, collectionRecords...)
}
}
for _, record := range records {
txDao.DeleteRecord(record)
}
app.Dao().RunInTransaction(func(txDao *daos.Dao) error {
for _, record := range records {
err := txDao.DeleteRecord(record)
if err != nil {
return err
}
}
return nil
})
}