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
|
# note deleted
|
||||||
data = [{'id': id, 'time': now} for id in ids]
|
data = [{'id': id, 'time': now} for id in ids]
|
||||||
self.s.statements("insert into cardsDeleted values (:id, :time)", data)
|
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
|
# remove any dangling facts
|
||||||
self.deleteDanglingFacts()
|
self.deleteDanglingFacts()
|
||||||
self.rebuildCounts()
|
self.rebuildCounts()
|
||||||
|
|
Loading…
Reference in a new issue