fixed db prune

This commit is contained in:
BroodjeAap 2023-01-07 11:01:04 +00:00
parent cc586ec8bd
commit c4c2dac070
2 changed files with 8 additions and 6 deletions

12
main.go
View file

@ -240,12 +240,11 @@ func (web *Web) initNotifiers() {
func (web *Web) pruneDB() { func (web *Web) pruneDB() {
log.Println("Starting database pruning") log.Println("Starting database pruning")
var storeNames []string var storeFilters []Filter
web.db.Model(&FilterOutput{}).Distinct().Pluck("name", &storeNames) web.db.Model(&FilterOutput{}).Distinct("watch_id", "name").Find(&storeFilters)
for _, storeName := range storeNames { for _, storeFilter := range storeFilters {
log.Println("Pruning:", storeName)
var values []FilterOutput var values []FilterOutput
tx := web.db.Model(&FilterOutput{}).Order("time asc").Find(&values, fmt.Sprintf("name = '%s'", storeName)) tx := web.db.Model(&FilterOutput{}).Order("time asc").Find(&values, fmt.Sprintf("watch_id = %d AND name = '%s'", storeFilter.WatchID, storeFilter.Name))
if tx.Error != nil { if tx.Error != nil {
continue continue
} }
@ -262,7 +261,10 @@ func (web *Web) pruneDB() {
} }
} }
if len(IDs) > 0 { if len(IDs) > 0 {
log.Println("Pruned: ", storeFilter.WatchID, "-", storeFilter.Name, "removed", len(IDs), "values")
web.db.Delete(&FilterOutput{}, IDs) web.db.Delete(&FilterOutput{}, IDs)
} else {
log.Println("Nothing to prune for", storeFilter.WatchID, "-", storeFilter.Name)
} }
} }
} }

View file

@ -638,7 +638,7 @@ func storeFilterResult(filter *Filter, db *gorm.DB, debug bool) {
return return
} }
filterOutputs := make([]FilterOutput, 1) filterOutputs := make([]FilterOutput, 0, 1)
for _, parent := range filter.Parents { for _, parent := range filter.Parents {
for _, result := range parent.Results { for _, result := range parent.Results {
filterOutputs = append(filterOutputs, FilterOutput{ filterOutputs = append(filterOutputs, FilterOutput{