diff --git a/main.go b/main.go index 91aae6b..4e90113 100644 --- a/main.go +++ b/main.go @@ -240,12 +240,11 @@ func (web *Web) initNotifiers() { func (web *Web) pruneDB() { log.Println("Starting database pruning") - var storeNames []string - web.db.Model(&FilterOutput{}).Distinct().Pluck("name", &storeNames) - for _, storeName := range storeNames { - log.Println("Pruning:", storeName) + var storeFilters []Filter + web.db.Model(&FilterOutput{}).Distinct("watch_id", "name").Find(&storeFilters) + for _, storeFilter := range storeFilters { 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 { continue } @@ -262,7 +261,10 @@ func (web *Web) pruneDB() { } } if len(IDs) > 0 { + log.Println("Pruned: ", storeFilter.WatchID, "-", storeFilter.Name, "removed", len(IDs), "values") web.db.Delete(&FilterOutput{}, IDs) + } else { + log.Println("Nothing to prune for", storeFilter.WatchID, "-", storeFilter.Name) } } } diff --git a/scraping.go b/scraping.go index 0134840..0796ea7 100644 --- a/scraping.go +++ b/scraping.go @@ -638,7 +638,7 @@ func storeFilterResult(filter *Filter, db *gorm.DB, debug bool) { return } - filterOutputs := make([]FilterOutput, 1) + filterOutputs := make([]FilterOutput, 0, 1) for _, parent := range filter.Parents { for _, result := range parent.Results { filterOutputs = append(filterOutputs, FilterOutput{