mirror of
https://github.com/ankitects/anki.git
synced 2025-09-19 14:32:22 -04:00
delete unused tags on card delete, do it efficiently
This commit is contained in:
parent
d15dd71b68
commit
19bc9768f1
1 changed files with 15 additions and 0 deletions
15
anki/deck.py
15
anki/deck.py
|
@ -1122,6 +1122,21 @@ where facts.id not in (select distinct factId from cards)""")
|
|||
# note deleted
|
||||
data = [{'id': id, 'time': now} for id in ids]
|
||||
self.s.statements("insert into cardsDeleted values (:id, :time)", data)
|
||||
# gather affected tags
|
||||
tags = self.s.column0(
|
||||
"select tagId from cardTags where cardId in %s" %
|
||||
strids)
|
||||
# delete
|
||||
self.s.statement("delete from cardTags where cardId in %s" % strids)
|
||||
# find out if they're used by anything else
|
||||
unused = []
|
||||
for tag in tags:
|
||||
if not self.s.scalar(
|
||||
"select 1 from cardTags where tagId = :d limit 1", d=tag):
|
||||
unused.append(tag)
|
||||
# delete unused
|
||||
self.s.statement("delete from tags where id in %s and priority = 2" %
|
||||
ids2str(unused))
|
||||
# remove any dangling facts
|
||||
self.deleteDanglingFacts()
|
||||
self.rebuildCounts()
|
||||
|
|
Loading…
Reference in a new issue