we can remove graves when uploading and save space

This commit is contained in:
Damien Elmes 2013-10-11 12:21:59 +09:00
parent 8d7edcb2bb
commit e9ab9128c8

View File

@ -2,7 +2,13 @@
# Copyright: Damien Elmes <anki@ichi2.net> # Copyright: Damien Elmes <anki@ichi2.net>
# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html # License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
import time, os, random, stat, datetime, copy import time
import os
import random
import stat
import datetime
import copy
from anki.lang import _, ngettext from anki.lang import _, ngettext
from anki.utils import ids2str, fieldChecksum, stripHTML, \ from anki.utils import ids2str, fieldChecksum, stripHTML, \
intTime, splitFields, joinFields, maxID, json intTime, splitFields, joinFields, maxID, json
@ -15,9 +21,12 @@ from anki.tags import TagManager
from anki.consts import * from anki.consts import *
from anki.errors import AnkiError from anki.errors import AnkiError
from anki.sound import stripSounds from anki.sound import stripSounds
import anki.latex # sets up hook import anki.latex # sets up hook
import anki.cards, anki.notes, anki.template, anki.find import anki.cards
import anki.notes
import anki.template
import anki.find
defaultConf = { defaultConf = {
# review options # review options
@ -176,15 +185,20 @@ crt=?, mod=?, scm=?, dty=?, usn=?, ls=?, conf=?""",
def beforeUpload(self): def beforeUpload(self):
"Called before a full upload." "Called before a full upload."
tbls = "notes", "cards", "revlog", "graves" tbls = "notes", "cards", "revlog"
for t in tbls: for t in tbls:
self.db.execute("update %s set usn=0 where usn=-1" % t) self.db.execute("update %s set usn=0 where usn=-1" % t)
# we can save space by removing the log of deletions
self.db.execute("delete from graves")
self._usn += 1 self._usn += 1
self.models.beforeUpload() self.models.beforeUpload()
self.tags.beforeUpload() self.tags.beforeUpload()
self.decks.beforeUpload() self.decks.beforeUpload()
self.modSchema() self.modSchema()
self.ls = self.scm self.ls = self.scm
# ensure db is compacted before upload
self.db.execute("vacuum")
self.db.execute("analyze")
self.close() self.close()
# Object creation helpers # Object creation helpers