mirror of
https://github.com/anotherhadi/spilltea.git
synced 2026-05-21 18:12:33 +02:00
Delete all except flagged entries
Signed-off-by: Hadi <112569860+anotherhadi@users.noreply.github.com>
This commit is contained in:
@@ -144,3 +144,18 @@ func (d *DB) DeleteAllEntries() error {
|
||||
_, err := d.conn.Exec(`DELETE FROM entries`)
|
||||
return err
|
||||
}
|
||||
|
||||
// DeleteAllExceptFlagged deletes all unflagged entries. If there are no
|
||||
// unflagged entries (only flagged ones remain), it deletes everything.
|
||||
func (d *DB) DeleteAllExceptFlagged() error {
|
||||
var count int
|
||||
if err := d.conn.QueryRow(`SELECT COUNT(*) FROM entries WHERE flagged = 0`).Scan(&count); err != nil {
|
||||
return err
|
||||
}
|
||||
if count > 0 {
|
||||
_, err := d.conn.Exec(`DELETE FROM entries WHERE flagged = 0`)
|
||||
return err
|
||||
}
|
||||
_, err := d.conn.Exec(`DELETE FROM entries`)
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -249,11 +249,21 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||
case key.Matches(msg, h.DeleteAll):
|
||||
if m.database != nil {
|
||||
if m.searchKind != searchKindOff {
|
||||
hasUnflagged := false
|
||||
for _, e := range m.entries {
|
||||
if !e.Flagged {
|
||||
hasUnflagged = true
|
||||
break
|
||||
}
|
||||
}
|
||||
for _, e := range m.entries {
|
||||
if hasUnflagged && e.Flagged {
|
||||
continue
|
||||
}
|
||||
m.database.DeleteEntry(e.ID)
|
||||
}
|
||||
} else {
|
||||
m.database.DeleteAllEntries()
|
||||
m.database.DeleteAllExceptFlagged()
|
||||
}
|
||||
}
|
||||
return m, m.clearSearch()
|
||||
|
||||
Reference in New Issue
Block a user