cli: fix rad inbox clear output

If multiple ids are specified for `rad inbox clear`, it would report
that only 1 item was cleared, when in fact multiple were.

This was found to be due to the SQL code returning a change count of
`1`. This is likely due to the way the statement is being reset each
time. The `sqlite` library does not seem to easily support the usage
of `IN` in a `WHERE` clause. So instead, the `count` is aggregated in
the loop and returned instead.

Signed-off-by: Fintan Halpenny <fintan.halpenny@gmail.com>
X-Clacks-Overhead: GNU Terry Pratchett
This commit is contained in:
Fintan Halpenny 2024-04-09 10:49:52 +01:00 committed by cloudhead
parent 8bf871903a
commit 3556758386
No known key found for this signature in database
2 changed files with 6 additions and 2 deletions

View File

@ -85,7 +85,7 @@ $ rad inbox show 1
```
``` ~alice
$ rad inbox clear
$ rad inbox clear 1 2
✓ Cleared 2 item(s) from your inbox
$ rad inbox
Your inbox is empty.

View File

@ -196,12 +196,16 @@ impl Store<Write> {
.db
.prepare("DELETE FROM `repository-notifications` WHERE rowid = ?")?;
// N.b. we need to keep the count manually since the change count
// will always be `1` because of each reset.
let mut count = 0;
for id in ids {
stmt.bind((1, *id as i64))?;
stmt.next()?;
stmt.reset()?;
count += self.db.change_count();
}
Ok(self.db.change_count())
Ok(count)
})
}