diff options
author | Dmitry Ilvokhin <d@ilvokhin.com> | 2025-03-08 18:00:27 +0000 |
---|---|---|
committer | Dmitry Ilvokhin <d@ilvokhin.com> | 2025-03-08 18:00:27 +0000 |
commit | 8f42d69c9b8c2c735089e86c7f21638271fac67e (patch) | |
tree | 51382fc43553f7822df2827de5a9c3de26608ecc /sent.go | |
parent | 98da712a92bf3320e4a1045405564e76f58fb514 (diff) | |
download | flatbot-8f42d69c9b8c2c735089e86c7f21638271fac67e.tar.gz flatbot-8f42d69c9b8c2c735089e86c7f21638271fac67e.tar.bz2 flatbot-8f42d69c9b8c2c735089e86c7f21638271fac67e.zip |
Generilize `removeAlreadySent` and `removeDelisted`
Diffstat (limited to 'sent.go')
-rw-r--r-- | sent.go | 39 |
1 files changed, 17 insertions, 22 deletions
@@ -28,34 +28,29 @@ func readSent(filename string) ([]flat, error) { return sent, nil } -func removeAlreadySent(fetched []flat, sent []flat) []flat { - if !slices.IsSortedFunc(sent, compareID) { - panic("Sent expected to be sorted") - } - recent := make([]flat, 0) - for _, f := range fetched { - _, found := slices.BinarySearchFunc(sent, f, compareID) - if found { +func removeFlats(whenFound bool, from, superset []flat) []flat { + if !slices.IsSortedFunc(superset, compareID) { + slices.SortFunc(superset, compareID) + } + out := make([]flat, 0) + for _, f := range from { + _, found := slices.BinarySearchFunc(superset, f, compareID) + if found == whenFound { continue } - recent = append(recent, f) + out = append(out, f) } - return recent + return out +} + +func removeAlreadySent(fetched []flat, sent []flat) []flat { + whenFound := true + return removeFlats(whenFound, fetched, sent) } func removeDelisted(sent []flat, allFlats []flat) []flat { - if !slices.IsSortedFunc(allFlats, compareID) { - panic("allFlats expected to be sorted") - } - recent := make([]flat, 0) - for _, f := range sent { - _, found := slices.BinarySearchFunc(allFlats, f, compareID) - if !found { - continue - } - recent = append(recent, f) - } - return recent + whenFound := true + return removeFlats(!whenFound, sent, allFlats) } func writeSent(sent []flat, filename string) error { |