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:
parent
8bf871903a
commit
3556758386
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue