diff --git a/internal/database/migrations.go b/internal/database/migrations.go index cfc1159ddf3..3fff7854e4a 100644 --- a/internal/database/migrations.go +++ b/internal/database/migrations.go @@ -876,4 +876,9 @@ var migrations = []func(tx *sql.Tx) error{ _, err = tx.Exec(sql) return err }, + func(tx *sql.Tx) (err error) { + sql := `UPDATE entries SET tags = array_remove(tags, '') WHERE '' = ANY(tags);` + _, err = tx.Exec(sql) + return err + }, } diff --git a/internal/storage/entry.go b/internal/storage/entry.go index c90370943da..6accd790dc9 100644 --- a/internal/storage/entry.go +++ b/internal/storage/entry.go @@ -139,7 +139,7 @@ func (s *Storage) createEntry(tx *sql.Tx, entry *model.Entry) error { entry.UserID, entry.FeedID, entry.ReadingTime, - pq.Array(removeDuplicates(entry.Tags)), + pq.Array(removeEmpty(removeDuplicates(entry.Tags))), ).Scan( &entry.ID, &entry.Status, @@ -195,7 +195,7 @@ func (s *Storage) updateEntry(tx *sql.Tx, entry *model.Entry) error { entry.UserID, entry.FeedID, entry.Hash, - pq.Array(removeDuplicates(entry.Tags)), + pq.Array(removeEmpty(removeDuplicates(entry.Tags))), ).Scan(&entry.ID) if err != nil { @@ -620,3 +620,13 @@ func removeDuplicates(l []string) []string { slices.Sort(l) return slices.Compact(l) } + +func removeEmpty(l []string) []string { + finalSlice := []string{} + for _, item := range l { + if item != "" { + finalSlice = append(finalSlice, item) + } + } + return finalSlice +}